php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #60651 XSD schema validation problem with unicode regular expression
Submitted: 2012-01-04 10:31 UTC Modified: -
Votes:10
Avg. Score:4.4 ± 0.7
Reproduced:9 of 9 (100.0%)
Same Version:3 (33.3%)
Same OS:6 (66.7%)
From: webmaster at panservice dot it Assigned:
Status: Open Package: *XML functions
PHP Version: Irrelevant OS: Linux
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: webmaster at panservice dot it
New email:
PHP Version: OS:

 

 [2012-01-04 10:31 UTC] 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
        )

)


Patches

Add a Patch

Pull Requests

Add a Pull Request

 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Mon Aug 19 18:01:27 2019 UTC