2015-05-20 60 views
0

我想檢查我的到期日期是否爲空,比我想從CreationDate中獲取該值。如何使用xslt檢查和替換空日期

我的XML是像

<CreationDate>2017-03-18</CreationDate>   <ExpiresDate>20170318</ExpiresDate> 

,並在我的XSL

<xsl:element name="NewDeliveryDueDate"> 
<xsl:call-template name="FormatDate"> 
<xsl:with-param name="DateTime" select="Product/ExpiresDate"/> 
</xsl:call-template> 
</xsl:element> 
&comma; 

請建議。

+0

你應該發佈一個*完整的輸入XML例子,包括一個「null」 到期日。我也看不到你的XSLT與所陳述的問題有什麼關係。 –

回答

0

您的問題不完整。這也許可以爲你工作:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<!-- identity transform --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="ExpiresDate[not(string())]"> 
    <xsl:copy> 
     <xsl:value-of select="translate(../CreationDate, '-', '')"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

當這適用於下面的例子輸入:

<root> 
    <item> 
     <CreationDate>2017-03-18</CreationDate> 
     <ExpiresDate>20170318</ExpiresDate> 
    </item> 
    <item> 
     <CreationDate>2017-03-09</CreationDate> 
     <ExpiresDate/> 
    </item> 
</root> 

的結果將是:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <item> 
     <CreationDate>2017-03-18</CreationDate> 
     <ExpiresDate>20170318</ExpiresDate> 
    </item> 
    <item> 
     <CreationDate>2017-03-09</CreationDate> 
     <ExpiresDate>20170309</ExpiresDate> 
    </item> 
</root> 
+0

它正在工作。 – pri