Función XSLT string-join. Concatenar en XSL
Muchos de nosotros conocemos los archivos XML. Sabemos que nos permiten organizar datos y darles una especie de jerarquía. Generalmente los web service nos dan respuesta en este formato. Pero, qué más podemos hacer con él?
He tenido la oportunidad de trabajar con las XSL que son las hojas de estilo de XML. En pocas palabras, uno define una serie de reglas de cómo leer el flujo XML y el XSL se encarga de transformarlo en otro formato, por ejemplo en un archivo txt plano, o en html.
Volveré luego con una explicación más detalladas y más ejemplos, pero por hoy, mi “pense-bête” está destinado a utilizar una función de XSLT para dar formato a un conjunto de valores dentro de tags del mismo nombre.
Supongamos que tenemos :
<libro>
____<titulo>Le Cuisiner de Gengis Khan</titulo>
____<autores>
________<autor>Paul Wagner</autor>
________<autor>Pierre Antilogus</autor>
________<autor>Doan</autor>
____</autores>
____<editor>Le Castor Astral</editor>
</libro>
Y necesito mostrar los autores, contatenados con una “,”. Tenemos entonces que parsear el tag <autores>
Entonces:
<xsl:template match="libro/autores">
____<xsl:value-of select="string-join(./autor, ',')"/>
</xsl:template>
Este código recorre el árbol de XML, y cuando encuentre autores, aplicará la funcion string-join a todos los tags que se llamen autor, y los concatenará con una coma.
Et voilà!
y el resultado? no lo muestras?
Se trata de una simple concatenación. El resultado es entonces Paul Wagner, Pierre Antilogus, Doan.
Qué pasa si también quiero concatenar el editor y otros parametros fuera de autor?