XPath获取下一个项目

我刚开始使用XPATH,而且我有一些关于它的function的问题/它是否可以做我想做的事情。 我在我的XML文档中有以下结构:

<root> <top id="1"> <item id="1"> <sub id="A"></sub> <sub id="B"></sub> <item> <item id="2"> <sub id="A"></sub> <sub id="B"></sub> <item> </top> <top id="2"> <item id="1"> <sub id="A"></sub> <sub id="B"></sub> <item> <item id="2"> <sub id="A"></sub> <sub id="B"></sub> <sub id="C"></sub> <item> </top> </root> 

我有存储在一个variables中的CurrentTop,CurrentItem和CurrentSub。

 var CurrentTop = "1", CurrentItem = "1", CurrentSub = "A"; 

使用XPath查询,我希望能够select下一个Sub,不pipe它在文档中的位置,如果下一个Sub与CurrentItem不在同一个Item中,我也需要获取这些信息。 Top也一样

我正在使用Javascript。 我知道这可能需要在多个查询中完成。

例如:下一个项目将(按顺序):

 TOP ITEM SUB 1 1 A 1 1 B 1 2 A 1 2 B 2 1 A 2 1 B 2 2 A 2 2 B 2 2 C 

我愿意接受关于如何改进XML文档格式的build议。

如果有帮助,我也使用NodeJS,XPath模块和NPM上提供的XMLDOM模块。

谢谢

我不知道node.js,但在XPath中,您可以使用following轴来获取当前上下文元素之后的元素,而不pipe目标元素是否在同一个父元素中。 例如,要获取当前上下文元素之后的最近的sub元素,可以使用以下expression式:

 following::sub[1] 

following-sibling轴的对比,只能find同一父级中的当前上下文元素之后的元素。