Lo siguiente que haremos es personalizar un poco el analizador, podemos ver c�mo obtener informaci�n que normalmente ignorar�a. Pero antes de poder hacer esto, tenemos que aprender unos pocos conceptos importantes de XML. En esta secci�n aprenderemos sobre.
- Manejar caracteres especiales ("<", "&", etc.)
- Manejar texto con s�ntaxix al estilo XML.
�Manejar Caracteres Especiales
En XML, una entidad es una estructura XML (o de texto plano) que tiene un nombre. Referenciar la entidad por su nombre hace que �sta sea insertada dentro del documento en la posici�n de la referencia de entidad. Para crear una referencia de entidad, el nombre de la entidad se rodea de un ampersand y un punto y coma.
&entityName;
M�s adelante, cuando aprendamos c�mo escribir un DTD, veremos que podemos definir nuestras propias entidades, para que &yourEntityName; expanda todo el texto que hemos definido para esa entidad. Por ahora, nos enfocaremos en las entidades predefinidas y las referencias de caracteres que no requieren ninguna definici�n especial.
�Entidades Predefinidas
Una referencia de entidad como & contiene un nombre (en este caso amp) entre los delimitadores de inicio y final. El texto al que se refiere (&) es sustituido por el nombre, como una macro en un programa C o C++. La siguiente tabla mustra las entidades predefinidas para caracteres especiales.
| Caracter | Referencia |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ' | ' |
�
Referencias de Caracteres
Una referencia de caracter como “ contiene una almohadilla (#) seguida por un n�mero. El n�mero es el valor Unicode para un caracter como 65 para la letra �A�, 147 para la comilla izquierda o 148 para la comilla derecha. En este caso, el nombre de la entidad es la almohadilla seguida por los d�gitos que identifican el caracter.
�Usar un Referencia de Entidad en un Documento XML
Supongamos que queremos insertar una l�nea como est� en nuestro documento XML.
Market Size < predicted
El problema es que al poner esto directamente en un fichero XML el analziador ve un �ngulo izquierdo (<), y empieza a buscar un nombre de etiqueta, lo que desactiva el analizador. Para evitar este problema, ponemos < en el fichero, en lugar de "<".
|
Nota:
Los resultados de las siguientes modificaciones est�n contenidos en slideSample03.xml. El resultado del procesamiento se puede ver en Echo07-03.log. |
A�adimos el texto en negrita de abajo a nuestro fichero slideSample.xml:
<!-- OVERVIEW -->
<slide type="all">
<title>Overview</title>
...
</slide>
<slide type="exec">
<title>Financial Forecast</title>
<itdestacar>Market Size < predicted</itdestacar>
<itdestacar>Anticipated Penetration</itdestacar>
<itdestacar>Expected Revenues</itdestacar>
<itdestacar>Profit Margin </itdestacar>
</slide>
</slideshow>
Cuando ejecutemos el programa Echo sobre nuestro fichero XML, veremos la siguiente salida:
ELEMENT: <itdestacar> CHARS: Market Size CHARS: < CHARS: predicted END_ELM: </itdestacar>
El analizador convierte la referencia en la entidad que representa, y pasa la entidad a la aplicaci�n.
�Manejar Texto con S�ntaxis al Estilo XML
Cuando manejamos grandes bloques de XML o HTML que incluyen muchos caracteres especiales, podr�a ser inconveniente reemplazarlos con la entidad de referencia apropiada. Para estas situaciones, podemos usar una secci�n CDATA
|
Nota:
Los resultados de la siguientes modificaciones est�n en el fichero slideSample04.xml. El resultado del procesamiento lo puedes ver en Echo07-04.log. |
Una secci�n CDATA trabaja como <pre>...</pre> en HTML, -- todos los espacios en blanco en una secci�n CDATA son significantes, y los caracteres no son interpretados como XML. Una secci�n CDATA empieza con <![CDATA[ y termina con ]]>. A�adimos el texto en negrita de abajo a nuestro fichero slideSample.XML para definir una secci�n CDATA para una diapositiva ficticiamente t�cnica.
...
<slide type="tech">
<title>How it Works</title>
<itdestacar>First we fozzle the frobmorten</itdestacar>
<itdestacar>Then we framboze the staten</itdestacar>
<itdestacar>Finally, we frenzle the fuznaten</itdestacar>
<itdestacar><![CDATA[Diagram.
frobmorten <------------ fuznaten
| <3> ^
| <1> | <1> = fozzle
V | <2> = framboze
staten--------------------+ <3> = frenzle
<2>
]]></itdestacar>
</slide>
</slideshow>
Cuando ejecutemos el programa Echo sobre el nuevo fichero, veremos la siguiente salida:
ELEMENT: <itdestacar>
CHARS: Diagram.
frobmorten <------------ fuznaten
| <3> ^
| <1> | <1> = fozzle
V | <2> = framboze
staten--------------------+ <3> = frenzle
<2>
END_ELM: </itdestacar>
Podemos ver aqu� que el texto de la secci�n CDATA ha llegado como un string de caracteres completamente sin interpretar.