0
我可以使用一些幫助。XSLT 1.0對具有相同級別但不同值的同名節點的值進行分組
這裏是我的XML的說明性的例子:
<items>
<item>
<name>Thing 1</name>
<colors>
<color>white</color>
<color>green</color>
</colors>
</item>
<item>
<name>Thing 2</name>
<colors>
<color>purple</color>
<color>white</color>
<color>black</color>
</colors>
</item>
<item>
<name>Thing 3</name>
<colors/>
</item>
</items>
一個下調我的XSLT的例子版本是這樣的:
<xsl:key name="myGrouping" use="colors/color" match="item"/>
<xsl:template match="/">
<xsl:apply-templates select="items" mode="groupingTemplate"/>
</xsl:template>
<xsl:template mode="groupingTemplate" match="items">
<xsl:for-each select="item[count(.|key('myGrouping',colors/color)[1])=1]">
<xsl:sort select="colors/color"/>
<xsl:if test="count(colors/color)>0">
<p><xsl:value-of select="colors/color"/></p>
<xsl:for-each select="key('myGrouping',colors/color)">
<xsl:sort select="name"/>
<li><xsl:value-of select="name"/></li>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:template>
我想要做的就是在XSLT 1.0組(使用Muenchian方法),所以我的html輸出將爲:
<p>black</p>
<li>Thing 2</li>
<p>green</p>
<li>Thing 1</li>
<p>purple</p>
<li>Thing 2</li>
<p>white<p>
<li>Thing 1</li>
<li>Thing 2</li>
到目前爲止我的公司德可以做到這一點,但只拿起第一個條目。換句話說,在上面的例子中我的輸出是目前:
<p>white</p>
<li>Thing 1</li>
<li>Thing 2</li>
幫助上一個解決方案,爲什麼出現這種情況的解釋將不勝感激。
謝謝! 傑夫
感謝後,這對我幫助很大。 – erichert 2013-07-11 15:31:34