DTD - Elementos

Los elementos XML se pueden definir como bloques de construcción de un documento XML. Los elementos pueden comportarse como un contenedor para contener texto, elementos, atributos, objetos multimedia o una combinación de todos.

Un elemento DTD se declara con una declaración ELEMENT. Cuando un archivo XML es validado por DTD, el analizador inicialmente busca el elemento raíz y luego se validan los elementos secundarios.

Sintaxis

Todas las declaraciones de elementos DTD tienen esta forma general:

<!ELEMENT elementname (content)>
  • La declaración ELEMENT se utiliza para indicarle al analizador que está a punto de definir un elemento.

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

  • content define qué contenido (si lo hay) puede ir dentro del elemento.

Tipos de contenido de elementos

El contenido de la declaración de elementos en un DTD se puede clasificar de la siguiente manera:

  • Contenido vacío

  • Contenido del elemento

  • Contenido mixto

  • Cualquier contenido

Contenido vacío

Este es un caso especial de declaración de elementos. Esta declaración de elemento no tiene ningún contenido. Estos se declaran con la palabra claveEMPTY.

Syntax

A continuación se muestra la sintaxis para la declaración de elementos vacíos:

<!ELEMENT elementname EMPTY >

En la sintaxis anterior:

  • ELEMENTes la declaración de elemento de la categoría VACÍO

  • elementname es el nombre del elemento vacío.

Example

A continuación se muestra un ejemplo simple que demuestra la declaración de un elemento vacío:

<?xml version = "1.0"?>

<!DOCTYPE hr[
   <!ELEMENT address EMPTY>    
]>
<address />

En este ejemplo, la dirección se declara como un elemento vacío. El marcado para el elemento de dirección aparecería como <dirección />.

Contenido del elemento

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

Syntax

A continuación se muestra una sintaxis de declaración de elemento con contenido de elemento:

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

  • elementname es el nombre del elemento.

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

Example

El siguiente ejemplo muestra un ejemplo simple de 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 anterior, address es el elemento principal y name , company y phone_no son sus elementos secundarios.

Lista de operadores y reglas de sintaxis

La siguiente tabla muestra la lista de operadores y reglas de sintaxis que se pueden aplicar para definir elementos secundarios:

Operador Sintaxis Descripción Ejemplo
+ <! ELEMENTO nombre-elemento (hijo1 +)> Indica que el elemento hijo puede aparecer una o más veces dentro del elemento padre.

<! ELEMENTO dirección (nombre +)>

El nombre del elemento hijo puede aparecer una o más veces dentro de la dirección del nombre del elemento .

* <! ELEMENTO nombre-elemento (hijo1 *)> Indica que el elemento hijo puede aparecer cero o más veces dentro del elemento padre.

<! ELEMENTO dirección (nombre *)>

El nombre del elemento hijo puede aparecer cero o más veces dentro de la dirección del nombre del elemento .

? <! ELEMENTO nombre-elemento (hijo1?)> Indica que el elemento hijo puede aparecer cero o una vez dentro del elemento padre.

<! ELEMENTO dirección (nombre?)>

El nombre del elemento hijo puede aparecer cero o una vez dentro de la dirección del nombre del elemento .

, <! ELEMENTO nombre-elemento (hijo1, hijo2)> Da una secuencia de elementos secundarios separados por comas que deben incluirse en el nombre del elemento.

<! ELEMENTO dirección (nombre, empresa)>

Secuencia del nombre de los elementos secundarios , empresa , que debe aparecer en el mismo orden dentro de la dirección del nombre del elemento .

| <! ELEMENTO nombre-elemento (hijo1 | hijo2)> Permite hacer elecciones en el elemento hijo.

<! ELEMENTO dirección (nombre | empresa)>

Le permite elegir cualquiera de los elementos secundarios, es decir, el nombre o la empresa , que debe aparecer dentro de la dirección del nombre del elemento .

Reglas

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

  • Sequences - A menudo, los elementos de los documentos DTD deben aparecer en un orden distinto. Si este es el caso, defina el contenido usando una secuencia.

    La declaración indica que el elemento <address> debe tener exactamente tres hijos (<nombre>, <company> y <phone>) y que deben aparecer en este orden. Por ejemplo

<!ELEMENT address (name,company,phone)>
  • Choices- Suponga que necesita permitir un elemento u otro, pero no ambos. En tales casos, debe utilizar el carácter de barra vertical (|). La tubería funciona como un quirófano exclusivo. Por ejemplo

<!ELEMENT address (mobile | landline)>

Contenido de elemento mixto

Esta es la combinación de (#PCDATA) y elementos secundarios. PCDATA significa datos de caracteres analizados, es decir, texto que no es marcado. Dentro de los modelos de contenido mixto, el texto puede aparecer solo o puede estar intercalado entre elementos. Las reglas para los modelos de contenido mixto son similares al contenido del elemento, como se discutió en la sección anterior.

Syntax

A continuación se muestra una sintaxis genérica para el contenido de elementos mixtos:

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

  • elementname es el nombre del elemento.

  • PCDATAes el texto que no está marcado. #PCDATA debe aparecer primero en la declaración de contenido mixto.

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

  • El operador (*) debe seguir la declaración de contenido mixto si se incluyen elementos secundarios

  • Las declaraciones de elementos (#PCDATA) y secundarios deben estar separadas por el operador (|).

Example

A continuación se muestra un ejemplo sencillo que demuestra la declaración de elementos de 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>

CUALQUIER contenido de elemento

Puede declarar un elemento utilizando la palabra clave ANY en el contenido. A menudo se lo denomina elemento de categoría mixta. ANY es útil cuando aún tiene que decidir los contenidos permitidos del elemento.

Syntax

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

<!ELEMENT elementname ANY>

Aquí, la palabra clave ANY indica que el texto (PCDATA) y / o cualquier elemento declarado dentro de la DTD se puede usar dentro del contenido del elemento <elementname>. Se pueden utilizar en cualquier orden tantas veces como desee. Sin embargo, la palabra clave ANY no le permite incluir elementos que no estén declarados dentro de la DTD.

Example

A continuación se muestra un ejemplo simple que demuestra la declaración del elemento con CUALQUIER contenido:

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>

<!DOCTYPE address [
   <!ELEMENT address ANY>
]>

<address>
   Here's a bit of sample text
</address>