xml - 如何在 XSLT 2.0 中减去 1 天(计算前一天)?

标签 xml xslt xslt-2.0

有人可以使用 XSLT 2.0 帮助计算 xsd:dateTime 类型的给定日期前的一天吗?

示例输入:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-29T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>

示例输出:

<?xml version="1.0" encoding="UTF-8"?>
<objects>
<LastRunTime__c>
<Last_Run_Time__c>2015-01-28T19:55:15.846Z</Last_Run_Time__c>
</LastRunTime__c>
</objects>

我尝试了一些方法,但未能得到我想要的:

<xsl:template match="/">
<xsl:variable name="vToday" select="/*:objects/*:LastRunTime__c/*:Last_Run_Time__c"/>
Today is: <xsl:sequence select="$vToday"/>
1 day ago it was: <xsl:sequence select="$vToday -1*xs:dayTimeDuration('P1D')"/>
</xsl:template>
</xsl:stylesheet>

最佳答案

给定您的输入 XML,此 XSLT 转换:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:variable name="vToday" select="/objects/LastRunTime__c/Last_Run_Time__c" 
                  as="xsd:dateTime"/>
    Today is: <xsl:value-of select="$vToday"/>
    1 day ago it was: <xsl:value-of select="$vToday - xsd:dayTimeDuration('P1D')"/>
  </xsl:template>
</xsl:stylesheet>

将产生所需的输出:

    Today is: 2015-01-29T19:55:15.846Z
    1 day ago it was: 2015-01-28T19:55:15.846Z

关于xml - 如何在 XSLT 2.0 中减去 1 天(计算前一天)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225257/

相关文章:

java - 在 Android 中以位图、jpeg 或 png 图像形式查看 PowerPoint XML

java - 如何在 1 个 XSL 中加入 2 个 XML

c - TinyXML 和保留 HTML 实体

java - 大数字的 XSLT format-number() 函数问题

regex - XSLT - 获取 text() 节点的数值

android - 找不到属性 'menu' 的资源标识符

html - 使用 XSL 对 XML URL 中的数据元素进行计数并以 html 格式打印

java - 与 xml+xslt 完美搭配的最佳 Java Web 应用程序框架是什么?

xml - 如何使用 XSL 选择两个元素之间的所有文本节点?

xml - 选择并在XSLT中附加当前节点的文本值?