2010-02-15 44 views
39

Estaba buscando representar un retorno de carro dentro de un nodo xml.
He intentado un espacio blanco preservar, entidad hexadecimal sin suerte- y un \ n. viendo a través de un navegador.XML Codificación de retorno de carro

Ejemplo

<Quote> 
Alas, poor Yorick! 
I knew him 
</Quote> 

Gracias.

Respuesta

1

Un navegador no le mostrará espacio en blanco de manera confiable. Recomiendo el comando Linux 'od' para ver qué hay realmente allí. Los analizadores XML compatibles respetarán todos los métodos que enumeró.

13

xml:space="preserve" tiene que funcionar para todos los analizadores XML compatibles.

Sin embargo, cabe destacar que en HTML el salto de línea es sólo un espacio en blanco y no un salto de línea (esto se representa con el (X etiqueta HTML <br />), tal vez este es el problema que se enfrentan.

Puede también añadir &#10; y/o &#13; para insertar caracteres CR/LF.

+1

funcionó muy bien para mí. Simplemente renderizado como HTML en flash. – thomallen

+1

Para el registro, la secuencia en las PC al menos normalmente es CR seguido por LF , pero en estos días, una sola LF es normalmente suficiente. –

+1

También tenga en cuenta que, incluso con 'xml: space =" prserve "', el analizador XML sigue siendo [requerido para reemplazar '13 10' (y otras secuencias) por' 10' antes del análisis] (https: //www.w3 .org/TR/xml11/# sec-line-ends). Puede ingresar un CR que debe sobrevivir al análisis [utilizando una referencia de entidad de carácter como '& # xD'] (https://www.w3.org/TR/xml11/#sec-common-syn). – binki

65

para insertar un CR en XML, es necesario utilizar la entidad de caracteres &#13;.

Esto es porque los analizadores XML compatibles debe, antes de analizar, traducir CRLF y cualquier CR no seguido por una LF a un pecado gle LF. Este comportamiento se define en la sección End-of-Line handling de la especificación XML 1.0.

+17

Punto menor - CR es y no que es LF - consulte esta tabla ascii para más detalles ... http://www.asciitable.com/ ... –

+4

Sí, es LF, es CR. El mundo de Windows generalmente tiene secuencias CRLF (es decir, ), Linux tiene solo LF ( ). – Luke

+0

No pude hacer que esto funcione en decimal, pero estaba bien en hexadecimal &#A; – MikeF

Cuestiones relacionadas