gpt4 book ai didi

xslt - 如何对元素进行排序并将它们存储在变量中,XSLT

转载 作者:行者123 更新时间:2023-12-01 06:46:38 25 4
gpt4 key购买 nike

我想知道是否可以先对一些元素进行排序并将它们(已经排序)存储在一个变量中。我需要引用他们认为 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] 访问它们。

我将不胜感激任何帮助和提示!

非常感谢!

最佳答案

  1. 使用 XSLT version 2.0 您可以使用 perform-sort 并告诉您的变量是 MultiDeposits 序列的类型,使用 as 关键字 (as="element(MultiDeposits)+")
  2. 由于您的数据已经是 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

关于xslt - 如何对元素进行排序并将它们存储在变量中,XSLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272123/

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