2013-03-29 135 views
0

我在.NET的XSLT中使用Muenchian分組來按日期分組指示符元素。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/XSLT與更多的元素工作的小XML文檔完美的罰款。

奇怪的是,當我將文本'日期'更改爲'foobar'時,它就起作用了。

這是否有可能文檔中某處其他某些「日期」元素正在影響我的代碼?

+0

更具體的密鑰,或者你有其他的'indicator'元素在其他地方?嘗試使鑰匙的「匹配」更具體,例如'match =「financials/indicator」' –

+0

謝謝,幫助 – jlp

+0

太好了。我已經將我的評論做成了正確的答案。 –

回答

1

其他indicator元素比其他date元素更可能成爲問題。與Muenchian分組的最根本的區別是,key應該只匹配您試圖組的元素,所以儘量爲

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