|
Buscador
Secciones
Otras zonas
Registro
Foros
Recomendamos
|
Añadimos el texto en negrita de abajo para definir los atibutos del elemento slideshow.
<!ELEMENT slideshow (slide+)>
<!ATTLIST slideshow
title CDATA #REQUIRED
date CDATA #IMPLIED
author CDATA "unknown"
>
<!ELEMENT slide (title, item*)>
La etiqueta DTD ATTLIST empieza la serie de definición de atributos. El nombre que sigue a ATTLIST especifica el elemento para el que se están definiendo atributos. En este caso, el elemento es slideshow. Cada atributo está definido por una serie de tres valores separados por espacios. Las comas u otros separadores no están permitidos. El primer elemento de cada línea es el nombre del atributo: title, date, o author, en este caso. El segundo elemento indica el tipo de dato: CDATA son datos de tipo caracter -- datos sin analizar. La siguiente tabla representa las opciones válidas para el tipo de atributo.
Cuando el tipo de atributo consiste en una lista entre paréntesis de opciones separadas por una barra vertical, el atributo debe usar uno de los valores especificados. Por ejemplo, si añadimos el texto en negrita de abajo al DTD.
<!ELEMENT slide (title, item*)>
<!ATTLIST slide
type (tech | exec | all) #IMPLIED
>
<!ELEMENT title (#PCDATA)>
<!ELEMENT item (#PCDATA | item)* >
Esta especificación dice que el atributo type de los elementos slide deben ser un type="tech", type="exec", o type="all". No se acepta ningún otro valor. (Los editores XML que se preocupan del DTD pueden usar dichos especificadores para presentar una lista desplegable de opciones.) La última entrada en la especificación del atributo determina el valor por defecto, si existe, y dice si el atibuto es requerido o no. La siguiente tabla muestra las posibles opciones.
|
|
Nota:
El XML definido aquí está en slideSample06.xml. Y la salida está en Echo09-06.log. |
Añadimos el texto en negrita de abajo a la etiqueta DOCTYPE de nuestro fichero XML:
<!DOCTYPE slideshow SYSTEM "slideshow1.dtd" [ <!ENTITY product "WonderWidget"> <!ENTITY products "WonderWidgets"> ]>
El nombre de etiqueta ENTITY dice que estamos definiendo una entidad. Luego viene el nombre de la entidad y su definición. En este caso, estamos definiendo una entidad llamada "product" que tomara el espacio para el nombre del producto. Más adelante cuando cambie el nombre del producto, sólo tendremos que cambiar el nombre en un lugar, y todas nuestras slides reflejarán el nuevo valor.
La última parte es la cadena de sustitución que reemplazará el nombre de la entidad siempre que sea referenciada en el documento XML. La cadena de sustitución se define entre comillas, que no se incluyen cuando el texto se inserta en el documento.
Sólo por buenas maneras, hemos definido dos versiones, una singular y otra plural, para que cuando los plurales sean irregulares podamos sustituirlos correctamente.
Ahora que tenemos las entidades definidas, el siguiente paso es referenciarlas en la aplicación. Realizamos los cambios en negrita de abajo para hacer esto.
<slideshow
title="WonderWidget&product; Slide Show"
... <!-- TITLE SLIDE -->
<slide type="all">
<title>Wake up to WonderWidgets&products;!</title>
</slide>
<!-- OVERVIEW -->
<slide type="all">
<title>Overview</title>
<itdestacar>Why <destacar>WonderWidgets&products;</destacar> are great</itdestacar>
<item/>
<itdestacar>Who <destacar>buys</destacar> WonderWidgets&products;</itdestacar>
</slide>
Los puntos a observar aquí son que las entidades que definimos son referenciadas con la misma síntaxis (&nombreEntidad;) que usamos para las entidades predefinidas, y que la entidad se puede referenciar en un valor de atributo y como contenido de un elemento.
Mostrar las Referencias de EntidadesCuando ejecutamos el programa Echo sobre esta versión del fichero, podemos ver esta clase de cosas:
ELEMENT: <title> CHARS: Wake up to CHARS: WonderWidgets CHARS: ! END_ELM: </title>
Observamos que la existencia de referencias de entidades generan una llamada extra al método characters, y que el texto que vemos es el resultado de la sustitución.
Entidades Útiles AdicionalesAquí hay otros tres ejemplos de definiciones de entidades que podrían ser útiles cuando escribimos documentos XML.
<!ENTITY ldquo "“"> <!-- Left Double Quote --> <!ENTITY rdquo "”"> <!-- Right Double Quote --> <!ENTITY trade "™"> <!-- Trademark Symbol (TM) --> <!ENTITY rtrade "®"> <!-- Registered Trademark (R) --> <!ENTITY copyr "©"> <!-- Copyright Symbol -->
Referenciar Entidades ExternasTambién podemos usar identificadores SYSTEM o PUBLIC con el nombre de la entidad que está definida en un fichero externo.
|
Nota:
El XML definido aquí está en slideSample07.xml y en copyright.xml. La salida está en Echo09-07.log. |
Para referenciar una entidad externa, añadimos el texto en negrita de abajo a la sentencia DOCTYPE de nuestro documento XML:
<!DOCTYPE slideshow SYSTEM "slideshow.dtd" [ <!ENTITY product "WonderWidget"> <!ENTITY products "WonderWidgets"> <!ENTITY copyright SYSTEM "copyright.xml"> ]>
Esta definición referencia un mensaje de copyright contenido en un fichero llamado copyright.xml. Creamos el fichero, y ponemos algo interesante en él, quizás algo como esto:
<!-- A SAMPLE copyright --> This is the standard copyright message that our lawyers make us put everywhere so we don't have to shell out a million bucks every time someone spills hot coffee in their lap...
Finalmente, añadimos el texto en negrita de abajo a nuestro fichero slideSample.xml para referenciar la entidad externa:
<!-- TITLE SLIDE --> ... </slide> <!-- COPYRIGHT SLIDE --> <slide type="all"> <itdestacar>©right;</itdestacar> </slide>
También podríamos usar una declaración de entidad externa para acceder a un servlet que produce la fecha actual usando una definición parecida a esta:
<!ENTITY currentDate SYSTEM
"http://www.example.com/servlet/CurrentDate?fmt=dd-MMM-yyyy">
Entonces podríamos referenciar dicha entidad de la misma forma que cualquier otra:
Today's date is ¤tDate;.
Mostrar la Entidad ExternaCuando ejecutamos el programa Echo sobre nuestra ultima versión del fichero XML, podemos ver:
...
END_ELM: </slide>
ELEMENT: <slide
ATTR: type "all"
>
ELEMENT: <itdestacar>
CHARS:
This is the standard copyright message that our lawyers
make us put everywhere so we don't have to shell out a
million bucks every time someone spills hot coffee in their
lap...
END_ELM: </itdestacar>
END_ELM: </slide>
...
Observa que la nueva línea que sigue al comentario en el fichero es mostrada como un caracter, pero que el propio comentario es ignorado. Esta es la razón de que el mensaje de copyright parezca empezar en la siguiente línea después de la etiqueta CHARS:, en lugar de empezar directamente después de la etiqueta -- el primer caracter mostrado es realmente la nueva línea que sigue al comentario.
Sumarizar las EntidadesUna entidad que es referencia en el contenido del documento, tanto si es interna como externa, es conocida como entidad general. Una entidad que contiene especificaciones DTD que están referenciadas desde dentro del DTD es conocida como una entidad de parámetro.
Una entidad que contiene XML (texto y marcas), y que por lo tanto es analizada, es conocida como una entidad analizada. Una entidad que contiene datos binarios (como imágenes) es conocida como una entidad sin analizar. (Pero como es natural, debe ser externa).
| Leer comentarios (22) | |
| Escribir comentario | |
| Puntuación: |
|
| Votar | |
| Recomendar este tutorial | |
| Estadísticas |
Copyright © 1999-2007
Programación en castellano.
Todos los derechos reservados.
Formulario de Contacto -
Datos legales -
Publicidad
Hospedaje web y servidores dedicados linux por Ferca Network
red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados