2016-11-02 1 views
-3

Je veux parcourir un fichier XML et créer des enregistrements s'il y a plusieurs éléments répétés comme ci-dessous. Je dois ajouter 4 nouveau record pour un enfant dans un tableau pour chaque maître comme un 123, 123 b etc. Ma sortie doit être comme ci-dessousboucle à travers xslt lorsque nous avons plusieurs éléments

a|123 
b|123 
c|123 
d|123 

<item> 
<master>123</master> 
<child1>a</child1> 
<child2>b</child2> 
<child3>c</child3> 
<child4>d</child4> 
</item> 

J'ai essayé ci-dessous le code

  <xsl:for-each select="//item">     
      <Row Action="ADD"> 
       <xsl:value-of select="current()/child1" />|<xsl:value-of select="current()/master" /> 
      </Row> 
      </xsl:if> 
      </xsl:for-each> 
+0

Que voulez-vous dire par "répété"? Il n'y a pas d'éléments dupliqués car chaque enfant de 'item' a un nom unique. En outre, veuillez ajouter votre résultat requis à la question à des fins d'illustration. Et enfin, vous n'avez pas 10 éléments ... –

+1

S'il vous plaît fournir un code pour démontrer vos efforts pour résoudre ce problème. – zeppelin

+0

J'ai une mise à jour ma question – user3067170

Répondre

0

Si votre contexte est item, vous devriez être en mesure d'itérer sur chaque enfant qui n'est pas master.

... Exemple

XML entrée

<item> 
    <master>123</master> 
    <child1>a</child1> 
    <child2>b</child2> 
    <child3>c</child3> 
    <child4>d</child4> 
</item> 

XSLT 1,0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="item"> 
    <xsl:for-each select="*[not(self::master)]"> 
     <xsl:value-of select="concat(.,'|',../master,'&#xA;')"/> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 

sortie

a|123 
b|123 
c|123 
d|123