如何返回xquery中的所有最大值?我使用了max(),但它只给了我一个!感谢。
<id>a</id>
<average>5</average>
<id>b</id>
<average>5</average>
<id>c</id>
<average>5</average>
<id>d</id>
<average>4</average>
<id>e</id>
<average>1</average>
我希望我的结果是:
<id>a</id>
<id>b</id>
<id>c</id>
谢谢!
答案 0 :(得分:1)
使用强>:
/*/id[following-sibling::*[1]/number() eq max(/*/average)]
以上是正确的XQuery和正确的XPath 2.0解决方案。
使用Saxon EE 9.3.04 XQuery进行验证:
当上述XQUery应用于以下XML文档(提供的片段,包装到单个顶部元素中以使其成为格式良好的XML文档)时:
<t>
<id>a</id>
<average>5</average>
<id>b</id>
<average>5</average>
<id>c</id>
<average>5</average>
<id>d</id>
<average>4</average>
<id>e</id>
<average>1</average>
</t>
产生了想要的正确结果:
<?xml version="1.0" encoding="UTF-8"?><id>a</id><id>b</id><id>c</id>
在同一XML文档上应用此XSLT 2.0转换(使用Saxon 9.1.05)(上图):
<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=
"/*/id[following-sibling::*[1]/number() eq max(/*/average)]"/>
</xsl:template>
</xsl:stylesheet>
再次生成相同的正确结果:
<id>a</id>
<id>b</id>
<id>c</id>