P
Patrick J. Maloney
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
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
</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
</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