我知道一些XPath函數,例如tokenize,substring-after,substring-before等等。使用Xpath函數從給定字符串中提取所有變量名的最佳方法是什麼?
例如:
字符串:敏捷的棕色$ {firstVar}從$ {secondVar},然後跳了$ {thirdVar}
輸出:應該給firstVar,secondVar,thirdVar,將使用XSL :for-each來遍歷變量。
我知道一些XPath函數,例如tokenize,substring-after,substring-before等等。使用Xpath函數從給定字符串中提取所有變量名的最佳方法是什麼?
例如:
字符串:敏捷的棕色$ {firstVar}從$ {secondVar},然後跳了$ {thirdVar}
輸出:應該給firstVar,secondVar,thirdVar,將使用XSL :for-each來遍歷變量。
爲這些變量解析字符串的最簡單的方法是使用<xsl:analyze-string>
,儘管這是一個XSLT函數,而不是您請求的XPath函數。你只需要定義一個模式的變量,然後在<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, '(^.|\}).*?(\$\{|$)')
我不得不使用「^」。而不是「^」來解決分隔符不能是空字符串的規則,所以它不會匹配字符串開頭的變量。你可以通過在字符串的開頭連接一個空格來解決這個問題,但可能有一個更聰明的方法。