[ 
https://issues.apache.org/jira/browse/XERCESJ-1456?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Khaled Noaman resolved XERCESJ-1456.
------------------------------------

    Fix Version/s: 2.11.0
       Resolution: Fixed

Fix checked in

> Regular expression is incorrectly handled in pattern facet
> ----------------------------------------------------------
>
>                 Key: XERCESJ-1456
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1456
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: XML Schema 1.0 Datatypes
>    Affects Versions: 2.10.0
>         Environment: JDK 1.5.0
>            Reporter: Christian Schröder
>            Assignee: Khaled Noaman
>             Fix For: 2.11.0
>
>
> I have the following schema:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>     <xsd:element name="test" type="Test"/>
>     <xsd:simpleType name="Test">
>         <xsd:restriction base="xsd:string">
>             <xsd:pattern value="[0-9]{0,3}([0-9]{3})*"/>
>         </xsd:restriction>
>     </xsd:simpleType>
> </xsd:schema>
> And this xml file:
> <?xml version="1.0" encoding="windows-1252"?>
> <test>1010000</test>
> I try to validate the file with the following test code:
>     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
>     dbf.setNamespaceAware(true);
>     DocumentBuilder builder = dbf.newDocumentBuilder();
>     Document xsd = 
> builder.parse(Main.class.getResource("/test.xsd").toString());
>     SchemaFactory sf = 
> SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
>     Schema schema = sf.newSchema(new DOMSource(xsd));
>     Validator validator = schema.newValidator();
>     Document test = 
> builder.parse(Main.class.getResource("/test.xml").toString());
>     validator.validate(new DOMSource(test));
> I get an org.xml.sax.SAXParseException: cvc-pattern-valid: Value '1010000' is 
> not facet-valid with respect to pattern '[0-9]{0,3}([0-9]{3})*' for type 
> 'Test'.
> In my opinion, the given value should be valid for the given pattern. Even 
> the following code prints "true":
>     RegularExpression re = new RegularExpression("[0-9]{0,3}([0-9]{3})*");
>     System.out.println(re.matches("1010000"));

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-dev-h...@xerces.apache.org

Reply via email to