【问题标题】:XSLT transformation datetimeXSLT 转换日期时间
【发布时间】:2026-02-14 22:45:02
【问题描述】:

我需要在 xslt 中进行日期时间转换,EffectiveDate 应该是当前日期的第二天,ExpirationDate 应该是 EffectiveDate + 一年你能帮帮我吗

输入 XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<Name>Test</Name>
</root>

输出 XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<EffectiveDate>2017-05-4 13:05:658+0200</EffectiveDate>
<ExpirationDate>2018-05-4 13:05:658+0200</ExpirationDate>
</root>

xslt 示例:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <root>
            <EffectiveDate></EffectiveDate>
            <ExpirationDate></ExpirationDate>
        </root>
    </xsl:template>
</xsl:stylesheet>

【问题讨论】:

标签: xml xslt xslt-1.0


【解决方案1】:

这取决于您的 XSLT 处理器,但您可以使用脚本解决此问题。此示例使用 C#。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
  <msxsl:script language="C#" implements-prefix="user">
    <msxsl:assembly name="System.Web" />
    <msxsl:using namespace="System.Web" />
    <![CDATA[
          public string GetDate(string DateFormat)
          {
            return DateTime.Now.ToString(DateFormat);
          }

          public string GetExpirationDate(string DateFormat)
          {
            return DateTime.Now.AddYears(1).ToString(DateFormat);
          }

        ]]>
  </msxsl:script>

  <xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="UTF-8" />

  <xsl:template match="/">
    <root>
      <EffectiveDate>
        <xsl:value-of select="user:GetDate('dddd, dd MMMM yyyy')"/>
      </EffectiveDate>
      <ExpirationDate>
        <xsl:value-of select="user:GetExpirationDate('dddd, dd MMMM yyyy')"/>
      </ExpirationDate>
    </root>
  </xsl:template>

</xsl:stylesheet>

【讨论】: