如何在XSLT 2.0中声明持续时间变量?

时间:2013-09-25 18:19:29

标签: xml xslt xslt-2.0 saxon

我正在使用Saxon库来应用一些XSLT 2.0转换。

我正在尝试添加一些代码,这些代码将打印两个给定日期之间的所有日期。

为此,我试图找出使用持续时间变量的方法。具体来说,我想拍摄第一个日期,添加一天,打印,然后重复,直到第一个日期一直增加到第二个日期。

我在XSLT中写了以下内容:

  <xsl:template name="get_rundatesNode">
    <xsl:param name="startDate" />
    <xsl:param name="endDate" />
    <xsl:variable name="oneDay" select='xs:dayTimeDuration("P1D")' />

  </xsl:template>

我看到撒克逊的以下错误:

  

错误/ xsl:stylesheet / xsl:template [2] / xsl:variable [1] XPST0081   {xs:dayTimeDuration(“P1D”}中第-1行的char 0处的XPath语法错误   :       未声明的名称空间前缀{xs}警告:at / xsl:stylesheet / xsl:template [2] / xsl:variable [1] SXWN9001:变量   没有以下兄弟说明没有效果

我想我可能使用了错误的语法,我对文档感到困惑。我无法找到正确完成此操作的示例。请让我知道如何使它工作。

1 个答案:

答案 0 :(得分:2)

您需要的只是样式表顶部的声明,它将xs前缀绑定到W3C架构名称空间,可能还有一个指令,用于修剪名称空间复制到结果树:

            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            exclude-result-prefixes="xs"

警告只是告诉您尚未完成向模板添加代码,因此该变量不会为您做任何事情。