【发布时间】:2020-10-01 22:02:13
【问题描述】:
我有这个脚本来计算产品的一些值。它工作完美。如何使用order="descending" 或<xsl:sort>
XML
<ITEM>
<NAME>Lahůdková cibulka</NAME>
<CODE>89</CODE>
<AMOUNT>3</AMOUNT>
</ITEM>
<ITEM>
<NAME>Rané brambory 1 kg</NAME>
<CODE>4</CODE>
<AMOUNT>15</AMOUNT>
</ITEM>
<ITEM>
<NAME>Kapusta</NAME>
<CODE>93</CODE>
<AMOUNT>30</AMOUNT>
</ITEM>
<ITEM>
<NAME>Bílé zelí</NAME>
<CODE>20</CODE>
<AMOUNT>10</AMOUNT>
</ITEM>
我想按名称按字母顺序排序,如下所示:
首选 XML
<ITEM>
<NAME>Bílé zelí</NAME>
<CODE>20</CODE>
<AMOUNT>10</AMOUNT>
</ITEM>
<ITEM>
<NAME>Kapusta</NAME>
<CODE>93</CODE>
<AMOUNT>30</AMOUNT>
<ITEM>
<NAME>Lahůdková cibulka</NAME>
<CODE>89</CODE>
<AMOUNT>3</AMOUNT>
</ITEM>
<ITEM>
<NAME>Rané brambory 1 kg</NAME>
<CODE>4</CODE>
<AMOUNT>15</AMOUNT>
</ITEM>
我使用这个 XSLT。排序参数放在哪里?
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="itemkey" match="ITEM" use="concat(NAME, CODE)"/>
<xsl:template match="/ORDERS">
<xsl:copy>
<xsl:apply-templates select="descendant::ITEM[generate-id() = generate-id(key('itemkey', concat(NAME, CODE))[1])]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ITEM">
<xsl:copy>
<xsl:variable name="curr-group" select="key('itemkey', concat(NAME, CODE))" />
<xsl:copy-of select="CODE|NAME"/>
<AMOUNT>
<xsl:value-of select="sum($curr-group/AMOUNT)"/>
</AMOUNT>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
非常感谢
【问题讨论】: