XSLT-преобразование: подстрока после последнего специального символа - PullRequest
0 голосов
/ 27 января 2011

У меня есть поля "код коммерческого регистра: 1111111" и "код коммерческого регистра 2222", которые мне нужно взять после последних пробелов: 1111111 и 2222. В xsl есть функция для взятия символов перед пробелом?

Привет

Обновление от комментариев

У меня будет "Коммерческий регистр 21" код: "линия

И

«Код» может быть без символа «:»

Ответы [ 3 ]

3 голосов
/ 27 января 2011

Если будет один и только один номер, вы можете использовать

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'), ': ', '')
0 голосов
/ 27 января 2011

Можете ли вы использовать функции EXSLT? Если это так, есть функция str: split , а затем вы можете выполнить:

str:split($string, ' ')[position()=last()]
0 голосов
/ 27 января 2011

В XSLT 2.0 используйте tokenize($in, '\s+')[last()]

Если вы застряли с 1.0, вам нужен рекурсивный шаблон: проверьте str: tokenize в библиотеке EXSLT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...