XSLT Muenchian分组 - 奇怪的行为

时间:2013-03-29 10:56:13

标签: .net xslt

我在.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'元素是否可能影响我的代码?

1 个答案:

答案 0 :(得分:1)

其他indicator元素比其他date元素更容易出问题。 Muenchian分组的基本要点是key应该只匹配您尝试分组的元素,因此请尝试使用更具体的键,例如

<xsl:key name="financialsByDate"
   match="financials/indicator" use="date" />