gpt4 book ai didi

xml - 使用 Xpath 2.0 选择具有特定属性的唯一元素列表的 XPath

转载 作者:行者123 更新时间:2023-12-03 17:00:03 24 4
gpt4 key购买 nike

我在获取也具有特定属性的唯一元素列表(基于名称)时遇到了一些麻烦。我可以获得其中任何一个的列表,但组合列表让我感到困惑。我的 xml 看起来像这样:

<global>
<discipline name="tracks">
<group name="Normal"/>
<group name="Gloss" PackGroup="Diffuse"/>
<group name="Mask"/>
<group name="Diffuse"/>
<group name="Tint" PackGroup="Gloss"/>
</discipline>
<discipline name="trains">
<group name="Mask"/>
<group name="Diffuse" PackGroup="Mask"/>
</discipline>
</global>

我可以使用这个 xpath 查询轻松地获得不同的组元素列表:

/configuration/global/discipline/group[not(@name = following::group/@name)]

获取定义了 PackGroup 属性的组元素列表也很简单:

/configuration/global/discipline/group[@PackGroup]

但是,我似乎无法获得定义了 PackGroup 属性的元素的唯一列表。我试过这个:

/configuration/global/discipline/group[not(@name = following::group/@name) and @PackGroup]
/configuration/global/discipline/group[not(@name = following::group/@name) and contains(@PackGroup, '*')]

不返回任何元素

/configuration/global/discipline/group[not(@name = following::group/@name) and contains(@PackGroup, '')]

仅返回唯一列表。有谁知道正确的 xpath 查询是什么来获得我正在寻找的东西?

(我正在使用 C# 和 xpath 2.0 以防万一)

谢谢!

最佳答案

一个更有效的解决方案(O(n log n) 而不是 O(n*n))是

for $n in distinct-values(//group[@Packgroup]/@name) 
return (//group[@Packgroup][@name=$n])[1]

关于xml - 使用 Xpath 2.0 选择具有特定属性的唯一元素列表的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com