gpt4 book ai didi

date - 在 XSLT 中转换日期时间格式

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

我在这种格式的 XML 文件中的字段中有一个日期值:
<Date value="4/1/2013 5:13:41 PM"/>
我想把它转换成标准的 XSD 格式:
2013-04-01T17:13:41.000Z
我怎样才能在我的 XSL 转换中做到这一点?我可以使用 1.0 和 2.0 样式表版本。

最佳答案

所以......我很无聊,之前没有玩过xsl:analyze-string。这是一个基于正则表达式的解决方案:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">

<xsl:template match="/item/date">
<xsl:analyze-string select="@value" regex="([0-9]+)/([0-9]+)/([0-9]+) ([0-9]+):([0-9]+):([0-9]+) (PM|AM)">

<xsl:matching-substring>
<xsl:variable name="month" select="number(regex-group(1))"/>
<xsl:variable name="day" select="number(regex-group(2))"/>
<xsl:variable name="year" select="number(regex-group(3))"/>
<xsl:variable name="hours">
<xsl:choose>
<xsl:when test="regex-group(7) = 'PM'">
<xsl:value-of select="12 + number(regex-group(4))"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="number(regex-group(4))"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="minutes" select="number(regex-group(5))"/>
<xsl:variable name="seconds" select="number(regex-group(6))"/>
<xsl:variable name="dateTime" select="xs:dateTime( concat($year, '-', format-number($month, '00'), '-', format-number($day, '00'), 'T', format-number($hours, '00'), ':', format-number($minutes, '00'), ':', format-number($seconds, '00'), 'Z') )" />

<reformattedDate>
<xsl:value-of select="$dateTime"/>
</reformattedDate>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>

我对这样的测试 xml 文件运行了这个:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<item>
<date value="4/1/2013 5:13:41 PM"/>
</item>

输出是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<reformattedDate xmlns:xs="http://www.w3.org/2001/XMLSchema">2013-04-01T17:13:41Z</reformattedDate>

如果你想更精确地格式化输出,就像已经推荐的那样,你可以使用 format-date function

关于date - 在 XSLT 中转换日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079954/

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