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.