2012-04-12 11 views
1

Ich mache Gebrauch von XSLT 2.0, um das passende zu finden auf den regulären Ausdrücken substring basiertMatching und Gruppieren Zeichenfolge mit XSLT Regex analysieren-string

meine XSLT-Funktion wie folgt aussieht unten

<xsl:function name="util:getSource"> 
    <xsl:variable name="dynamic" select="'Allergy Adverse Event Type 2.16.840.1.113883.3.88.12.3221.6.2'"/> 
    <xsl:choose> 
     <xsl:when test="string-length($dynamic) &gt; 1 and matches($dynamic,'[a-zA-Z\s]*')"> 
      <xsl:analyze-string select="$dynamic" regex="[a-zA-Z\s]*"> 
       <xsl:matching-substring> 
        <xsl:value-of select="."/> 
       </xsl:matching-substring> 
      </xsl:analyze-string> 
     </xsl:when> 
    </xsl:choose> 
</xsl:function> 

Ich möchte zu finden "Allergie unerwünschter Ereignistyp" von meiner Eingabezeichenfolge "'Allergie unerwünschter Ereignistyp 2.16.840.1.113883.3.88.12.3221.6.2'" basierend auf dem regulären Ausdruck [a-zA-Z \ s] *; Wenn ich obige Funktion ausführe, erhalte ich immer "XTDE1150: Regulärer Ausdruck stimmt mit der leeren Zeichenfolge überein". Was stimmt nicht mit dem regulären Ausdruck? Kann ich die Vorschläge dazu haben?

Antwort

1

Von der spec:

[ERR XTDE1150] Es ist ein nicht behebbarer dynamische Fehler, wenn der effektive Wert des regex Attribut ein regulärer Ausdruck ist, die entspricht einer Zeichenfolge der Länge Null

Ändern Sie einfach Ihre Regex [a-zA-Z\s]+ und Sie sollten in Ordnung sein.