1
由於XML代碼XSLT1,Muenchian分組的,列出了分組節點在foreach循環
<z>
<f hit="1">
<g>hola1</g>
</f>
<f hit="2">
<g>hola2</g>
</f>
<f hit="3">
<g>hola1</g>
</f>
</z>
我想用xslt1有XML輸出
<z>
hola1
hola2
</z>
。然後,一個簡單的解決辦法是Muenchian分組的
<xsl:key name="thisone" match="/z/f/g" use="." />
<z>
<xsl:for-each select="/z/f[generate-id(g)=generate-id(key('thisone',g)[1])]">
<xsl:value-of select="g" />
</xsl:for-each>
</z>
但是,我申請這一個大的數據集時,系統(火狐)一直想永遠。我認爲這是由於真的很大的數據集。但是,「g」的不同值的數量真的很低。
我的問題是:有沒有辦法做Muenchian分組的的節點for-each循環?像
<xsl:for-each select="nodes_of_key('thisone')">
這將避免比較所有的「g」節點的所有值,這將永遠需要?
感謝
是的,但使用相同的比較。我的問題是,當我有一個小文件進行處理時,這是工作,但是當這個文件更大時,瀏覽器會一直處理。 所以我的問題,如果有什麼辦法可以避免比較所有的節點,只是通過被「存儲」在XSL的那些去:鍵(如果這樣的事情是可能的) – Gerard
@Gerard,這是一個密鑰 - 與比較一個值與所有其他值(O(N^2))相比,它的數量級更快(接近O(1))。 –
@Gerard,經歷「所有節點」是線性的 - 它確實很快,甚至可能達到幾百MB大小的亞秒。 –