studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones xml xslt special-characters dtd entities

programacion - Caracteres especiales en XML



manual de programacion android pdf (9)

Este es un problema porque no todas las entidades HTML son entidades XML. Puede importar la DTD de HTML en su documento como lo sugirió Pat, o realice una de las siguientes acciones:

Reemplaza todas las ocurrencias del carácter especial con el código de entidad numérica:

» becomes »

Ajustar todas las ocurrencias de los caracteres especiales en una etiqueta CDATA

<![CDATA[&raquo;]]>

Definir entidades en la parte superior de su documento

<!DOCTYPE ROOT_XML_ELEMENT [ <!ENTITY raquo "&#187;"> ]>

Estoy creando un sistema de navegación a la izquierda que utiliza xml y xsl. Todo fue genial hasta que intenté usar un carácter especial en mi documento xml. Estoy usando &raquo; y obtengo el error

razón: Referencia a la entidad indefinida ''raquo''.
código de error: -1072898046

¿Cómo hago que esto funcione?


¿Especificó un tipo de documento para su archivo?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Creo que puede obtener esos errores si olvida especificarlo.

También a veces las entidades funcionan si las especificas por número en lugar de nombre.

&#187; &#171; instead of &raquo; and &laquo;


¿Está utilizando el símbolo »directamente o lo está definiendo como & raquo; ? Si está utilizando el símbolo de escape, ¿se olvidó del punto y coma?


Está intentando utilizar una entidad HTML en un documento que no sea HTML o que no sea XHTML. Estas entidades se declaran en la definición de tipo de documento (DTD) del documento .

Debe usar la versión numérica Unicode de la referencia de entidad . Por ejemplo, en el caso de &raquo; deberías usar &#187;

Alternativamente, puede definirlos en la DTD de su documento XML :

<!ENTITY entity-name "entity-value"> <!ENTITY raquo "&#187;">

De lo contrario, si su documento es UTF-8, creo que puede usar el carácter real directamente en su documento XML.

»


Joe

Cuando uso la versión Unicode muestra un cuadrado.

Al poner la descalificación de entidad en el documento xml, se produce una "No se puede tener una declaración de DTD fuera de una DTD". error. Supongo que esto es esperado.

Cuando uso '''' para incluir el dtd externamente, no parece tener ningún efecto.

Me pregunto si esto es quizás un problema de servidor. Estoy desarrollando esto localmente y usando Baby Web Server.


No necesita declarar una entidad en su DTD, o incluso usar una DTD. Probablemente no necesite usar la representación Unicode del personaje. Ciertamente no necesita usar una sección CDATA.

Lo que necesita hacer es usar un DOM para construir su XML en lugar de tratar de compilarlo con la manipulación de cadenas. El DOM solucionará este problema por ti.

En C #, este código:

XmlDocument d = new XmlDocument(); d.LoadXml("<foo/>"); char c = (char)187; d.DocumentElement.InnerText = "Here''s that character: " + c; Debug.WriteLine(d.OuterXml); d.DocumentElement.InnerText = "Here it is as an HTML entity: &raquo;"; Debug.WriteLine(d.OuterXml);

produce esta salida:

<foo>Here''s that character: »</foo> <foo>Here it is as an HTML entity: &amp;raquo;</foo>

Como se puede ver en el primer ejemplo, el carácter »es perfectamente legal en texto XML. Pero no creo que estés tratando de representar a ese personaje.

Creo que estás intentando hacer lo que está en el segundo ejemplo, basado en el mensaje de error que informaste. Estás tratando de representar la cadena de caracteres &raquo; . La forma correcta de representar esa cadena de caracteres en texto XML es escapando del signo y; por lo tanto: &amp;raquo; .

Por lo tanto, si debe usar la manipulación de cadenas para construir su XML, simplemente asegúrese de escapar de cualquier signo de unión en sus datos de origen. No para aclarar el punto, pero si estuvieras usando un DOM, esto se habría hecho automáticamente.

Otra cosa. Es bastante probable que en su pregunta original, que ahora dice "Estoy usando», lo que realmente escribió es "Estoy usando & raquo;". La publicación actual no se ve así, sin embargo. Si necesita representar texto literalmente en el marcado, enciérrelo en los puntos atrás; de lo contrario, las entidades HTML se convertirán a su representación de caracteres cuando se represente la publicación.


simplemente reemplace su entidad HTML &raquo; con la referencia numérica &#187; lo cual es bueno en cualquier XML y HTML.


Me encontré buscando en Google mucho de esa información, así que decidí publicar una matriz en mi propio sitio con el simple propósito de poder hacer una búsqueda rápida:

http://martinkool.com/characters

Utilizar el &#...; forma de hecho


Si desea que el documento de salida contenga la entidad HTML nombrada &raquo; en lugar de la referencia numérica, agregue los siguientes elementos a su hoja de estilo ( solo XSLT2.0 ):

<xsl:output use-character-maps="raquo.ent"/> <xsl:character-map name="raquo.ent"> <xsl:output-character character="&#187;" string="&amp;raquo;"/> </xsl:character-map>