Je dispose d'un fichier xml qui ressemble à ceci:xslt texte concaténer des nœuds
<args>
<sometag value="abc" />
<anothertag value="def" />
<atag value="blah" />
</args>
garder à l'esprit que les noms d'étiquette dans args pourrait être quelque chose nommé (je ne sais pas à l'avance) maintenant i avoir ce fichier xml stocké dans une variable appelée $ data que j'ai chargée en utilisant un appel document() dans la feuille de style xslt (ce n'est pas la sauvegarde du fichier xslt)
Je veux prendre ces données et produire la sortie suivante : sometag = abc & othertag = def & atag = bl ah
donc (une verison très simplifiée ressemble à ceci:
<xsl:template>
<xsl:variable name="data" select="document('/path/to/xml')" />
<xsl:call-template name='build_string'>
<xsl:with-param name='data' select='$data' />
</xsl:call-template>
</xsl:template>
<!-- here is where i need help -->
<xsl:template name="build_string">
<xsl:param name='data'>
<xsl:value-of select='name($data/.)' />=<xsl:value-of select='$data/@value' />
<xsl:if test='$data/following-sibling::node()'>
<xsl:text>&</xsl:text>
<xsl:call-template name="build_str">
<xsl:with-param name="data" select='$nodes/following-sibling::node()' />
</xsl:call-template>
</xsl:if>
</xsl:template>
Cette quasi-œuvres, mais elle imprime aussi des nœuds de texte à partir du fichier d'entrée et je ne veux pas correspondre à des nœuds de texte ..
Votre fichier XML est mal formé. Les trois nœuds internes doivent être auto-fermants, par exemple ' ' –
Phil
Selon l'outil xslt du w3, votre code est en désordre. – Lachezar
désolé mon xslt réel est dans un fichier avec des tonnes d'autres choses en cours, je l'ai écrit à la main dans le débordement de la pile de l'éditeur afin que son probaby a des erreurs .. –