> Manuales > Introducción a XML

Pasamos a explicar los diferentes tipos de entidades que podemos definir para nuestras DTD's.

Existen 3 tipos de entidades q podemos definir en nuestras DTD's:

1. Entidades internas

Tambien llamadas macros ó constantes de texto, las entidades internas son las q se asocian a una cadena de caracteres. Se referencian única y exclusívamente desde el fichero.
Ej:

<!ENTITY nom "Juan Pérez López">
Así, si escribo en mi documento (en el código fuente, si estas dentro de un editor wysiwyg): &nom; es como si estuviera escribiendo Juan Pérez López.

NOTAS:

Las entidades internas pueden incluir referencias a otras entidades internas, con la salvedad de q se forme un ciclo entre ellas. XML tiene 5 entidades internas predefinidas:

&lt; Es sustitído por el símbolo <
&gt; Es sustitído por el símbolo >
&amp; Es sustitído por el símbolo &
&apos; Es sustitído por el símbolo '
&quot; Es sustitído por el símbolo "

2. Entidades externas

Sirven para referenciar su contenido ó valor desde otros ficheros, los cuales pueden ser binarios (ej,, una imagen jpg) o de texto( ej. fichero xml).
Si el contenido del fichero que hace la referencia es de texto, entonces se sustituye tal y como si de una entidad interna se tratara.
Ej.

<!ENTITY arch System "arch.txt">

Inserta el contenido del fichero arch.txt en lugar en la q se hace la referencia.

Si fuera binario, la referencia se sustituiría por el texto siempre y cuando éste forme parte de un atributo cualquiera del fichero.
Ej:

<!ENTITY NDATA miurl="http://tttttt.com">

Esto se podría referenciar así: <A href="&miurl;"...> .... </A>

3. Entidades de parámetros

Son especiales xq sólo pueden aparecer en las DTD's.
Son prácticamente igual q las entidades anteriores.Por ello su sintaxis es distinta:

Se usa % para preceder al nombre de la entidad tanto en su definición como en su referencia.

Ej:
Antes de saber manejar entidades con parámetros:

<!ELEMENT motos EMPTY>
<!ATTLIST motos
    a CDATA #REQUIRED
    b CDATA #REQUIRED
    c CDATA #REQUIRED>


Después de saber manejar entidades con parámetros:

<!ENTITY %items "a CDATA #REQUIRED b CDATA #REQUIRED c CDATA #REQUIRED">
<!ELEMENT motos EMPTY>
<!ATTLIST motos %items>


Declaraciones de notación

Se usan para indicar el tipo de los ficheros binarios referenciados mediante las referencias a entidades externas .
OJO! este dato no se analiza por el Parser!
La propia aplicación será, x tanto, la encargada de manejar la información.

Ej:

<!NOTATION GIF87A SYSTEM "GIF">

Uso de las Dtd's

Recordad que el uso de DTD's no es obligatorio pero si necesario(al menos, desde mi punto de vista).

A la hora de usar una DTD, podemos elegir (del mismo modo que en JavaScript ó ASP) bien incrustarla dentro del propio documento, ó bien vincularla a un archivo externo.
Esto es lo primero q deberíamos de indicar en el documento.

Ejs:
a) Definición interna de una DTD.

<?XML version="1.0" standalone="yes"?>

<! DOCTYPE cars SYSTEM "cars.dtd " [

   <!ELEMENT cars (...)*>
    <!ATTLIST cars ...>

    . . .
]>

<cars>
. . . . .
</cars>

b)

Definición externa de una DTD.

<?XML version="1.0" standalone="yes"?>

<! DOCTYPE cars SYSTEM "www.javieryjorge.com/lengs/cars.dtd " >

<cars>
. . . . .
</cars>

Las referencias (a DTD's externas) te las puedes encontrar de 2 fomas:
SYSTEM:

Ej:

<! DOCTYPE cars SYSTEM "javieryjorge.com/lengs/cars.dtd " >

Este tipo de notación la usan los desarrolladores cuando la DTD sólo va a tener ámbito local u interno dentro de una organización, asi como cuando se va a emplear para uso particular.
Básicamente es como si pusieramos private (privado)
PUBLIC:

Ej:

<!DOCTYPE CONTACTS PUBLIC "ISO//Autor//Descripción//Idioma"> "http://www.../pepito.dtd" > Este tipo es utilizado por estandares u organismos.
En la declaración se suelen indicar 4 campos normalmente:

1. El nombre del organismo.
   (ISO indica estandar ISO; + indica estandar NO ISO)
2. Cadena de caracteres en la q se suele poner el nombre del autor de la DTD.
3. Descripción breve de lo que hace.
4. Idioma: ES español; EN inglés.

Acerca del uso de uno u otro formato, yo os recomiendo que useis las externas de sistema, pues son las mejores tanto en usabilidad (modificas una y te vale para todos los archivos referenciados a ella) como en visibilidad (en el doc .xml sólo se observa una línea).

Por otra parte es importante que sepas que ya hay estandares definidos por empresas, colectivos, equipos de investigación, etc...
Así, por ejemplo, estan el Chemical Markup Language(CML), el Mathematical Markup Language (MathML), etc...

Documentos XML válidos ó bien formados.

Un documento bien formado es el que sigue las reglas básicas de XML para diseño de documentos.
Un documento válido es un documento bien formado que además respeta las normas dictadas por su DTD.
Todos los documentos XML han de estar bien formados, si bien no es obligatorio q sean válidos (aunq si es recomendable).

Javier M Criado

Ingeniero Téc. en Informática

Manual