[ https://issues.apache.org/jira/browse/XMLBEANS-412?page=com.atlassian.jira.plugin.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>t...@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-unsubscr...@xmlbeans.apache.org For additional commands, e-mail: dev-h...@xmlbeans.apache.org