gpt4 book ai didi

XSLT 自定义排序

转载 作者:行者123 更新时间:2023-12-01 06:19:24 35 4
gpt4 key购买 nike

是否可以在 XSLT 中按字母顺序排序,其中 5 个项目为“首选”。

即给出

<teams>
<team id="142" name="Scotland" />
<team id="110" name="Liverpool" />
<team id="13" name="Manchester United" />
<team id="123" name="England" />
<team id="84" name="Chelsea" />
<team id="295" name="Wales" />
<team id="49" name="Arsenal" />
<team id="126" name="Northern Ireland" />
<team id="121" name="Republic of Ireland" />
<team id="42" name="Manchester City" />
<team id="298" name="Tottenham Hotspur" />
<team id="299" name="Bolton" />
</teams>

我要求国家队先按一定的顺序排列,其余的按字母顺序排列:
<teams>
<team id="123" name="England" />
<team id="126" name="Northern Ireland" />
<team id="121" name="Republic of Ireland" />
<team id="142" name="Scotland" />
<team id="295" name="Wales" />
<team id="49" name="Arsenal" />
<team id="299" name="Bolton" />
<team id="84" name="Chelsea" />
<team id="110" name="Liverpool" />
<team id="42" name="Manchester City" />
<team id="13" name="Manchester United" />
<team id="298" name="Tottenham Hotspur" />
</teams>

我一直在努力,但失败了。

是否有一种巧妙的方法可以做到这一点,或者您是否必须单独对国家队进行排序,然后再排除所有国家队?

最佳答案

蒂姆 C 已经给出了一个很好的答案,但也许在你的情况下一种更简单的方法就足够了。您可以简单地指定两个 xsl:sort条件:第一个将按首选/不首选项目排序,第二个按名称字母顺序排序:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/teams">
<teams>
<xsl:for-each select="team">
<xsl:sort select="not(@name = 'England' or @name='Northern Ireland'
or @name='Republic of Ireland'
or @name='Scotland' or @name='Wales')"
data-type="number"/>
<xsl:sort select="@name"/>
<team>
<xsl:value-of select="@name"/>
</team>
</xsl:for-each>
</teams>
</xsl:template>
</xsl:stylesheet>

请注意,您必须使用 not() 来反转第一个条件.原因是表达式的 bool 结果转换为数字(0 为假,1 为真),因此将首先列出评估为“假”的项目。

关于XSLT 自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1287651/

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