2017-09-25 3 views
0

J'ai du XML, que je donne à une feuille de style XSLT pour faire quelques transformations mais en quelque sorte le xsl: for-each ne boucle que le premier nœud ...XSLT xsl: for-each ne fait que la première ligne

J'attends à caniveau en boucle tous les nœuds et les transformer, mais en quelque sorte ce que les boucles Trough la première valeur, ne sais pas ce que je fais mal ici ..

Ceci est mon XML:

<?xml version="1.0"?> 
<email> 
    <uid>66</uid> 
    <subject>You have been added to a Priooo project</subject> 
    <message/> 
    <arguments> 
     <argument> 
      <name> 
       -url- 
      </name> 
      <value> 
       http://localhost/iaf4asap/#/resetpassword/c0a82001--6b0373de_15eb8270a5e_-7fea</value> 
      </argument> 
      <argument> 
       <name> 
        -inviteBy- 
       </name> 
       <value>Laurens Makel</value> 
      </argument> 
      <argument> 
       <name> 
        -project- 
       </name> 
       <value>[email protected]</value> 
      </argument> 
     </arguments> 
    <templateId> 
     c02f1e50-d569-41d9-87ec-933cded8a330 
    </templateId> 
</email> 

et ceci est mon XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" method="xml"/> 


    <xsl:template match="/email"> 
    <email> 
      <uniqueArguments> 
       <xsl:for-each select="arguments"> 
        <uniqueArgument> 
         <name><xsl:value-of select="argument/name"/></name> 
         <value><xsl:value-of select="argument/value"/></value> 
        </uniqueArgument> 
       </xsl:for-each> 
      </uniqueArguments> 
      <templateId> 
       <xsl:value-of select="templateId"></xsl:value-of> 
      </templateId> 
     </email> 
    </xsl:template> 

</xsl:stylesheet>  

Ce qui me donne la sortie suivante ..:

 <?xml version="1.0"?> 
<email> 
    <uniqueArguments> 
     <uniqueArgument> 
      <name> 
       -url- 
      </name> 
      <value> 
       http://localhost/iaf4asap/#/resetpassword/c0a82001--6b0373de_15eb8270a5e_-7fea</value> 
      </uniqueArgument> 
     </uniqueArguments> 
    <templateId> 
     c02f1e50-d569-41d9-87ec-933cded8a330 
    </templateId> 
</email> 

Répondre

1

Vous Looping sur un seul nœud arguments, xsl: for-each nécessaire un XPath avec de nombreux nœuds en résultat, utilisez plutôt:

<xsl:for-each select="arguments/argument">