我知道一些XPath函数,例如tokenize,substring-after,substring-before等 . 使用Xpath函数从给定字符串中提取所有变量名称的最佳方法是什么?
例如:
字符串:快速棕色$ 从$ 跳过$
输出:应该给firstVar,secondVar,thirdVar,使用xsl:for-each循环变量 .
解析这些变量的字符串的最方便方法是使用 <xsl:analyze-string> ,尽管这是一个XSLT函数,而不是您请求的XPath函数 . 您只需要为变量定义一个模式,然后在 <xsl:matching-substring> 中得到结果,例如:
<xsl:analyze-string>
<xsl:matching-substring>
<xsl:analyze-string select="[[[xpath selector for your string]]]" regex="\$\{.+\}"> <xsl:matching-substring> [[[ do your processing of the variable names here ]]] </xsl:matching-substring> </xsl:analyze-string>
您可以在W3C规范文档中找到有关使用情况的更多信息:https://www.w3.org/TR/xslt20/#analyze-string
你可以做点什么
tokenize($input, '(^.|\}).*?(\$\{|$)')
我不得不使用“^” . 而不是“^”来绕过分隔符不能是空字符串的规则,因此它不会匹配字符串开头的变量 . 你可以通过在字符串的开头连接一个空格来解决这个问题,但这可能是一个更聪明的方法 .
2 回答
解析这些变量的字符串的最方便方法是使用
<xsl:analyze-string>
,尽管这是一个XSLT函数,而不是您请求的XPath函数 . 您只需要为变量定义一个模式,然后在<xsl:matching-substring>
中得到结果,例如:您可以在W3C规范文档中找到有关使用情况的更多信息:https://www.w3.org/TR/xslt20/#analyze-string
你可以做点什么
我不得不使用“^” . 而不是“^”来绕过分隔符不能是空字符串的规则,因此它不会匹配字符串开头的变量 . 你可以通过在字符串的开头连接一个空格来解决这个问题,但这可能是一个更聪明的方法 .