DTD - Elementos



Los elementos XML se pueden definir como bloques construidos de un documento XML. Los elementos pueden actuar como contenedores de texto, elementos, atributos, objetos de comunicación, o una mezla de todos.

Un elemento DTD se declara con una declaración de ELEMENTO. Cuando un archivo XML es valorado por una DTD, el analizador inicialmente examina el elemento raíz y luego los elementos secundarios.

Sintaxis

Todas las declaraciones de elementos DTD siguen esta estructura por lo general:

<!ELEMENT elementname (content)>
  • ELEMENT Se usa una declaración como indicación para el analizador que va a definir un elemento.

  • elementname es el nombre del elemento (también llamado identificador genérico) que se está definiendo.

  • content define qué contenido, si hubiera alguno, puede ir en el elemento.

Tipos de contenidos de elemento

El contenido de la declaración de elementos en DTD se categoriza en:

  • Contenido vacío

  • Contenido de elemento

  • Contenido mixto

  • Cualquier contenido

Contenido vacío

Es un caso especial de declaración de elemento. Este tipo de declaración de elemento no contiene ningún contenido. Estas se declaran con la palabra claveEMPTY.

Sintaxis

A continuación la sintaxis para una declaración de elemento vacío:

<!ELEMENT elementname EMPTY >

En la siguiente sintaxis:

  • ELEMENT es la declaración de elemento de la categoríaEMPTY

  • elementname es el nombre del elemento vacío.

Ejemplo

A continuación encontrará un ejemplo que muestra una declaración de elemento vacío:

<?xml version="1.0"?>
<!DOCTYPE hr[
   <!ELEMENT address EMPTY>    
]>
<address />

En este ejemplo address se declara como elemento vacío. La revisión para el elemento address aparecería como <address />.

Contenido de elemento

En las declaraciones de elemento con contenido de elemento, el contenido sería los elementos permitidos entre paréntesis. También podemos incluir más de un elemento.

Sintaxis

A continuación verá la sintaxis de una declaración de elemento con contenido de elemento:

<!ELEMENT elementname (child1, child2...)>
  • ELEMENT es la etiqueta de declaración de elemento

  • elementname es el nombre del elemento.

  • child1, child2.. son los elementos, y cada uno de ellos debe tener su propia definición en la DTD.

Ejemplo

El siguiente ejemplo muestra un simple ejemplo de uan declaración de elemento con contenido de elemento:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>
<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

En el ejemplo, address es el elemento principal y name, company y phone_no son sus elementos secundarios.

Lista de operadores y normas de sintaxis

La siguiente tabla muestra la lista de operadores y las normas sintácticas que se pueden aplicar para definir elementos secundarios:

Operador Sintaxis Descripción Example
+ <!ELEMENTO nombre del elemento (elemento secundario1+)> Indica que el elemento secundario se puede dar una o más veces dentro del elemento principal. <!ELEMENTO dirección (nombre+)>

El nombre del elemento secundario se puede dar una o más veces dentro de el nombre de elemento dirección.

* <!ELEMENTO nombre del elemento (elemento secundario1*)> Indica que el elemento secundario se puede dar cero o más veces dentro del elemento principal. <!ELEMENTO dirección (nombre*)>

El nombre del elemento secndario se puede dar cero o más veces dentro del nombre del elemento dirección.

? <!ELEMENTO nombre del elemento (elemento secundario1?)> Indica que el elemento secundario se puede dar cero veces o una vez dentro del elemento principal. <!ELEMENTO dirección (nombre?)>

El nombre del elemento secundario se puede dar cero o una vez dentro del nombre del elemento dirección.

, <!ELEMENTO nombre del elemento (elemento secundario1, elemento secundario2)> Da una secuencia de los elementos secundarios separados por comas, los cuales deben ser incluidos en el nombre del elemento. <!ELEMENTO dirección (nombre, compañía)>

La secuencia de elementos secundarios nombre, compañía, que puede darse en el mismo orden dentro del nombre del elemento dirección.

| <!ELEMENTO nombre del elemento (elemento secundario1 | elemento secundario2)> Permite hacer elecciones en el elemento secundario. <!ELEMENTO dirección (nombre | compañía)>

Le permite escoger entre los elementos secundarios nombre o compañía, que pueden darse dentro del nombre del elemento dirección.

Normas

Necesitamos seguir ciertas reglas si hay más de un contenido de elemento:

  • Secuencias - A menudo los elementos de los doumentos DTD deben aparcer en orden distintivo. Si este es el caso, defina el contenido utilizano una secuencia. Por ejemplo:

    <!ELEMENT address (name,company,phone)>
    

    La declaración indica que el elemento <address> debe tener ni más ni menos que 3 elementos secundarios - <name>, <company>, y <phone> - y deben aparecer en este orden concreto.

  • Elecciones: Suponga que usted necesita permitir un elemento u otro, pero no ambos. En este tipo de casos debe usar el caracter de barra vertical (|). Por ejemplo:

    <!ELEMENT address (mobile | landline)>
    

Contenido de elemento mixto

Esta es la combinación de (#PCDATA) y de sus elementos secundarios. PCDATA representa datos de caracter analizados, como por ejemplo texto que no esta revisado. En los modelos de contenido mixto, el texto puede aparecer por sí mismo o se puede distribuir alrededor de elementos. Las normas para los modelos de contenido mixto son similares al contenido de elemento, tal y como se ha mencionado el la sección anterior.

Sintaxis

A continuación le mostramos una sintaxis genérica para contenido de elemnto mixto:

<!ELEMENT elementname (#PCDATA|child1|child2)*>
  • ELEMENT es la etiqueta de declaración de elemento.

  • elementname es el nombre del elemento.

  • PCDATA es el texto no revisado. #PCDATA debe ir al inicio en la declaración de contenido mixto.

  • child1, child2.. son los elementos y cada uno de ellos debe tener su propia definición en la DTD.

  • El operador (*) debe seguir el contenido de declaración mixta si los elementos secundarios se incluyen

  • El (#PCDATA) y sus declaraciones de elementos secundarios deben ser separados por(|).

Ejemplo

A continuación le mostramos un ejemplo que demuestra la declaración de elemento con contenido mixto en una DTD.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (#PCDATA|name)*>
   <!ELEMENT name (#PCDATA)>
]>
<address>
   Here's a bit of text mixed up with the child element.
   <name>Tanmay Patil</name>
</address>

El elemento ANY contiene

Usted puede declarar un elemento en el contenido usando la palabra clave ANY. Mayormente se refiere a un elemento de categoría mixta. ANY resulta útil cuando aun se tienen que decidir los contenidos que se permitirán en el elemento.

Sintaxis

A continuación se muestra la sintaxis para declarar elementos con contenido ANY:

<!ELEMENT elementname ANY>

Aquí, la palabra clave 'ANY' indica que el texto (PCDATA) y/o cualquier elemento declarado en la DTD puede usarse en el contenido del <elementname> elemento. Se pueden usar en cualquier orden, las veces que se quiera. Sin embargo, la palabra clave 'ANY' no permite incluir elementos que no están declarados en la DTD.

Ejemplo

El siguiente ejemplo muestra la declaración del elemento con contenido 'ANY':

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
   <!ELEMENT address ANY>
]>
<address>
  Here's a bit of sample text
</address>
Advertisements