2017-01-13 59 views
0

我知道一些XPath函數,例如tokenize,substring-after,substring-before等等。使用Xpath函數從給定字符串中提取所有變量名的最佳方法是什麼?

例如:

字符串:敏捷的棕色$ {firstVar}從$ {secondVar},然後跳了$ {thirdVar}

輸出:應該給firstVar,secondVar,thirdVar,將使用XSL :for-each來遍歷變量。

回答

3

爲這些變量解析字符串的最簡單的方法是使用<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

1

你可以做類似

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

我不得不使用「^」。而不是「^」來解決分隔符不能是空字符串的規則,所以它不會匹配字符串開頭的變量。你可以通過在字符串的開頭連接一個空格來解決這個問題,但可能有一個更聰明的方法。

相關問題