我有一个基本的xml文件,如:
<base>
...
<s l="something" />
<s l="somethingelse" />
<s>
...
</base>
在我的xslt中,我使用每个document()
上的<s>
函数来提取另一个文件结构如下:
<otherbase>
...
<r l="something" />
<r l="somethingelse" />
<r l="evenmore" />
...
</otherbase>
在基本文件中的<s>
,我正在尝试选择<r>
与任何 @l
不匹配的所有preceding-sibling::*/@l
当前<s>
。因此,对于没有属性的第三个<s>
,它将匹配<r l="evenmore" />
等。
类似的东西:
<xsl:for-each select="document('mydoc.xml')//r[@l != preceding-sibling::*/@l]">
...
</xsl:for-each>
如果我在我认为的<r>
属性中进行匹配,会起作用,但我需要current()
之前的兄弟姐妹...我还没有能够找出语法。
不幸的是,我的环境中没有2.0处理器,卡在xslt 1.0中。
答案 0 :(得分:1)
如果要引用谓词中的当前current()
节点,则需要使用s
函数。尝试:
select="document('mydoc.xml')//r[not(@l = current()/preceding-sibling::s/@l)]"
另请注意$a != $b
和not($a = $b)
之间的区别。