[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlbeans-dev
Subject:    [jira] [Commented] (XMLBEANS-412) CLONE -Pattern facet regex requires dash - to be escaped
From:       "Jerry Sy (Commented) (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date:       2012-04-05 21:50:24
Message-ID: 4115217.20004.1333662624586.JavaMail.tomcat () hel ! zones ! apache ! org
[Download RAW message or body]


    [ https://issues.apache.org/jira/browse/XMLBEANS-412?page=com.atlassian.jira.plugi \
n.system.issuetabpanels:comment-tabpanel&focusedCommentId=13247735#comment-13247735 ] \


Jerry Sy commented on XMLBEANS-412:
-----------------------------------

I have created a fix to this issue and requesting the board to review the fix. I am \
attaching the patch and changed file. It basically allows unescaped '-' at the start \
or end of a positive char group.

svn diff ParserForXMLSchema.java
Index: ParserForXMLSchema.java
===================================================================
--- ParserForXMLSchema.java     (revision 1245727)
+++ ParserForXMLSchema.java     (working copy)
@@ -234,9 +234,9 @@
                 if (type == T_CHAR) {
                     if (c == '[')  throw this.ex("parser.cc.6", this.offset-2);
                     if (c == ']')  throw this.ex("parser.cc.7", this.offset-2);
-                    // (radup) XMLSchema 1.0 allows the '-' as the first character \
                of a range,
-                    // but it looks like XMLSchema 1.1 will prohibit it - track this
-                    if (c == '-' && !firstloop)  throw this.ex("parser.cc.8", \
this.offset-2); +                    \
//https://issues.apache.org/jira/browse/XMLBEANS-412 +                    //unescaped \
single char '-' is a valid char after '[' and before ']' positive range only +        \
if (c== '-' && ((!firstloop && this.chardata!=']') || nrange)) throw \
this.ex("parser.cc.8", this.offset-2);  }
                 if (this.read() != T_CHAR || this.chardata != '-') { // Here is no \
'-'.  tok.addRange(c, c);
@@ -245,9 +245,15 @@
                     this.next(); // Skips '-'
                     if ((type = this.read()) == T_EOF)  throw this.ex("parser.cc.2", \
                this.offset);
                                                 // c '-' ']' -> '-' is a \
                single-range.
-                    if ((type == T_CHAR && this.chardata == ']')
-                        || type == T_XMLSCHEMA_CC_SUBTRACTION) {
+                    if (type == T_XMLSCHEMA_CC_SUBTRACTION) {
                         throw this.ex("parser.cc.8", this.offset-1);
+                    } else if (type == T_CHAR && this.chardata == ']') {
+                        //'-' occurs after a single-range but before ']'
+                        if (!nrange) {
+                            tok.addRange(c,c);
+                            tok.addRange('-','-');
+                        } else
+                            throw this.ex("parser.cc.8", this.offset-1);
                     } else {
                         int rangeend = this.chardata;
                         if (type == T_CHAR) {

                
> CLONE -Pattern facet regex requires dash - to be escaped
> --------------------------------------------------------
> 
> Key: XMLBEANS-412
> URL: https://issues.apache.org/jira/browse/XMLBEANS-412
> Project: XMLBeans
> Issue Type: Bug
> Components: Validator
> Affects Versions: Version 2, Version 2.1, Version 2.2, Version 2.2.1,  Version 2.3, \
>                 Version 2.3.1
> Environment: Win 2000, JDK1.5
> Reporter: Radosław Ceszkiel
> Fix For: Version 2
> 
> Attachments: ParserForXMLSchema.java, xmlbeans-412.patch
> 
> 
> Given the following xsd  that should allow only a valid email address pattern:
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <xsd:element name="Email" type="EmailType" />
> <xsd:simpleType name="EmailType" >
> <xsd:restriction base="xsd:token">
> <xsd:pattern value="([\.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(([a-zA-Z0-9_-])*\.([a-zA-Z0-9_-])+)+"/>
>  </xsd:restriction>
> </xsd:simpleType>
> </xsd:schema>
> Using the following simple xml instance:
> <Email>test@test.com</Email>
> Running:
> validate sample.xsd sample.xml
> generates:
> Schema invalid:
> D:\sample.xsd:7: error: pattern-regex: The regular expression \
> '([\.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(([a-zA-Z0-9_-])*\.([a-zA-Z0-9_-])+)+' is \
> malformed: '-' is an invalid character range. Write '\-'. A dash at the end or at \
> the beginning of a character range does not have to be escaped (see \
> http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#nt-charRange "The \
> - character is a valid character range only at the beginning or end of a - positive \
> character group- .")  The regular expression in the email example is a valid xsd \
> regexp and should be accepted by the XmlBeans validator.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: \
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more \
information on JIRA, see: http://www.atlassian.com/software/jira



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic