在xpath中选择两个任意标记之间的节点

时间:2014-05-20 16:45:38

标签: xml xpath

我需要提取XPath 1.0中两个任意标记之间存在的所有节点。让我解释一下,从标签开始,我将所有节点都带到特定标签,该标签可以是第一个标签的子节点。 使用下面的例子,我希望澄清我的问题。

 <div id="A">
    <div id="B">
        <div class="C">
            <div class="D">
                <div class="E"/>ev  
                <img src="xxx"/>ev
            </div>
            <div class="F">
                <div class="G"/>
                <img src="yyyy"/>ev
            </div>
            <div class="H">
                <div class="I"/>
                <img src="zzz"/>ev
            </div>
            <div class="L"/>
        </div>
    </div>
</div>

我想选择id =“B”的标签和class =“H”的标签之间的所有节点(不包括节点类=“H”)。 我做了一些测试,但我找不到解决方案。例如,我试过像/ div / div // [.// = div [@ class ='H']]之类的东西,但它不起作用。

1 个答案:

答案 0 :(得分:0)

我发现唯一可能的解决方案是在给定XPath的语义的情况下获取节点D和F.因此,如果特别要求我获取id = B和class = H之间的节点,我可以写

$ specification = / div / div

两个职位的下降

$ start = $ specification / div / div

最后问节点H

$ expression = $ start / following-sibling :: [following :: [@ class ='H']

感谢大家的建议