<xsl:non-matching-substring> XSLT
Элемент 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>
 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>
.