xslt - 在xslt中找到2个日期之间的差异

标签 xslt xslt-2.0 xpath-2.0

在xslt中找到2个日期之间的天差有没有那么费解的方法?如果是这样,您能为我指明正确的方向。我收到的日期格式为mm/dd/yyyy。

最佳答案

针对此使用XSLT 2.0(XPath 2.0):

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:my="my:my">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <xsl:variable name="vDate1"
        select="my:dateFromUsDate(/*/d1)"/>
     <xsl:variable name="vDate2"
        select="my:dateFromUsDate(/*/d2)"/>

   <xsl:sequence select=
   "($vDate1 - $vDate2) div xs:dayTimeDuration('P1D')"/>
 </xsl:template>

 <xsl:function name="my:dateFromUsDate" as="xs:date">
  <xsl:param name="pUsDate" as="xs:string"/>

  <xsl:sequence select=
  "xs:date(concat(substring($pUsDate,7,4),
                  '-',
                  substring($pUsDate,1,2),
                  '-',
                  substring($pUsDate,4,2)
                 )
          )
  "/>
 </xsl:function>
</xsl:stylesheet>

当此转换应用于以下XML文档时,为:
<t>
 <d1>04/06/2011</d1>
 <d2>01/11/2010</d2>
</t>

产生想要的正确结果(相差450天):
450

关于xslt - 在xslt中找到2个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544762/

相关文章:

xml - 如何使用 XPath 2.0 识别数字序列中的重复值?

xml - 使用 XSLT 将 XML 标签转换为任意位置的属性

python - 将撒克逊与 python 一起使用

xml - 如何从字符串中过滤状态缩写

xslt - 如何在 Tomcat 中设置 XSLT 2.0?

xslt - 如何根据变量或参数查找元素是否具有祖先(XPath 2.0)

xml - Xquery:获取前一周的天数

xml - XSL 在 for-each 中按属性查找元素

XSLT:在元素副本内应用模板

xml - XSD 到 XForms 和 XForms 到 XSD 的转换