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>
</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>
</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>