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 comunicacin, o una mezla de todos.
Un elemento DTD se declara con una declaracin de ELEMENTO. Cuando un archivo XML es valorado por una DTD, el analizador inicialmente examina el elemento raz 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 declaracin como indicacin para el analizador que va a definir un elemento.
elementname es el nombre del elemento (tambin llamado identificador genrico) 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 declaracin de elementos en DTD se categoriza en:
Contenido vaco
Contenido de elemento
Contenido mixto
Cualquier contenido
Contenido vaco
Es un caso especial de declaracin de elemento. Este tipo de declaracin de elemento no contiene ningn contenido. Estas se declaran con la palabra claveEMPTY.
SintaxisA continuacin la sintaxis para una declaracin de elemento vaco:
<!ELEMENT elementname EMPTY >
En la siguiente sintaxis:
ELEMENT es la declaracin de elemento de la categoraEMPTY
elementname es el nombre del elemento vaco.
A continuacin encontrar un ejemplo que muestra una declaracin de elemento vaco:
<?xml version="1.0"?> <!DOCTYPE hr[ <!ELEMENT address EMPTY> ]> <address />
En este ejemplo address se declara como elemento vaco. La revisin para el elemento address aparecera como <address />.
Contenido de elemento
En las declaraciones de elemento con contenido de elemento, el contenido sera los elementos permitidos entre parntesis. Tambin podemos incluir ms de un elemento.
SintaxisA continuacin ver la sintaxis de una declaracin de elemento con contenido de elemento:
<!ELEMENT elementname (child1, child2...)>
ELEMENT es la etiqueta de declaracin de elemento
elementname es el nombre del elemento.
child1, child2.. son los elementos, y cada uno de ellos debe tener su propia definicin en la DTD.
El siguiente ejemplo muestra un simple ejemplo de uan declaracin 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 sintcticas que se pueden aplicar para definir elementos secundarios:
| Operador | Sintaxis | Descripcin | Example |
|---|---|---|---|
| + | <!ELEMENTO nombre del elemento (elemento secundario1+)> | Indica que el elemento secundario se puede dar una o ms veces dentro del elemento principal. | <!ELEMENTO direccin (nombre+)>
El nombre del elemento secundario se puede dar una o ms veces dentro de el nombre de elemento direccin. |
| * | <!ELEMENTO nombre del elemento (elemento secundario1*)> | Indica que el elemento secundario se puede dar cero o ms veces dentro del elemento principal. | <!ELEMENTO direccin (nombre*)>
El nombre del elemento secndario se puede dar cero o ms veces dentro del nombre del elemento direccin. |
| ? | <!ELEMENTO nombre del elemento (elemento secundario1?)> | Indica que el elemento secundario se puede dar cero veces o una vez dentro del elemento principal. | <!ELEMENTO direccin (nombre?)>
El nombre del elemento secundario se puede dar cero o una vez dentro del nombre del elemento direccin. |
| , | <!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 direccin (nombre, compaa)>
La secuencia de elementos secundarios nombre, compaa, que puede darse en el mismo orden dentro del nombre del elemento direccin. |
| | | <!ELEMENTO nombre del elemento (elemento secundario1 | elemento secundario2)> | Permite hacer elecciones en el elemento secundario. | <!ELEMENTO direccin (nombre | compaa)>
Le permite escoger entre los elementos secundarios nombre o compaa, que pueden darse dentro del nombre del elemento direccin. |
Normas
Necesitamos seguir ciertas reglas si hay ms 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 declaracin indica que el elemento <address> debe tener ni ms 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 combinacin 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 seccin anterior.
SintaxisA continuacin le mostramos una sintaxis genrica para contenido de elemnto mixto:
<!ELEMENT elementname (#PCDATA|child1|child2)*>
ELEMENT es la etiqueta de declaracin de elemento.
elementname es el nombre del elemento.
PCDATA es el texto no revisado. #PCDATA debe ir al inicio en la declaracin de contenido mixto.
child1, child2.. son los elementos y cada uno de ellos debe tener su propia definicin en la DTD.
El operador (*) debe seguir el contenido de declaracin mixta si los elementos secundarios se incluyen
El (#PCDATA) y sus declaraciones de elementos secundarios deben ser separados por(|).
A continuacin le mostramos un ejemplo que demuestra la declaracin 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 categora mixta. ANY resulta til cuando aun se tienen que decidir los contenidos que se permitirn en el elemento.
SintaxisA continuacin 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 estn declarados en la DTD.
EjemploEl siguiente ejemplo muestra la declaracin 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>