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
Have you experienced this issue?
Rate the importance of this bug to you:

 [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-2018 The PHP Group
All rights reserved.
Last updated: Tue Nov 13 20:01:26 2018 UTC