在wso2 ESB中是否有任何用于字符串填充的XPath表达式?

时间:2015-12-09 09:12:19

标签: xpath wso2 xquery wso2esb xpath-2.0

我已在synapse.xpath.dom.failover.enabled=true中启用了XPath 2.0配置synapse.properties,但仍无法完成字符串填充。是否有任何表达方式来实现它?

编辑:

特定字符串的长度需要为10个字符,如果它小于它,我们必须使用特殊字符填充它#%;'%'。

例如,输入=' WSO2 ',填充后应该是' WSO2 %%%%%% &# 39;

提前致谢

2 个答案:

答案 0 :(得分:3)

这可以使用XPath 1.0来实现,假设在实际实现中"WSO2"将被动态输入字符串替换:

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

上面的XPath基本上是通过将10个特定的填充字符的字符串连接到原始输入字符串,然后将结果子串到仅获得前10个字符。在以下XSL问题中找到了这个技巧:XSL left-right justification with Padding

将其置于更通用的公式中:

substring(concat('input_string', '%%%%....'), 1, n)
  • input_string:将应用填充操作的字符串
  • %:用于填充的字符,重复n
  • n:输出字符串中预期的固定字符数

答案 1 :(得分:1)

如果你对n的值有合理的上限,那么来自@ har07的解决方案很好,但是如果你没有,你可以使用

创建一个包含'%'重复$ n次的字符串
XPath 3.0: string-join((1 to $n)!"%")

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