我对 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 天。
请告诉我我做错了什么......非常感谢。