2010-11-19 5 views
0

i ont le code XML dans une structure comme celle-ci:xslt pour transformer le format de document XML

<RWFCriteria reportType="ProgramReview"> 
    <item id="36" name="" value="9" type="Milestone" /> 
    <item id="31" name="" value="9" type="Milestone" /> 
    <item id="33" name="" value="11" type="Milestone" /> 
</RWFCriteria> 

et doivent-il être converti en:

<data> 
    <release id="9"> <milestone id="36" /> <milestone id="31" /> </release> 
    <release id="11"> <milestone id="33" /> </release> 
</data> 

quoi ressemblerait le XSLT comme pour cette transformation?

Répondre

1

Vous devez regrouper les éléments en fonction de leur attribut de valeur. Si vous utilisez xslt 1 vous pouvez le faire en utilisant la méthode Muenchian qui ressemblerait à quelque chose comme:

<xsl:key name="item-value" match="item" use="@value" /> 

    <xsl:template match="/RWFCriteria"> 

    <data> 
     <xsl:for-each select="item[count(. | key('item-value', @value)[1]) = 1]"> 
     <release id="{@value}"> 
      <xsl:for-each select="key('item-value', @value)"> 
      <milestone id="{@id}" /> 
      </xsl:for-each> 
     </release> 
     </xsl:for-each> 
    </data> 

    </xsl:template> 
+0

@Alejandro Merci pour fixer les attributs – Bronumski

+0

pas de problème. +1 Pour une réponse correcte. (D'ailleurs je n'aime pas imbriqué 'xsl: for-each') –

+0

@Alejandro Moi non plus, je paierais normalement les choses à leur propre modèle mais je sentais que c'était plus clair. – Bronumski

Questions connexes