xpath 1.0个不同的项目

时间:2016-04-14 10:17:11

标签: xml xpath

使用xpath 1.0

我有以下xpath

/root/Locale/Client[@id=1234]/Category/Category/Category

它是一个大型的xml doc。

每个类别都是这样的:

<Category 
    id="7211" 
    parentID="5103" 
    level="4" 
    creatorID="1" 
    sortOrder="2" 
    createDate="2014-09-12T09:19:17" 
    updateDate="2016-03-30T13:42:01" 
    nodeName="All" 
    urlName="all" 
    path="-1,1719,3292,5103,7211" 
    isDoc="" 
    nodeType="1071" 
    creatorName="Suhel Ahmed" 
    writerName="Suhel Ahmed" 
    writerID="1" 
    template="0" 
    nodeTypeAlias="Category">

基本上我需要在第3级别的类别中选择不同的类别,其中distinct-ness基于nodeName。

我知道在xpath 2.0中我们有不同的值而不是xpath 1.有没有办法可以用xpath 1.0来做到这一点

1 个答案:

答案 0 :(得分:1)

实际上这个问题对我来说还不清楚。首先,我假设您要过滤评论中提到的@level=6

现在,假设要检查重复的所有Category元素共享同一个父元素,您可以使用preceding-sibling如下所示返回不同的Category元素。如果源XML中存在重复的nodeName属性,则只返回具有该Category值的第一个nodeName元素:

//Category[@level='6' and not(@nodeName = preceding-sibling::Category[@level='6']/@nodeName)]

否则,如果Category个元素可能不共享同一个父级,请尝试使用preceding轴替换preceding-sibling

//Category[@level='6' and not(@nodeName = preceding::Category[@level='6']/@nodeName)]