ISSN:  1139-8736
Depósito Legal: B-39199-99

1.3.1.2. UNIDADES ESTRUCTURALES: LOS ELEMENTOS

El término técnico usado en la estandarización SGML para la unidad textual, visto como componente estructural es elemento. Esta unidad textual o elemento se marca con un membrete de abertura en su comienzo y un membrete de cierre en su final. Este membrete describe la característica distintiva del elemento. A los creadores de series de membretes conformadas según SGML corresponde seleccionar nombres inteligibles para los elementos que identifican y documentar su correcto uso en la marcación de textos.

De la necesidad de dar a los elementos nombres indicativos de función surge el término técnico de identificador genérico ("Generic identifier" GI). El identificador genérico identifica, por tanto, el "tipo" de elemento ("párrafo", "lista", "poema", ...). Además pueden existir otras caracterizaciones de estos elementos llamadas atributos que los definen más específicamente.

Un atributo se usa entonces para describir información que, en algún sentido, describe ocurrencias de un elemento específico pero que en sí misma no es considerada como un elemento.

Declaración de elementos

Modelos de contenido

La declaración de cada elemento debe especificar dos parámetros de declaración de elementos: el identificador genérico (GI) y el modelo de contenido de su contenido.

El parámetro de modelo define qué subelementos o cadenas de caracteres pueden aparecer en el contenido.

Por ejemplo, la declaración para un libro de texto puede ser la siguiente:

<!ELEMENT libro de texto (encabezamiento, cuerpo, final)>

Un modelo de contenido es un tipo de grupo que está constituido por una serie de elementos relacionados llamado ejemplares ("tokens"). Un grupo debe aparecer entre paréntesis que son los delimitadores "abertura de grupo" (grpo) y "cierre de grupo" (grpc). Estos paréntesis son necesarios incluso cuando el modelo de grupo incluya un solo "token".

Los ejemplares en un modelo de grupo son también identificadores genéricos GIs.

Como modelo de contenido se pueden definir también palabras especiales. Existen varias palabras de este tipo, una de ellas es #PCDATA que es la que aparece con mayor frecuencia. Es una abreviatura de "datos de carácter analizados" y significa que el elemento que está siendo definido puede contener cualquier dato de carácter válido.

Una característica específica de #PCDATA es que permite que en su interior haya elementos que puedan ser procesados que no necesariamente tienen que aparecer declarados en la DTD en la que aparecen.

Un ejemplo de uso de #PCDATA lo constituye la definición del elemento f.struct en la DTD lingüística:1

<! ELEMENT f.struct

(#PCDATA
| (f.struct. name, feature*)
| feature+)

En este caso f.struct presenta una estructura de #PCDATA que contiene en su interior elementos que deberán ser procesado como tales.

Es posible también introducir caraceres directamente sin que sean procesados como elementos SGML, para dar cuenta de esto se utiliza la palabra especial #CDATA ("character data").

Un ejemplo de uso de #CDATA podría ser la siguiente definición del elemento "fórmula"

<! ELEMENT fórmula CDATA>

Una variante de #CDATA es #RCDATA ("replaceable character data") que es exactamente igual que la anterior con la única diferencia de que se permite la introducción de texto que contenga referencia a entidades o referencia a caracteres.

El uso de palabras especiales o palabras clave incluye también la posibilidad de definir modelos vacíos. Elementos para los cuales el usuario nunca especifique el contenido. Por ejemplo en la DTD lingüística de la TE1 la representación de los valores simples más vs. menos como elemento SGML es un ejemplo de elemento con modelo vacío:

<! ELEMENT (más, menos) – o EMPTY >

Las entidades que define el par atributo-valor (propio: plus vs. minus) contienen un elemento (plus, minus) vacío de contenido.

<! ENTITY E-4 "<feature name=propio><más></feature>">
<! ENTITY E-5"<feature name=propio><menos></feature>">

Finalmente, como modelo de un contenido se pueden definir también entidades de parámetro2. En estos casos la declaración de entidad debe preceder a la referencia a la entidad.

Por ejemplo, en la DTD lingüística se definen al principio tres entidades de parámetro % f.boolean, %f. value simple y %f.value que se utilizará más tarde en la definición de elementos.

Indicadores de ocurrencia

Los indicadores de ocurrencia indican cuántas veces puede aparecer cada GIs en el texto.

Existen tres indicadores de ocurrencia en la sintaxis de SGML, convencionalmente representados por el signo más (+), el signo de interrogación (¿) y el asterisco o estrella (*).

El signo más significa que puede haber más de una ocurrencia del elemento en cuestión; el signo de interrogación significa que puede haber como mucho una y posiblemente ninguna ocurrencia; la estrella significa que el elemento en cuestión puede o bien estar ausento o aparecer una o más veces.

Conectores de grupo

Los conectores de grupo indican el orden de los GIs.

Hay tres conectores de grupo representados convencionalmente mediante la coma (,), la barra vertical (|) y el ampersan o et (&). La coma significa que los componentes en conexión deben aparecer en el orden especificado por el modelo de contenido. El et indica que los componentes especificados deben aparecer pero pueden hacerlo en cualquier orden, la barra vertical indica que sólo uno de los elementos en conexión puede aparecer.

Excepciones al modelo de contenido

Los modelos de contenido pueden modificarse mediante la inclusión de una lista de excepciones:

<! -- ELEMENTS     CONTENTS      (EXCEPTIONS)? -à

