XMLSPY bug? Patterns at different derivation steps getting OR'ed instead of AND'ed.

  • Thread starter Patrick J. Maloney
  • Start date
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:pattern 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:pattern 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
 
P

Priscilla Walmsley

Hi Patrick,

You are right; it must be a bug in XMLSpy. If the patterns were at the
same derivation level, they would be OR-ed. But, since they are
different levels, they should be AND-ed. Making the base type xs:string
should solve your problem.

Hope that helps,
Priscilla
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,011
Latest member
AjaUqq1950

Latest Threads

Top