我在.NET中的XSLT中使用Muenchian分组按日期对指标元素进行分组。
我的XML和XSLT片段:
<financials>
<indicator>
<date>2010</date>
<labeltype>2</labeltype>
</indicator>
<indicator>
<date>2009</date>
<labeltype>2</labeltype>
</indicator>
<indicator>
<date>2008</date>
<labeltype>2</labeltype>
</indicator>
...
</financials>
<xsl:key name="financialsByDate" match="indicator" use="date" />
<xsl:template match="financials">
<xsl:for-each select="indicator[generate-id(.) = generate-id(key('financialsByDate', date)[1])]">
<financial>
...
</financial>
</xsl:for-each>
</xsl:template>
这段代码在我提取用于测试的小型XML文档中完美无缺,但在具有更多元素的原始XML / XSLT中根本不起作用。
奇怪的是,当我将'date'文本更改为'foobar'时,它就可以了。
docuemnt中其他地方的某些其他'date'元素是否可能影响我的代码?
答案 0 :(得分:1)
其他indicator
元素比其他date
元素更容易出问题。 Muenchian分组的基本要点是key
应该只匹配您尝试分组的元素,因此请尝试使用更具体的键,例如
<xsl:key name="financialsByDate"
match="financials/indicator" use="date" />