2009-10-28 56 views
2

嗨!如何嵌套xsl:for-each selec

我的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> 

我的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> 

結果:

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 

但我想要的結果是這樣的:

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

我在哪裏得到錯誤?

謝謝!

湯姆

回答

5

在第二的for-each,嘗試改變這條道路

/Dokument/Skupina/Dvorana/Postavka 

./Postavka 

要繼續第二換每個節點處的第一環人們正指着。你正在做的是從根重新選擇所有節點,因爲你指定/ Dokument/....

+1

謝謝,這是工作 – Tom 2009-10-29 08:13:23

+0

它不適合我。仍然獲得每個嵌套的第一個 – Sophie 2013-06-09 19:19:16