[
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>[email protected]</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: [email protected]
For additional commands, e-mail: [email protected]