<document>
<para>
<heading id="1" type="new" level="1" />
<span />
<heading id="2" type="new" level="2" />
<span />
</para>
<para>
<heading id="3" type="new" level="1" />
<span />
<heading id="4" type="new" level="2" />
<span />
</para>
<para>
<heading id="5" type="old" level="2" />
<span />
</para>
<para>
<heading id="6" type="old" level="2" />
<span />
</para>
<para>
<heading id="7" type="old" level="2" />
<span />
</para>
<para>
<heading id="8" type="old" level="2" />
<span />
</para>
<para>
<span />
</para>
</document>
您好,
我在Javascript中逐个节点地解析上述XML。假设我目前处于&#34;标题id =&#39; 8&#39;&#34;如何节点,我将如何向后看并找到第一个将其级别设置为&#34; 2&#34; (与我当前正在解析的节点上的级别相同)并键入设置为&#34; new&#34;使用XPath表达式?
因此,在上面的例子中,id =&#34; 4&#34;必须选择。
谢谢!
答案 0 :(得分:0)
您可以使用preceding
轴并使用index仅返回最近的前一个元素:
preceding::*[@level='2' and @type='new'][1]
<强> xpathtester demo
强>
输出
<heading id="4" level="2" type="new"/>
在演示中,我使用//*[@id='8']
首先选择带id=8
的元素,模拟上下文元素,然后使用上面提到的XPath继续选择目标元素。
答案 1 :(得分:0)
其实我以为你想要这个。
我如何向后看并找到第一个节点,其级别设置为与我正在解析的节点上的级别相同,并使用类型设置为
new
XPath表达式?
哦,好了,留待这里以备将来参考......
[@type='new' and @level=current()/@level]