transformar online example xslt

online - Cómo insertar & nbsp; en XSLT



xslt sap (11)

Cómo puedo insertar

 

En una hoja de estilo XSLT, sigo recibiendo este error:

Error de análisis XML: entidad indefinida

Básicamente, quiero un carácter de espacio sin ruptura en la Plantilla XSLT.


Además de la respuesta de victor hugo, es posible obtener todas las referencias de caracteres conocidas legales en un archivo XSLT, como este:

<!DOCTYPE stylesheet [ <!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML" "http://www.w3.org/2003/entities/2007/w3centities-f.ent"> %w3centities-f; ]> ... <xsl:text>&amp; &nbsp; &ndash;</xsl:text>

También hay cierta diferencia en el resultado de este enfoque en comparación con <xsl:text disable-output-escaping="yes"> one. Este último va a producir literales de cadenas como &nbsp; para todo tipo de resultados, incluso para <xsl:output method="text"> , 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 ... <!ENTITY ... siempre producirá resultados consistentes con su xsl:output configuración de xsl:output .

Y cuando se incluyen todas las referencias de caracteres, puede ser conveniente 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.


Cuando utiliza lo siguiente (sin disable-output-escaping !) Obtendrá un único espacio sin interrupción:

<xsl:text>&#160;</xsl:text>


Es posible que desee agregar la definición para esta entidad al principio del archivo (debajo de la declaración xml):

<!DOCTYPE stylesheet [ <!ENTITY nbsp "&#160;" > ]>

También puede agregar más entidades como Ntilde, Aacute, etc.


Estaba tratando de mostrar los bordes en una celda vacía en una tabla HTML. Mi viejo truco de usar espacio sin interrupciones en celdas vacías no funcionaba desde xslt. Usé el salto de línea con el mismo efecto. Menciono esto en caso de que la razón por la que estaba tratando de usar el espacio no disruptivo fuera dar contenido a una celda de la tabla ''vacía'' para activar los bordes de la celda.

<br/>


Intenta usar la entidad &#160; en lugar.

Más detalles sobre por qué &nbsp; no funciona y otras opciones here .


Tratar de usar

<xsl:text>&#160;</xsl:text>

Pero depende del procesador XSLT que esté utilizando: la especificación XSLT no requiere que los procesadores XSLT la conviertan en " &nbsp; ".


Uno también puede hacer esto:

<xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text>


Utilizar esta

<xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;

editar: Downvoters probablemente debería validar que esto funciona primero (lo hace, y es la solución más general al problema).


también puedes usar:

<xsl:value-of select="''&amp;nbsp''"/>

recuerda el amplificador después de la y obtendrá un mensaje de error


XSLT estilo XSLT deben estar bien formadas en XML. Dado que "&nbsp;" no es una de las cinco entidades XML predefinidas , no se puede incluir directamente en la hoja de estilos. Así que volviendo a su solución "&#160;" es un reemplazo perfecto de "&nbsp;" Deberías usar.

Ejemplo:

<xsl:value-of select="$txtFName"/>&#160;<xsl:value-of select="$txtLName"/>


&#160; funciona realmente bien Sin embargo, mostrará uno de esos caracteres extraños en la codificación ANSI. <xsl:text> funcionó mejor para mí.

<xsl:text> </xsl:text>