2016-04-27 11 views
0

Ich habe eine intput XML-Datei mit dem Namen "718322_c341b0-TEST_NOC_20160423121052.XML", die in meinem XSLT $ SourceFile zugewiesen ist. Ich versuche, zu testen, ob der $ Source die Zeichenfolge von „-TEST“ enthält mit dem folgenden Code:Wie behandelt XSLT Regex w?

<xsl:if test="matches($SourceFile, '^\w+-TEST.*')"> 

Es ist jedoch nicht überein. Also habe ich den Code auf

<xsl:if test="matches($SourceFile, '^[A-Za-z0-9_]+-TEST.*')"> 

aktualisiert Dann bekam ich ein Spiel. Ich habe mehr Tests gemacht und der folgende Code hat auch eine Übereinstimmung gefunden.

<xsl:if test="matches($SourceFile, '^\w+_\w+-TEST.*')"> 

Hier ist, was mich verwirrt, ich denke, \ w Mittel [A-Za-z0-9_], richtig? Warum \ w hat in diesem Fall nicht funktioniert? Es scheint ein Problem mit dem Unterstrich zu haben. Vielen Dank!

+0

Überprüfen Sie Ihr Testszenario, Sie haben ein Problem irgendwo im Code, den Sie nicht zeigen. –

+0

Welchen XSLT-Prozessor verwenden Sie? Siehe https://www.w3.org/TR/xmlschema-2/#charcter-classes, die Klasse '\ w' ist definiert als' [# x0000- # x10FFFF] - [\ p {P} \ p {Z } \ p {C}] ', erklärt als" alle Zeichen mit Ausnahme der Satzzeichen "," Trennzeichen "und" andere "Zeichen, die" _ "ausschließen. –

Antwort

0

Siehe https://www.w3.org/TR/xmlschema-2/#charcter-classes, die Klasse \w ist definiert als [#x0000-#x10FFFF]-[\p{P}\p{Z}\p{C}], erklärt als ‚alle Zeichen außer dem Satz von‚Zeichensetzung‘,‚Separator‘und‚andere‘Zeichen‘, die _ auszuschließen scheint.

Verwandte Themen