在 XSLT 中转换日期时间
Converting Date Time in XSLT
我正在尝试使用 xslt 将日期转换为 yyyy/mm/dd 格式。
"dateOfBirth": "</xsl:text><xsl:value-of select="format-date(dateOfBirth, '[Y0001]/[M01]/[D01]')" /><xsl:text>",
但是我收到了这个错误
无法使用提供的 XML/XSL 输入生成 XML 文档。无效日期“01/21/1950”(当年份超过 4 位时,不允许有前导零)
我的出生日期值始终采用 mm-dd-yyyy 格式。
谁能告诉我我做错了什么?我在Whosebug上搜索了各种答案,主要是字符串替换。由于我的 xml 中有大约 10 个日期,是否有任何一种线性方法可以这样做,或者是否有任何内置函数可以这样做。
感谢任何帮助。
谢谢!
如果您在 Saxon 9 中使用 XSLT 2 或 3,您始终可以使用 xsl:function
编写自己的 XSLT 函数,例如
$input => replace('([0-9]{2})/([0-9]{2})/([0-9]{4})', '--') => xs:date() => format-date('[Y0001]/[M01]/[D01]')
(XSLT 3) 或
format-date(xs:date(replace($input, '([0-9]{2})/([0-9]{2})/([0-9]{4})', '--')), '[Y0001]/[M01]/[D01]')
(XSLT 2 和 3)
我正在尝试使用 xslt 将日期转换为 yyyy/mm/dd 格式。
"dateOfBirth": "</xsl:text><xsl:value-of select="format-date(dateOfBirth, '[Y0001]/[M01]/[D01]')" /><xsl:text>",
但是我收到了这个错误
无法使用提供的 XML/XSL 输入生成 XML 文档。无效日期“01/21/1950”(当年份超过 4 位时,不允许有前导零)
我的出生日期值始终采用 mm-dd-yyyy 格式。
谁能告诉我我做错了什么?我在Whosebug上搜索了各种答案,主要是字符串替换。由于我的 xml 中有大约 10 个日期,是否有任何一种线性方法可以这样做,或者是否有任何内置函数可以这样做。 感谢任何帮助。
谢谢!
如果您在 Saxon 9 中使用 XSLT 2 或 3,您始终可以使用 xsl:function
编写自己的 XSLT 函数,例如
$input => replace('([0-9]{2})/([0-9]{2})/([0-9]{4})', '--') => xs:date() => format-date('[Y0001]/[M01]/[D01]')
(XSLT 3) 或
format-date(xs:date(replace($input, '([0-9]{2})/([0-9]{2})/([0-9]{4})', '--')), '[Y0001]/[M01]/[D01]')
(XSLT 2 和 3)