Bug #60651 [Opn->Nab]: XSD schema validation problem with unicode regular expression
| From: | cmb@php.net | Date: | Tue, 10 Mar 2020 08:32:11 +0000 |
| Subject: | Bug #60651 [Opn->Nab]: XSD schema validation problem with unicode regular expression | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-225988@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=60651&edit=1
ID: 60651
Updated by: cmb@php.net
Reported by: webmaster at panservice dot it
Summary: XSD schema validation problem with unicode regular
expression
-Status: Open
+Status: Not a bug
Type: Bug
Package: *XML functions
Operating System: Linux
PHP Version: Irrelevant
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions. Due to the volume
of reports we can not explain in detail here why your report is not
a bug. The support channels will be able to provide an explanation
for you.
Thank you for your interest in PHP.
\P{Ll} inside a character class is not recognized as Unicode
character property escape sequence.
Previous Comments:
------------------------------------------------------------------------
[2012-01-04 10:31:38] webmaster at panservice dot it
Description:
------------
When I try to validate XML file with given XSD schema containing Unicode regular
expression, the function DOMDocument::schemaValidate return a validation error.
The XSD schema is W3C well formed and the validation pass with the other
validation tools.
The problem doesn't occur if the XSD pattern is format like this (without square
brackets):
<xsd:pattern value="\P{Ll}+"/>
PHP Version: 5.2.14
LibXml Version: 2.7.7
PS: The previous pattern [\P{Ll}]+ works correctly with preg_match function.
Test script:
---------------
PHP Validation Code:
function libxml_display_errors()
{
$errors = libxml_get_errors();
print_r($errors);
libxml_clear_errors();
}
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->load('test.xml');
if ( !$dom->schemaValidate('test.xsd') ) {
echo "XML Error\n";
libxml_display_errors();
} else {
echo "XML ok\n";
}
-------------------------------
XSD Schema:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:simpleType name="noLowerCase">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[\P{Ll}]+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="DatiUtenteType">
<xsd:sequence>
<xsd:element name="Cognome" type="noLowerCase"/>
<xsd:element name="Nome" type="noLowerCase"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DataExchangeFisso">
<xsd:sequence>
<xsd:element name="DatiUtente" type="DatiUtenteType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ListOfDataExchange">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DataExchangeFisso" type="DataExchangeFisso"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
-------------------------------
XML File:
<?xml version="1.0" encoding="UTF-8"?>
<ListOfDataExchange>
<DataExchangeFisso>
<DatiUtente>
<Cognome>FOO</Cognome>
<Nome>BAR</Nome>
</DatiUtente>
</DataExchangeFisso>
</ListOfDataExchange>
Expected result:
----------------
XML ok
Actual result:
--------------
XML Error
Array
(
[0] => LibXMLError Object
(
[level] => 2
[code] => 1839
[column] => 0
[message] => Element 'Cognome': [facet 'pattern'] The value
'FOO' is
not accepted by the pattern '[\P{Ll}]+'.
[file] => /var/www/html/test.xml
[line] => 5
)
[1] => LibXMLError Object
(
[level] => 2
[code] => 1824
[column] => 0
[message] => Element 'Cognome': 'FOO' is not a valid value of the
atomic type 'noLowerCase'.
[file] => /var/www/html/test.xml
[line] => 5
)
[2] => LibXMLError Object
(
[level] => 2
[code] => 1839
[column] => 0
[message] => Element 'Nome': [facet 'pattern'] The value
'BAR' is
not accepted by the pattern '[\P{Ll}]+'.
[file] => /var/www/html/test.xml
[line] => 6
)
[3] => LibXMLError Object
(
[level] => 2
[code] => 1824
[column] => 0
[message] => Element 'Nome': 'BAR' is not a valid value of the
atomic type 'noLowerCase'.
[file] => /var/www/html/test.xml
[line] => 6
)
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=60651&edit=1