【发布时间】:2010-11-12 16:25:40
【问题描述】:
我需要获取一个节点集,其中包含恰好引用其他两个元素的元素。我不知道如何在单个 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>
现在,我想选择恰好引用两个 <member>s 的所有 <group> 节点,这将导致仅返回 id=1337 的组。我尝试了以下...
<xsl:variable name="groupsWithTwoMembers" select="group[count(../member[id=??]) = 2]"/>
...显然在'??'我需要在 XPath 表达式的开头插入我选择的组的 groupId,但我想不出一种方法来获得这个 groupId。外面的人能想到一个吗?谢谢!
【问题讨论】:
-
好问题,+1。除了@Alejandro 的好答案,请参阅我对 XPath2.0 单线解决方案的回答。 :)
-
您好 Dimitre,感谢您的赞许。您的 XPath2.0 解决方案看起来也不错,但不幸的是,由于我们项目的软件架构,我坚持使用 XPath1.0。无论如何感谢您的意见!