<xsl:non-matching-substring> XSLT

Become a Patron!

Элемент xsl:non-matching-substring определяет, что делать при несовпадении регулярного выражения в строке. Регулярное выражение определяется в атрибуте regex элемента <xsl:analyze-string>, содержащего элемент <xsl:non-matching-substring>.

Элементы-родители:

Синтаксис

XSLT 2.0 и XSLT 3.0

<xsl:non-matching-substring>
    <!-- Content: sequence-constructor -->
</xsl:non-matching-substring>

Описание и примеры

Пример

В следующем примере использования элемента <xsl:analyze-string> регулярное выражение преобразует телефонные номера в формате 999-999-9999 в номера в формате +1 (999) 999-9999:

<?xml version="1.0" encoding="utf-8"?>
<!-- non-matching-substring.xsl -->
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:for-each select="phonelist/phonenumber">
            <xsl:analyze-string select="." regex="([0-9]{{3}})-([0-9]{{3}})-([0-9]{{4}})">
                <xsl:non-matching-substring>
                    <xsl:text>&#xA; Unrecognized phone number: </xsl:text>
                    <xsl:value-of select="."/>
                </xsl:non-matching-substring>
            </xsl:analyze-string>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

В нашей таблице стилей используется регулярное выражение ([0-9]{{3}})-([0-9]{{3}})-([0-9]{{4}}). Применение его к следующему списку телефонных номеров:

<?xml version="1.0" encoding="utf-8"?>
<!-- phonelist.xml -->
<phonelist>
    <phonenumber>919-555-1212</phonenumber>
    <phonenumber>(919) 555-1212</phonenumber>
    <phonenumber>212.555.1212</phonenumber>
    <phonenumber>617-555-1212</phonenumber>
    <phonenumber>+86 555-1212</phonenumber>
</phonelist>

дает следующий результат:

Unrecognized phone number: (919) 555-1212
Unrecognized phone number: 212.555.1212
Unrecognized phone number: +86 555-1212

В этом примере <xsl:analyze-string> содержит только элемент <xsl:non-matching-substring>; <xsl:analyze-string> может также содержать элемент <xsl:matching-substring>.

См. также