tutorial example xml xslt

xml - example - Romper líneas en XSL



xslt tutorial (4)

Descubrí que

<xsl:strip-space elements="*" />

Hace el truco.

Intenté utilizar XSL para generar la liste del cliente en un archivo XML, pero no hay líneas de corte entre los valores

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="ISO-8859-1" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" indent="yes" /> <xsl:template match="/"> <xsl:apply-templates select="//client"/> </xsl:template> <xsl:template match="//client"> <xsl:value-of select="./nom/." /> </xsl:template> </xsl:stylesheet>

El resultado es

DoeNampelluro

Normaly quiero obtener

Doe Nam Pelluro

He dejado sangría = "sí" pero eso no hace el trabajo


solo agregue: <br/> etiqueta. funciona para mi


En primer lugar, el código XSLT proporcionado es bastante extraño :

<xsl:template match="//client"> <xsl:value-of select="./nom/." /> </xsl:template>

Esto está mucho mejor escrito como el equivalente :

<xsl:template match="client"> <xsl:value-of select="nom" /> </xsl:template>

Y la forma de imprimir texto de varias líneas es ... bueno, para usar el carácter de nueva línea:

<xsl:template match="client"> <xsl:value-of select="nom" /> <xsl:if test="not(position()=last())"> <xsl:text>&#xA;</xsl:text> </xsl:if> </xsl:template>

Aquí hay una transformación completa:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:strip-space elements="*"/> <xsl:template match="client"> <xsl:value-of select="nom" /> <xsl:if test="not(position()=last())"> <xsl:text>&#xA;</xsl:text> </xsl:if> </xsl:template> </xsl:stylesheet>

cuando esta transformación se aplica en el siguiente documento XML:

<t> <client> <nom>A</nom> </client> <client> <nom>B</nom> </client> <client> <nom>C</nom> </client> </t>

el resultado deseado y correcto se produce:

A B C

En caso de que desee producir una salida xHtml (no solo texto), en lugar del carácter NL, debe producirse un elemento <br> :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="client"> <xsl:value-of select="nom" /> <xsl:if test="not(position()=last())"> <br /> </xsl:if> </xsl:template> </xsl:stylesheet>

Ahora, la salida es :

A<br/>B<br/>C

y se muestra en el navegador como :

UN
segundo
do


<xsl:for-each select="allowedValueList/allowed"> **<br/>**<xsl:value-of select="." /> </xsl:for-each>