Patrick J. Maloney
Usenet Archive
- Joined
- Nov 5, 2004
- Messages
- 3
- Reaction score
- 0
I received a file from a business partner. I ran it through XercesJ and it choked on the following element:
<wcb-case-number>0</wcb-case-number>
To debug this issue, I loaded it into XMLSPY and hit validate...it passed. Here are the related type/element definitions:
// Redefine built-in string type to limit range of characters, mostly // to eliminate undesirable white space (tab, cr, lf, etc.) <xs:simpleType name="WcbString"> <xs:restriction base="string"> <xs
attern value="[ -~]*"/> </xs:restriction> </xs:simpleType>
// Define a text type which essentially says "if present, must have // at least one character" <xs:simpleType name="WcbText"> <xs:restriction base="WcbString"> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType>
// Project-specific type: case id
<xs:simpleType name="CaseID">
<xs:restriction base="WcbText">
// Yes, I know '[\dADF]\d{7}' is more concise, but I prefer this <xs
attern value="[0-9ADF][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType>
// Define the element
<xs:element name="wcb-case-number" type="CaseID" minOccurs="0"/>
I know our partner used XMLSPY to validate it because it had the 'edited by XMLSPY' comment at the top. Before I respond to this, I need some confirmation of a bug in XMLSPY.
Section 4.3.4.3 of the XML Schema specification
(http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#dt- pattern) is pretty clear to me on how patterns should be treated in a case like this (ANDed, not ORed), but XMLSPY isn't working that way. In fact, when you click on the wcb-case-number element in the XML file, it actually shows the pattern it's using as:
"[ -~]*|[0-9ADF][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
Anyone disagree and think XMLSPY is working correctly? Basically, I can work-around the issue by making the base type of CaseID the built-in 'string' type. I will be doing this because I want our partners who use XMLSPY to be able to properly validate their files. However, I want to be certain when I say 'this new schema change is necessary to account for bugs in XMLSPY' that I'm actually correct.
TIA!
-Patrick
<wcb-case-number>0</wcb-case-number>
To debug this issue, I loaded it into XMLSPY and hit validate...it passed. Here are the related type/element definitions:
// Redefine built-in string type to limit range of characters, mostly // to eliminate undesirable white space (tab, cr, lf, etc.) <xs:simpleType name="WcbString"> <xs:restriction base="string"> <xs
// Define a text type which essentially says "if present, must have // at least one character" <xs:simpleType name="WcbText"> <xs:restriction base="WcbString"> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType>
// Project-specific type: case id
<xs:simpleType name="CaseID">
<xs:restriction base="WcbText">
// Yes, I know '[\dADF]\d{7}' is more concise, but I prefer this <xs
// Define the element
<xs:element name="wcb-case-number" type="CaseID" minOccurs="0"/>
I know our partner used XMLSPY to validate it because it had the 'edited by XMLSPY' comment at the top. Before I respond to this, I need some confirmation of a bug in XMLSPY.
Section 4.3.4.3 of the XML Schema specification
(http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#dt- pattern) is pretty clear to me on how patterns should be treated in a case like this (ANDed, not ORed), but XMLSPY isn't working that way. In fact, when you click on the wcb-case-number element in the XML file, it actually shows the pattern it's using as:
"[ -~]*|[0-9ADF][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
Anyone disagree and think XMLSPY is working correctly? Basically, I can work-around the issue by making the base type of CaseID the built-in 'string' type. I will be doing this because I want our partners who use XMLSPY to be able to properly validate their files. However, I want to be certain when I say 'this new schema change is necessary to account for bugs in XMLSPY' that I'm actually correct.
TIA!
-Patrick