私は 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 日を追加することです。
私が間違っていることを教えてください....どうもありがとう。