如何在XSL中计算日期值......?

时间:2012-05-17 14:57:46

标签: xml

我是XSLT / XML的新手...尝试使用日期计算进行XSL转换,但是当我使用XSLT在线工具进行测试时,我得不到任何结果,例如http://www.xsltcake.com/

这是XML:

<record>
<field name="Identifier">00000ZG7</field>
<field name="ContestNumber">00000ZG7</field>
<field name="CareerSiteNo3">spool</field>
<field name="OpeningDate">2012-05-14</field>
<field name="EndDate">2012-05-14T10:05:00-04:00</field>
<field name="HotJobFlag">false</field>
</record>

这是XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="http://www.abc.com/ws/integration/toolkit/2005/07" xmlns:fct="http://www.abc.com/xsl_functions" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output method="text" encoding="UTF-8"/>
    <xsl:param name="delimiter">,</xsl:param>
    <xsl:template match="ns:record">
        <xsl:value-of select="ns:field[@name='Identifier']"/>
        <xsl:value-of select="$delimiter"/>
        <xsl:value-of select="ns:field[@name='ContestNumber']"/>
        <xsl:value-of select="$delimiter"/>
        <xsl:value-of select="ns:field[@name='CareerSiteNo3']"/>
        <xsl:value-of select="$delimiter"/>
        <xsl:value-of select="ns:field[@name='OpeningDate']"/>
        <xsl:value-of select="$delimiter"/>
        <xsl:variable name="End2Days" select="ns:field[@name='EndDate']"/>
        <xsl:choose>
            <xsl:when test="ns:field[@name='CareerSiteNo3']='spool'">
                <xsl:value-of select="(xs:date($End2Days)+((xs:dayTimeDuration('P2D'))"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="(xs:date($End2Days)+((xs:dayTimeDuration('P14D'))"/>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:value-of select="$delimiter"/>
        <xsl:value-of select="ns:field[@name='HotJobFlag']"/>
        <xsl:text>&#10;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

如果我取出<xsl:choose>部分,我可以得到一行结果。但是如果我包含了选择节点,我就没有结果。基本上我想做的是当“CareerSiteNo3”是“假脱机”时,只需从结束日期值增加2天,否则添加14天。

请告诉我我做错了什么......非常感谢。

1 个答案:

答案 0 :(得分:0)

您在代码中使用XSLT 2.0功能;你确定你试过的在线测试工具支持XSLT 2.0吗?