Existen dos tipos de excepciones en SGML:

1. Inclusiones. Se trata de incluir elementos que pueden aparecer en cualquier punto de la DTD que se está definiendo (por ejemplo en el elemento al que se adjunta o en cualquier otro incluido en él). Las inclusiones se declaran entre paréntesis precedido de un signo más (+).
Por ejemplo, en un poema podemos permitir la introducción de anotaciones y variantes ("note|varian") de lecturas en cualquier parte del texto. Para ello es necesario declarar los siguientes dos elementos:

<! ELEMENT (nota|variante) --- (#PCDATA)>

que se une al elemento poema en la forma de una lista de inclusión:

<! ELEMENT POEM – o (TÍTULO?, (ESTROFA + |PAREADO+|VERSO+))+(NOTA|VARIANTE)>

Así agregadas, notas y variantes pueden aparecer en cualquier punto del contenido del elemento poema incluso en aquellos (por ejemplo, TÍTULO) para las que definiéramos un modelo de contenido #PCDATA.

2. Exclusiones. Se trata de identificar elemtnos que no pueden usarse mientras que elemento que está siendo definido permanezca abierto. Las exclusiones se declaran entre paréntesis precedido de un signo menos (-).

Si en la defnición del elemento poema que hemos hecho más arriba quisiéramos evitar que notas o variantes parecieran dentro de títulos, podríamos agregar una excepción de exclusión a la declaración de TÍTULO que hemos dato:

<! ELEMENT TÍTULO -o (#PCDATA) -(NOTA|VARIANTE)>

Simplificación de reglas

Entre las GIs y la descripción del modelo de contenido podemos tener lo que se llama la minimización de reglas aplicadas al elemento en cuestión. Estas reglas determinan si los membretes de comienzo y final deben estar o no presentes en cada ocurrencia del elemento. Toman la forma de un par de caracteres separados por un espacio en blanco, el primero de ellos está relacionado con el membrete inicial; el segundo con el final. En cualquier caso, el guión o la letra "o" (para "opcional") han de ser dadas; el guión indica que el membrete debe estar presente y la letra "o" que puede omitirse. Ele elemento estrofa o el elemento verso en un poema, por ejemplo, puede no tener elemento final pues el comienzo o de una nueva estrofa o de un nuevo verso significa el final de la o el anterior.

Declaración de atributos

Decíamos más arriba que un membrete incluía normalmente un identificador genérico (GI) y que podía incluir también atributos que lo caracterizasen.

Un atributo es una caracterización de un elemento que se expresa como un par atributo-valor y se añade al membrete inicial del elemento al que se refiere. Los atributos se pueden usar, entre otras cosas, para:

En una especificación de atributohay dos partes: "nombre del atributo" y "valor del atributo" unidos por un "indicador de valor".

Los valores del atributo pueden ser valores de atributo literales. Un literal es una cadena de caracteres reconocida como unidad por el sistema desde el momento en que se incluye entre delimitadores literales. En SGML existen dos tipos de delimitadores literales lit (""iteral"" y lita ("alternative form of literal"". El primero se representa entre comillas (") y el segundo mediante apóstrofo (").

Igual que los elementos, los atributos se declaran en la declaración de tipo de documento en SGML, usando una sintaxis bastante similar. Así como se especifican sus nombres y ele elemento al que se vinculan, es posible especificar (dentro de ciertos límites) el tipo de valor aceptable para un atributo y su valor omitido.

La declaración comienza con el símbolo <!ESPLISTA, que introduce una especificación de la lista de valores de un atributo. Su primera parte especifica el elemento (o elemento) al que caracterizan los atributos. Si varios elementos comparten los mismos atributos, todos ellos podrían definirse en una sola declaración. Después del nombre, hay una serie de enumeraciones, una para cada atributo que ha sido declarado, divididas a su vez en tres partes. Esas listas incluyen el nombre del atributo, el tipo de valor que puede tomar y el valor omitido, respectivamente.

<!ESPLISTA       POEMA
id            ID          #IMPLIED
estatus (anteproyecto|revisado|publicado) anteproyecto>

La segunda parte de una especificación de atributos puede tomar una entre dos formas, ambas ejemplificadas.

En el primer caso usa una de las palabras clave para declarar el tipo de valor que un atributo pude tomar. En el ejemplo de arriba, la palabra clave ID indica que el atributo ID se usará para proporcionar un valor único identificable a cada instancia del poema:

Entre otras, podemos tener las siguientes palabras clave:

En el segundo caso, el correspondiente al atributo status, se ha proporcionado una lista de valores posibles para el atributo status. Esto significa que una analizador puede comprobar que ningún POEMA se define si el atributo status no tiene un "anteproyecto", "revisado" o "publicado" como uno de sus valores.

La última pieza de cada información en cada definición de atributo especifica el modo en que un analizador deberá interpretar la ausencia del atributo en cuestión. Esto puede hacerse proporcionando una de las palabras clave de la lista que viene a continuación:

O como en el caso de estatus proporcionando un valor que será luego tomado como valor por defecto en cualquier otra aparición del elemento (en nuestro caso, poema).


NOTAS

1    Cf. 2.0. o TEI P1 (capítulo seis).

2   Cf. 1.3.1.3.

Anterior  I  Siguiente  I  Índice capítulo 1  I  Índice General


ISSN:  1139-8736
Depósito Legal: B-39199-99