2017-08-04 75 views
0

在我XSLT 1.0文件我有一個包含日期的字符串表示以下元素:XSLT 1.0格式字符串日期爲其他格式

Product/CreateDate = 2017-06 

我需要把這個字符串格式化爲以下字符串:06/2017

請告訴它如何與XSLT 1.0

修訂

完成

這是我目前的XSLT結構:

<xsl:value-of select="translate(Product/CreateDate, '-', '/')" /> 
<xsl:if test="not(Product/CreateDate) or (Product/CreateDate='')"> 
    &#8212; 
</xsl:if> 

現在它打印:2017/06但我需要打印06/2017代替

+1

你究竟在哪裏堅持下去? - P.S.請提供[mcve]。實際上,很難判斷您的輸入是「 2017-06」或「 Product/CreateDate = 2017-06」。同樣的輸出。 –

+0

@ michael.hor257k我用當前的XSLT更新了我的問題 – alexanoid

回答

1

嘗試:

<xsl:value-of select="substring-after(Product/CreateDate, '-')" /> 
<xsl:text>/</xsl:text> 
<xsl:value-of select="substring-before(Product/CreateDate, '-')" /> 

或者:

<xsl:value-of select="substring(Product/CreateDate, 6)" /> 
<xsl:text>/</xsl:text> 
<xsl:value-of select="substring(Product/CreateDate, 1, 4)" /> 
+0

謝謝!它正在工作。還有一個問題 - 在產品/創建日期爲空的情況下,此代碼對於NPE是否安全? – alexanoid

+1

如果'CreateDate'爲空或不存在,則結果將是由單個斜線字符組成的字符串。如果你想要別的東西,你需要用'xsl:choose'指令來包裝它。 –

+1

@alexanoid,XPath沒有任何「null」的概念(也沒有任何「指針」或「異常」的概念),所以NPE的概念在XPath中完全沒有意義。 –