gpt4 book ai didi

xml - 在单个 XPath 表达式中获取完全引用其他两个元素的元素

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

我需要获取一个节点集,其中包含正好引用另外两个元素的元素。我无法弄清楚如何在单个 XPath 表达式中执行此操作。

我的(简化的)源 XML 如下所示:

<group>
<id>1337</id>
</group>
<group>
<id>1338</id>
</group>
<member>
<id>31415</id>
<groupId>1337</groupId>
</member>
<member>
<id>31416</id>
<groupId>1337</groupId>
</member>
<member>
<id>31417</id
<groupId>1338</groupId>
</member>

现在,我想选择所有 <group>正好引用两个 <member> 的节点s,这将导致仅返回 id=1337 的组。我尝试了以下...
<xsl:variable name="groupsWithTwoMembers" select="group[count(../member[id=??]) = 2]"/>

...显然在'??'我需要在XPath表达式的开头插入我选择的组的groupId,但是我想不出办法来获取这个groupId。有谁能想到一个吗?谢谢!

最佳答案

问题是谓词过滤了以前选择的节点 每个节点作为上下文 .因此,您需要引入上下文之外的引用。

这可以通过变量/参数引用或 current() 来完成函数(导致整个 XSLT 指令的上下文节点)。

此外,在这种情况下有交叉引用,最好使用键:

<xsl:key name="kMemberByGroupId" match="member" use="groupId"/>  
...
<xsl:variable name="groupsWithTwoMembers"
select="group[count(key('kMemberByGroupId',id)) = 2]"/>

关于xml - 在单个 XPath 表达式中获取完全引用其他两个元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166770/

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