XSLT转换:最后一个特殊字符后的子串

时间:2011-01-27 13:48:30

标签: xslt

我有字段“商业注册码:1111111”和“商业注册码2222”我需要在最后一个空格符号后面:1111111和2222.在xsl中有“space”之前有符号的功能吗?

此致

从评论中更新

  

我将有“商业注册21   代码:“line

并且

  

“code”可以没有“:”符号

3 个答案:

答案 0 :(得分:3)

如果只有一个号码,那么你可以使用

translate($string,transtale($string,'0123456789',''),'')

这将删除字符串中的任何非数字字符。

如果前缀标签是稳定的,那么您可以使用以下内容:

substring-after($string,'commercial register code:')

回答问题:

There is function to take symbolrs before "space" in xsl?

答案:是的,substring-before()功能

<强>更新

从评论中看,字符串模式似乎是:

'commercial register' number 'code' (':')? number

然后使用:

translate(substring-after($string,'code'), ': ', '')

答案 1 :(得分:0)

在XSLT 2.0中,使用tokenize($in, '\s+')[last()]

如果你遇到1.0,你需要一个递归模板:在EXSLT库中检查str:tokenize。

答案 2 :(得分:0)

您可以使用EXSLT功能吗?如果是,则有str:split功能,然后您可以执行以下操作:

str:split($string, ' ')[position()=last()]