2017-01-13 3 views
0

Ich kenne ein paar XPath-Funktionen wie tokenize, substring-after, substring-before usw. Was ist der beste Weg, alle Variablennamen aus einer gegebenen Zeichenfolge mit Xpath-Funktionen zu extrahieren?

Zum Beispiel:

String: Der schnelle braune $ {firstVar} von $ sprang {secondVar} und dann {thirdVar} $

Ausgang: Sollte firstVar, secondVar, thirdVar geben, die xsl benutzen würde : for-each, um die Variablen zu durchlaufen.

Antwort

3

Die einfachste Möglichkeit, eine Zeichenfolge für solche Variablen zu analysieren, wäre die Verwendung von <xsl:analyze-string>, obwohl dies eine XSLT-Funktion ist und keine XPath-Funktion wie von Ihnen gewünscht. Sie müssen nur ein Muster für die Variablen definieren und dann die Ergebnisse in <xsl:matching-substring> erhalten, zum Beispiel:

<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> 

Sie werden mehr Informationen über die Verwendung von in der W3C-Spezifikation Dokument: https://www.w3.org/TR/xslt20/#analyze-string

1

Sie könnten mache etwas wie

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

Ich musste "^." Anstatt "^" um die Regel zu umgehen, dass das Trennzeichen keine leere Zeichenfolge sein kann, wird es nicht mit einer Variablen am Anfang der Zeichenfolge übereinstimmen. Sie könnten das umgehen, indem Sie am Anfang der Zeichenfolge ein Leerzeichen verketten, aber es ist wahrscheinlich ein klügerer Weg.

Verwandte Themen