如何使用XPATH XSLT函数在$ {}中找到字符串?

时间:2017-01-13 07:22:37

标签: xml xslt xpath xslt-2.0 xpath-2.0

我知道一些XPath函数,例如tokenize,substring-after,substring-before等。使用Xpath函数从给定字符串中提取所有变量名的最佳方法是什么?

例如:

字符串:快速棕色$ {firstVar}从$ {secondVar}跳过$ {thirdVar}

输出:应该给firstVar,secondVar,thirdVar,使用xsl:for-each循环变量。

2 个答案:

答案 0 :(得分:3)

为这些变量解析字符串的最简单方法是使用\old,尽管这是一个XSLT函数,而不是您请求的XPath函数。您只需要为变量定义一个模式,然后在<xsl:analyze-string>中得到结果,例如:

<xsl:matching-substring>

您可以在W3C规范文档中找到有关使用情况的更多信息:https://www.w3.org/TR/xslt20/#analyze-string

答案 1 :(得分:1)

您可以执行类似

的操作
tokenize($input, '(^.|\}).*?(\$\{|$)')

我不得不使用“^”。而不是“^”来绕过分隔符不能为空字符串的规则,因此它不会匹配字符串开头的变量。你可以通过在字符串开头连接一个空格来解决这个问题,但这可能是一个更聪明的方法。