我想知道是否可以先对一些元素进行排序并将它们(已排序)存储在变量中。我需要引用它们认为 XSLT 这就是为什么我想将它们存储在变量中。
我试图执行以下操作,但似乎不起作用
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="deposits">
<xsl:for-each select="/BookingCostings/MultiDeposits">
<xsl:sort select="substring(@DepositDate, 1, 4)" />
<xsl:sort select="substring(@DepositDate, 6, 2)" />
<xsl:sort select="substring(@DepositDate, 9, 2)" />
</xsl:for-each>
</xsl:variable>
我试图对元素进行排序@DepositDate
以“yyyy-mm-dd”格式并将它们全部存储在$deposits
多变的。这样以后我就可以使用它们来访问它们$deposits[1]
.
我将不胜感激任何帮助和提示!
多谢!
- Using
XSLT version 2.0
你可以用perform-sort
并告诉你的变量是一系列的类型MultiDeposits
使用as keyword
(as="element(MultiDeposits)+
")
- 由于您的数据已经为 yyyy-mm-dd 您可以避免使用子字符串来获取日期的每个部分并直接在字段上使用排序
使用此示例 xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<BookingCostings>
<MultiDeposits depositDate="2001-10-09">1</MultiDeposits>
<MultiDeposits depositDate="1999-10-09">2</MultiDeposits>
<MultiDeposits depositDate="2010-08-09">3</MultiDeposits>
<MultiDeposits depositDate="2010-07-09">4</MultiDeposits>
<MultiDeposits depositDate="1998-01-01">5</MultiDeposits>
</BookingCostings>
并使用 XSLT 2.0 版表:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:variable name="deposits" as="element(MultiDeposits)+">
<xsl:perform-sort select="BookingCostings/MultiDeposits">
<xsl:sort select="@depositDate"/>
</xsl:perform-sort>
</xsl:variable>
first date:<xsl:value-of select="$deposits[1]/@depositDate"/>,
last date:<xsl:value-of select="$deposits[last()]/@depositDate"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
输出将是:
first date:1998-01-01, last date:2010-08-09
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)