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!
Überprüfen Sie Ihr Testszenario, Sie haben ein Problem irgendwo im Code, den Sie nicht zeigen. –
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. –