Elementos - DTD


Anuncios


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