如何在xpath中检查父节点的直接后续兄弟节点

11

我现在正在使用xpath测试一个节点的父节点的紧随其后的兄弟节点(叔叔或姑婆)。

我的xml文件看起来像这样

<MyParent>
 <A>
 <B>
 <C>
</MyParent>

<Uncle>
 ..
</Uncle>

现在我正在匹配子节点B的模板,并且我想测试我的父节点的紧随其后的兄弟节点是否被称为“Uncle”,

我尝试了以下两个XPath:

<xsl:if test="parent::MyParent/following-sibling::*[1][self::Uncle]">
     <xsl:text>we have it</xsl:text>        
</xsl:if>
并且
<xsl:if test="parent::MyParent[following-sibling::*[1][self::Uncle]]">
     <xsl:text>we have it</xsl:text>        
</xsl:if>

两者都无法运行,能否有专家帮助调试一下我哪里出错了?谢谢 :).


2
你的代码看起来是正确的。也许它没有在你想象的上下文中运行?也许你可以分享更多的脚本,这样我们就可以检查一下。 - Mike Sokolov
@_Robert:如果你的代码没有产生期望的输出,但是被接受的答案却可以,这很可能意味着你有(默认)命名空间问题。 - Dimitre Novatchev
1个回答

21

试试这个。

../following-sibling::*[position()=1][name()='Uncle'] 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接