XSL-Übersicht / xsl:analyze-string

xsl:analyze-string

xsl:analyze-string

xsl:analyze-string ist eine hervorragende Möglichkeit zur Stringanalyse mittels regulärer Ausdrücke.

Die unten dargestellte Logik untersucht, ob eine Reihe von Telefonnummern einem vorgegebenen ^[0-9]+(\.|/| )[0-9]+$ entspricht.

Das Pattern erzwingt als erstes und auch als letztes Zeichen eine Zahl; dazwischen kann entweder ein ".", ein "/" oder ein " " kommen. Dieses Trennzeichen wird über regex-group(1) angesteuert und mit bzw. in die Vorwahl sowie in die Anschlussnummer gesplittet.


<xsl:variable name="vtelnr">
    <telnr>0151.750360</telnr>
    <telnr>0151/750360</telnr>
    <telnr>05532 50168</telnr>
    <telnr>++49(0)5532/50168</telnr>
    <telnr>05532.50168</telnr>
    <telnr>05532/50168</telnr>
</xsl:variable>

<xsl:for-each select="$vtelnr/telnr">
    <xsl:analyze-string 
         regex="^[0-9]+(\.|/| )[0-9]+$" 
         select=".">      
      <xsl:matching-substring>
        <korrekt 
          vorwahl="{substring-before(. , regex-group(1))}">
          <xsl:value-of 
               select="substring-after(. , regex-group(1))" />
        </korrekt>
      </xsl:matching-substring>
      <xsl:non-matching-substring>
        <fehlerhaft>
          <xsl:value-of select="." />
        </fehlerhaft>
      </xsl:non-matching-substring>
    </xsl:analyze-string>
</xsl:for-each>

Das Ergebnis der Auswertung sehen Sie hier. <telnr>++49(0)5532/50168</telnr> entspricht nicht dem gesuchten Pattern, daher wird es als fehlerhaft ausgegeben.


<korrekt vorwahl="0151">750360</korrekt>
<korrekt vorwahl="0151">750360</korrekt>
<korrekt vorwahl="05532">50168</korrekt>
<fehlerhaft>++49(0)5532/50168</fehlerhaft>
<korrekt vorwahl="05532">50168</korrekt>
<korrekt vorwahl="05532">50168</korrekt>

Alternativ kann in XSLT 3.0 auch die XPath-Funktion verwendet werden. Sie generiert ein analyze-string-result-Element mit den Childnodes match bzw. non-match.

wg / 5. April 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/xsl_analyze_string.html