XML/XSLT stylesheet/analyze string
analyze-string and regular expression
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <phonelist>
<phonenumber>111-111-1111</phonenumber> <phonenumber>(111) 111-1111</phonenumber> <phonenumber>111.111.1111</phonenumber> <phonenumber>111-111-112</phonenumber> <phonenumber>+11 111-1111</phonenumber>
</phonelist>
File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <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)-(\pШаблон:NdШаблон:3)-([0-9]Шаблон:4)"> <xsl:matching-substring> <xsl:text> +1 (</xsl:text> <xsl:value-of select="regex-group(1)"/> <xsl:text>) </xsl:text> <xsl:value-of select="regex-group(2)"/> <xsl:text>-</xsl:text> <xsl:value-of select="regex-group(3)"/> </xsl:matching-substring> <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> Output:
+1 (111) 111-1111
Unrecognized phone number: (111) 111-1111 Unrecognized phone number: 111.111.1111 Unrecognized phone number: 111-111-112 Unrecognized phone number: +11 111-1111 </source>
matching-substring
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <phonelist>
<phonenumber>111-111-1111</phonenumber> <phonenumber>(111) 111-1111</phonenumber> <phonenumber>111.111.1111</phonenumber> <phonenumber>111-111-1111</phonenumber> <phonenumber>+11 111-1111</phonenumber>
</phonelist> File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <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:matching-substring> <xsl:text> +1 (</xsl:text> <xsl:value-of select="regex-group(1)"/> <xsl:text>) </xsl:text> <xsl:value-of select="regex-group(3)"/> <xsl:text>-</xsl:text> <xsl:value-of select="regex-group(5)"/> </xsl:matching-substring> <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> Output:
+1 (111) 111-1111
Unrecognized phone number: (111) 111-1111
+1 (111) 111-1111 +1 (111) 111-1111
Unrecognized phone number: +11 111-1111 </source>
non-matching-substring and matching-substring
<source lang="xml">
File: Data.xml <?xml version="1.0"?>
<start_date xmlns="http://www.wbex.ru">1999-07-25</start_date> File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:analyze-string select=""K"" regex="k" flags="i"> <xsl:matching-substring> <xsl:text>It matches!</xsl:text> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:text>It doesn"t match!</xsl:text> </xsl:non-matching-substring> </xsl:analyze-string> </xsl:template>
</xsl:stylesheet> Output: It matches!
</source>