La función distinct-values()
devuelve una secuencia de valores sobre los que debe poder iterar. El resultado es, por así decirlo, "tokenizado".
fn:distinct-values('AL', 'AL', 'NL')
devuelve la secuencia ('AL', 'NL')
.
Si genera la variable con xsl:value-of
, devolverá la cadena "AL NL" solo porque el separador de secuencia predeterminado para xsl:value-of
es un carácter de espacio único. Esto es algo que podría cambiar con el atributo @separator
:
entrada
<?xml version="1.0" encoding="UTF-8"?>
<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<xsl:variable name="FormStates" select="distinct-values(States/State)"/>
<xsl:comment>xsl:value-of</xsl:comment>
<xsl:value-of select="$FormStates" separator=":"/>
<xsl:comment>xsl:for-each</xsl:comment>
<xsl:for-each select="$FormStates">
<xsl:value-of select="."/>
<xsl:text>:</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
salida
<?xml version="1.0" encoding="UTF-8"?>
<!--xsl:value-of-->
AL:NM
<!--xsl:for-each-->
AL:NM:
Como siempre, no está claro en absoluto cuál es el problema que tiene. Aprenda a proporcionar: 1. El documento XML de origen. 2. El resultado deseado. 3. Las propiedades requeridas de la transformación. –
He votado para CERRAR esta pregunta. No es realmente una pregunta, no se cuestiona. El problema no está definido y no está claro. –
Lo siento, espero haber aclarado la pregunta. – johkar