2010-07-01 206 views
2

我遇到了XSLT循環遍歷所有行,然後遍歷每個行元素中的所有列的問題。XSLT - 嵌套循環

因此,如果這是XML我:

<root> 
<subelement> 
<rows> 
<row title="Row1"> 
    <column title="A" /> 
    <column title="B" /> 
</row> 
<row title="Row2"> 
    <column title="C" /> 
    <column title="D" /> 
</row> 
</rows> 
</subelement> 
</root> 

我想這樣的輸出:

<h1>Row1</h1> 
<ul> 
    <li>A</li> 
    <li>B</li> 
</ul> 
<h1>Row2</h1> 
<ul> 
    <li>C</li> 
    <li>D</li> 
</ul> 

問候

彼得

+0

你想要的東西。 SO是關於提問的。另外大多數人不喜歡提供完整的解決方案而沒有提問者主動提供具體問題。 – musiKk 2010-07-01 12:24:13

+1

這對我來說看起來很簡單,確切地說,你遇到的麻煩是什麼? – 2010-07-01 12:44:31

回答

2

這種轉變:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 
    <xsl:strip-space elements="*"/> 

<xsl:template match="row"> 
    <h1><xsl:value-of select="@title"/></h1> 
    <ul> 
     <xsl:apply-templates/> 
    </ul> 
</xsl:template> 

<xsl:template match="column"> 
    <li><xsl:value-of select="@title"/></li> 
</xsl:template> 
</xsl:stylesheet> 

時所提供的XML文檔應用:

<root> 
    <subelement> 
     <rows> 
      <row title="Row1"> 
       <column title="A" /> 
       <column title="B" /> 
      </row> 
      <row title="Row2"> 
       <column title="C" /> 
       <column title="D" /> 
      </row> 
     </rows> 
    </subelement> 
</root> 

產生想要的輸出:

<h1>Row1</h1> 
<ul> 
    <li>A</li> 
    <li>B</li> 
</ul> 
<h1>Row2</h1> 
<ul> 
    <li>C</li> 
    <li>D</li> 
</ul>