Usar una entidad HTML en XSLT (por ej. & Nbsp;)

¿Cuál es la mejor manera de incluir una entidad html en XSLT?

     

este devuelve un XsltParseError

Puede usar la sección CDATA

 < ![CDATA[ ]]> 

o puede describir & nbsp en DTD local:

 < !DOCTYPE xsl:stylesheet [  ]> 

o simplemente use   en lugar de  

También es posible ampliar el enfoque desde la segunda parte de la respuesta de aku y obtener todas las referencias de caracteres conocidos disponibles, como esta:

 < !DOCTYPE stylesheet [  %w3centities-f; ]> ...  −30° 

Hay cierta diferencia en el resultado en comparación con el enfoque . El último va a producir literales de cadenas como   para todo tipo de resultados, incluso para , y esto puede ser diferente de lo que podría desear … Por el contrario, obtener entidades definidas para la plantilla XSLT a través de < !DOCTYPE ... siempre producirá resultados consistentes con su xsl:output configuración de xsl:output .

Puede ser aconsejable utilizar una resolución de entidad local para evitar que el motor XSLT obtenga definiciones de entidades de caracteres de Internet. Es posible que JAXP o los usuarios explícitos de Xalan-J necesiten un parche para que Xalan-J pueda usar la resolución correctamente. Ver mi blog XSLT, entidades, Java, Xalan ... para descargar y comentar los parches.

Otra posibilidad de usar entidades html desde dentro de xslt es la siguiente:

 &nbsp; 

XSLT solo maneja las cinco entidades básicas por defecto: lt , gt , apos , quot y amp . Todos los demás deben definirse como @Aku menciona.

este devuelve un XsltParseError

Sí, y el motivo es que   no es una entidad predefinida en XML o XSLT como lo es en HTML.

Solo podría usar el carácter Unicode que   significa:  

Ahora que hay Unicode, generalmente es contraproducente usar entidades de caracteres con nombre. Yo recomendaría usar el carácter Unicode para un espacio sin interrupciones en lugar de una entidad, solo por esa razón. Alternativamente, podría usar la entidad   ;, en lugar de la entidad nombrada. El uso de entidades con nombre hace que su XML dependa de una DTD en línea o externa.

Encontré que todas estas soluciones producían un carácter en el espacio en blanco.

Usar resolvió el problema para mí; pero #x20; podría funcionar también.

Gracias por su información. He escrito una breve publicación de blog basada en lo que funcionó para mí, ya que estaba haciendo la transformación XSLT en una plantilla de Dynamicweb CMS .

La publicación del blog está aquí: Cómo agregar entidades a las plantillas XSLT .

/ Sten Hougaard

Es necesario usar la entidad # x160;

No tuve suerte con el enfoque DOCTYPE de Aku.

Lo que funcionó para mí en las transformaciones MSXML en un servidor de Windows 2003, fue

  &#160; 

Una especie de híbrido de los anteriores. Gracias colaboradores de Stackoverflow!

Un carácter de espacio entre las tags de texto debería ser suficiente.