这既是一个 XPath 2.0 表达式,也是一个 XQuery,用于选择想要的元素:
/*/basket[egg[max(/*/basket/count(egg))]]
基于 XSLT 2.0 的验证:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:sequence select="/*/basket[egg[max(/*/basket/count(egg))]]"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于以下 XML 文档(您提供的 XML 片段,包装到单个顶部元素中以成为格式良好的 XML 文档)时:
<t>
<basket name="1">
<egg></egg>
<egg></egg>
</basket>
<basket name="2">
<egg></egg>
</basket>
<basket name="3">
<egg></egg>
<egg></egg>
<egg></egg>
<egg></egg>
</basket>
</t>
计算 XPath 表达式并将计算结果复制到输出:
<basket name="3">
<egg/>
<egg/>
<egg/>
<egg/>
</basket>
请注意:
没有“另一个节点出现次数最多的节点”这样的东西。
事实上,根据实际的 XML 文档,可能有许多元素包含相同的最大数量的其他元素。
如果您只想获得一个这样的元素,请按文档顺序说第一个,然后使用:
/*/basket[egg[max(/*/basket/count(egg))]][1]