2013-03-14 37 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