3

我正在尝试想出一种使用 XSL 输出以下字段的最后 6 位数字的方法

<NameReference Text="4380.401.0500-111820" />

我基于 xml 文件编写了以下表达式:

<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 位数字。我试图从左到右,但没有奏效。任何帮助深表感谢。

4

2 回答 2

3

substring函数的第二个参数是起始位置。您想从该length-6位置开始获取字符。

尝试

substring(@Text, string-length(@Text) - 6)
于 2013-03-14T14:01:27.110 回答
1

关于substring-after函数可能值得了解,以供将来参考。如果连字符后的位数不定,这将很有用。在这种情况下,您可以这样做:

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

在这种情况下也应该输出111820

于 2013-03-14T14:28:52.773 回答