[jon.bosak@sun.com:]
| Well, this is certainly strange. We get no errors from XML Spy,
| MSV, or SQC, but we get 41 errors from XSV.
|
| Can any of our XSD gurus help us out with this?
The answer is revealed in this correspondence between Norm Walsh
and Kohsuke Kawaguchi (thanks, guys!):
/=================================================================
| Date: Wed, 07 Apr 2004 13:30:55 -0700
| From: Kohsuke Kawaguchi <Kohsuke.Kawaguchi@Sun.COM>
| Subject: Re: UBL validation puzzle
| To: Norman Walsh <Norman.Walsh@Sun.COM>, Jon.Bosak@Sun.COM
|
| > With a couple of minutes of exploration, I do find it odd that
| > UBL-CoreComponentTypes-1.0.xsd includes the annotation:
| >
| > <xsd:complexType name="AmountType">
| > <xsd:annotation>
| > <xsd:documentation>
| > <ccts:Component>
| > <ccts:CategoryCode>CCT</ccts:CategoryCode>
| > <ccts:DictionaryEntryName>Amount. Type</ccts:DictionaryEntryName>
| > ...
| >
| > where ccts is bound to urn:oasis:names:tc:ubl:CoreComponentParameters:1:0
| > but UBL-CoreComponentParameters-1.0.xsd does not declare a CategoryCode
| > element. In fact
| >
| > $ grep -l CategoryCode */*.xsd
| > common/UBL-CoreComponentTypes-1.0.xsd
| >
| > suggests that CategoryCode isn't declared anywhere. Maybe MSV et. al. don't
| > attempt to validate annotations?
|
| Those annotations are read when schemas are being parsed, and at that
| point no schema was introduced for the
| urn:oasis:names:tc:ubl:CoreComponentParameters:1:0 namespace (the URI
| for the ccts prefix.)
|
| So I think a conforming schema processor should *not* report an error
| for this. elements like <ccts:Component> should be laxly validated.
|
| BTW, I find it strange that <ccts:Component> is listed as
| <xs:documentation>, it seems to me that this is more suitable as a
| <xs:appinfo>.
[Note from the chair: We have already beaten this subject to
death, and I don't want to hear any more about it!]
| To properly check correctness of XML Schema, I really recommend
| using Xerces. XML Spy, MSV, and XSV are by no means a conforming
| processor, and they should be used only to check if a document is
| correctly written (against a schema), not to check if a schema is
| correctly written.
|
| I'll run it against Xerces and report the result.
|
| regards,
| --
| Kohsuke Kawaguchi
| Sun Microsystems kohsuke.kawaguchi@sun.com
\=================================================================
Kohsuke subsequently reported that our current schemas are OK with
xerces. So that's four against one.
Conclusion: Our current schemas are technically valid (because
conforming processors are supposed to use lax mode in validating
annotations), so there's nothing here that should slow down the
people who are building the UBL pieces dependent on finished
schemas. That said, however, there does appear to be something
slightly wonky in the CoreComponentParameters module.
Norm's intuition leads him to suspect that an element name
previously used is not used now and the annotation was not
properly updated to reflect this. My hunch based on Norm's
intuition is that this has something to do with the specification
of UBLAmountType in UBL-SpecialisedDatatypes-1.0.xsd. If my hunch
is right, it will be because it stood on the shoulders of
giants. :-)
So: Let's proceed, but perhaps Tim and Stephen can take a look at
this...
Jon