gpt4 book ai didi

xml - 使用 XSL 按 RFC-822 日期格式对 XML 进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 02:36:14 27 4
gpt4 key购买 nike

有谁知道在 XSL 中进行这种排序的方法吗?

这是我目前所拥有的,但它只按天排序并忽略日期的其余部分。

      <xsl:apply-templates select="item">
<xsl:sort select="pubDate" data-type="text" order="descending"/>
</xsl:apply-templates>

最佳答案

感谢大家的快速回复。让我朝着正确的方向前进。设法解决了!找到一个有用的链接 http://blog.mastykarz.nl/how-to-do-it-rss-aggregation-merging-multiple-xml-files-using-xslt/

我使用的是 XSLT 2.0 版。只是一个使用变量替换 MMM 月份并将日期子字符串化的案例。

解决方案

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="Months" select="'Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec'"/>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>

<xsl:template match="channel">
<xsl:copy>
<xsl:apply-templates select="@*|node()[not(preceding-sibling::item) and not(self::item)]"/>
<xsl:apply-templates select="item">
<!-- year -->
<xsl:sort select="substring(pubDate, 13, 4)" order="descending" data-type="number"/>
<!-- month -->
<xsl:sort select="string-length(substring-before($Months, substring(pubDate, 9, 3)))" order="descending" data-type="number"/>
<!-- day -->
<xsl:sort select="substring(pubDate, 6, 2)" order="descending" data-type="number"/>
<!-- hour -->
<xsl:sort select="substring(pubDate, 18, 2)" order="descending" data-type="number"/>

</xsl:apply-templates>
<xsl:apply-templates select="@*|node()[not(following-sibling::item) and not(self::item)]"/>
</xsl:copy>
</xsl:template>

关于xml - 使用 XSL 按 RFC-822 日期格式对 XML 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15012616/

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