使用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来做到这一点
翼
答案 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)]