0

我对 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 天。

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

4

1 回答 1

0

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

于 2012-05-17T17:11:26.547 回答