2015-12-09 3 views
2

Я включил конфигурацию XPath 2.0 synapse.xpath.dom.failover.enabled=true в synapse.properties, но все еще не смог получить заполнение строки. Есть ли какое-нибудь выражение для его достижения?Есть ли какое-либо выражение XPath для String Padding в wso2 ESB?

Edit:

Длина конкретной строки должна быть 10 символов, если она меньше, чем это, мы должны раздуть его с особым характером «%».

Например., Вход = 'WSO2', после того, как обивка должна быть 'WSO2 %%%%%%'

Заранее спасибо

+0

Что вы пробовали xpath? что вы подразумеваете * точно * путем заполнения строки здесь? (пример ввода строки и соответствующий ожидаемый результат были бы полезны) – har07

+0

Привет, добавлен запрос образца и ожидаемая строка после заполнения. Я попробовал fn: string-pad(), но он не работает в wso2. –

+0

Нет функции fn: string-pad(), определенной в любой версии XPath. –

ответ

3

Это может быть достигнуто с помощью XPath 1.0 как поэтому, если предположить, что "WSO2" будет заменен на динамический входной строки в фактической реализации:

substring(concat('WSO2', '%%%%%%%%%%'), 1, 10) 

выше XPath в основном работает по concatenatin g строка из 10 конкретных символов заполнения для исходной строки ввода, а затем подстройте результат, чтобы получить только первые 10 символов. Найдено этот трюк в следующем вопросе XSL: XSL left-right justification with Padding

Чтобы поставить это в более общей формуле:

substring(concat('input_string', '%%%%....'), 1, n) 
  • input_string: строка, в которой операция заполнения будет применяться
  • %: символ, используемый для заполнения , повторный n раз
  • n: фиксированное количество символов, ожидаемых в выходной строке
+0

Это сработало, спасибо :) –

1

Решение от @ har07 хорошо, если у вас есть разумное ограничение сверху на значении п, но если вы этого не сделаете, вы можете создать строку, содержащую '% повторенное $ N раз, используя

XPath 3.0: string-join((1 to $n)!"%") 

XPath 2.0: string-join(for $x in 1 to $n return "%", "") 
+0

Привет, Майкл, Не могли бы вы, пожалуйста, объяснить второй xpath выше, пожалуйста. – Vincent

+1

'1 to $ n' производит последовательность чисел. 'for $ x from 1 to $ n return"% "' создает последовательность строк $ n, каждая из которых является строкой «%». string-join() объединяет последовательность строк в одну строку, причем второй аргумент необязательно предоставляет разделитель. –