2009-10-28 3 views
2

HI!Comment imbriquer xsl: pour chaque selec

Mon XML:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!-- Edited by XMLSpy® --> 
<Dokument> 
     <Skupina id="3"> 
      <Naziv_skupine>RAZSTAVNI PROSTOR</Naziv_skupine> 
        <Dvorana id="295"> 
        <Naziv_dvorane>DVORANA C</Naziv_dvorane> 
         <Postavka id="41"> 
          <Artikel>1105</Artikel> 
         </Postavka> 
        </Dvorana> 

        <Dvorana id="281"> 
        <Naziv_dvorane>DVORANA A</Naziv_dvorane> 
         <Postavka id="41"> 
          <Artikel>1102</Artikel> 
         </Postavka> 
        </Dvorana> 
     </Skupina> 


     <Skupina id="86"> 
      <Naziv_skupine>UPORABNINA PROSTORA, TEHNIČNE OPREME IN OSEBJA</Naziv_skupine> 
        <Dvorana id="295"> 
        <Naziv_dvorane>DVORANA C</Naziv_dvorane> 
         <Postavka id="41"> 
          <Artikel>2100</Artikel> 
         </Postavka> 
        </Dvorana> 
     </Skupina> 


</Dokument> 

Mon XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!-- Edited by XMLSpy® --> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>My CD Collection</h2> 
    <table border="1"> 

    <xsl:for-each select="Dokument/Skupina"> 
    <tr> 
     <td align="left" colspan="7" valign="top"><xsl:value-of select="Naziv_skupine"/></td> 
     </tr> 

     <xsl:for-each select="/Dokument/Skupina/Dvorana"> 
     <tr> 
     <td align="left" colspan="7" valign="top"><xsl:value-of select="Naziv_dvorane"/></td> 
     </tr> 
     <xsl:for-each select="/Dokument/Skupina/Dvorana/Postavka"> 
      <tr> 
      <td valign="top"><xsl:value-of select="Artikel"/></td>      
      </tr> 
     </xsl:for-each> 
    </xsl:for-each> 
    </xsl:for-each> 

    </table> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

Résultat:

RAZSTAVNI PROSTOR 
    DVORANA C 
    1105 
    1102 
    2100 
    DVORANA A 
    1105 
    1102 
    2100 
    DVORANA C 
    1105 
    1102 
    2100 
UPORABNINA PROSTORA, TEHNIČNE OPREME IN OSEBJA 
    DVORANA C 
    1105 
    1102 
    2100 
    DVORANA A 
    1105 
    1102 
    2100 
    DVORANA C 
    1105 
    1102 
    2100 

Mais je veux le résultat comme celui-ci:

RAZSTAVNI PROSTOR 
    DVORANA C 
    1105 
    DVORANA A 
    1102 
UPORABNINA PROSTORA, TEHNIČNE OPREME IN OSEBJA 
    DVORANA C 
    2100 

Où est-ce que je me trompe?

Merci!

Tom

Répondre

5

Dans le second for-each, essayez de changer ce chemin

/Dokument/Skupina/Dvorana/Postavka 

à

./Postavka 

Vous voulez continuer la deuxième boucle for-each au niveau du noeud du premier on pointe vers. Qu'est-ce que vous faites est de re-sélectionner tous les nœuds de la racine, puisque vous spécifiez/Dokument/....

+1

Merci, cela fonctionne – Tom

+0

ce n'est pas pour moi. Toujours obtenir le premier de l'imbriqué pour chaque – Sophie

Questions connexes