我是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> </xsl:text>
</xsl:template>
</xsl:stylesheet>
如果我取出<xsl:choose>
部分,我可以得到一行结果。但是如果我包含了选择节点,我就没有结果。基本上我想做的是当“CareerSiteNo3”是“假脱机”时,只需从结束日期值增加2天,否则添加14天。
请告诉我我做错了什么......非常感谢。
答案 0 :(得分:0)
您在代码中使用XSLT 2.0功能;你确定你试过的在线测试工具支持XSLT 2.0吗?