2013-03-14 80 views
1

我試圖想出了使用XSL輸出以下字段1.4.3使用XSL

<NameReference Text="4380.401.0500-111820" /> 

我寫了基於XML文件中的下列表達式的最後6位數字的方式,最後6位數字:

<xsl:if test=""> 
<xsl:for-each select="NameReference"> 
<ID> 
<Data> 
<xsl:value-of select="substring(@Text,-6)"/> 
</Data> 
</ID> 
</xsl:for-each> 
</xsl:if> 

但是,輸出如下「43804010500111820」。它基本上將整個字段解析爲期望的數據,其中我只查找短劃線後的最後6位數字「 - 」。我試圖從左到右,但沒有奏效。任何幫助深表感謝。

回答

0

substring函數的第二個參數是開始位置。您想要開始從length-6位置獲取字符。

嘗試

substring(@Text, string-length(@Text) - 6) 
+0

謝謝RB!它做到了。 – 2013-03-14 14:20:59

1

這可能是值得了解的,以供將來參考,有關子,後功能。如果在連字符後面有可變數字的數字,這將有益於使用。在這種情況下,您可以這樣做:

<xsl:value-of select="substring-after(@Text, '-')" /> 

在這種情況下也應該輸出111820