<xsl:for-each select="//filenames">
<xsl:variable name="current_filename" select="."/>
<xsl:for-each select="
document(.)//someNode[not(
. = document($current_filename/preceding-sibling::node())//someNode
)]
">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:for-each>
在上面的代码之间分选(XSLT 1.0),我有一系列的文档(//filenames
),我想打开并选择一些节点从,除非该节点的值等于值在所有前面的文档中都是同一个节点。XSLT 1.0:多个文档
为了得到这个工作,我必须嵌套两个for-each循环,因为我必须将当前文档名称保存在一个变量中以选择其前面的兄弟($current_filename/preceding-sibling
)。
这一切都有效,但由于我有两个嵌套循环,我无法从所有文档中对结果节点进行排序,就好像它是一个大的序列。现在,如果我在第一个for-each中插入排序规则,那么它将对每个文档的节点进行排序。
有没有人知道一种方法来实现这种排序吗?也许有一种方法可以避免使用变量,从而避免每个循环的嵌套?
谢谢!但我不确定是否允许我使用这样的扩展名。没有它的解决方案的任何想法? – user125661 2009-06-19 11:25:09