[jdev] xsd's that don't validate
Peter Saint-Andre
stpeter at stpeter.im
Mon Jun 18 20:41:17 UTC 2012
On 6/18/12 2:13 PM, Ralph Carlson wrote:
> I added a missing ' to streams.xsd , after that I got an error about
> the two subject elements in jabber-server.xsd (below) sounds like it
> might not be a quick fix for me, I can bypass using these for now
>
> SystemID: http://xmpp.org/schemas/jabber-server.xsd Location: 87:20
> Description: sch-props-correct.2: A schema cannot contain two global
> components with the same name; this schema contains two occurrences
> of 'jabber:server,subject'. URL:
> http://www.w3.org/TR/xmlschema-1/#sch-props-correct
That appears to have been a copy-and-paste error in RFC 6121.
Congratulations for catching the error. :)
I've fixed it on xmpp.org and will also correct it in the document that
supersedes RFC 6121 (when we work on that -- it won't happen soon).
> SystemID: C:\xmpp\xsd\06182012\streams.xsd Location: 17:21
> Description: cos-nonambig: WC["urn:ietf:params:xml:ns:xmpp-tls"] and
> WC[##other:"http://etherx.jabber.org/streams"] (or elements from
> their substitution group) violate "Unique Particle Attribution".
> During validation against this schema, ambiguity would be created for
> those two particles. URL:
> http://www.w3.org/TR/xmlschema-1/#cos-nonambig
Ah yes, the Unique Particle Attribution rule. Try removing these lines
from your local copy of steams.xsd:
<xs:any namespace='urn:ietf:params:xml:ns:xmpp-tls'
minOccurs='0'
maxOccurs='1'/>
<xs:any namespace='urn:ietf:params:xml:ns:xmpp-sasl'
minOccurs='0'
maxOccurs='1'/>
(Those lines aren't strictly necessary, I suppose.)
> SystemID: C:\xmpp\xsd\06182012\streams.xsd Location: 68:21
> Description: cos-nonambig: "urn:ietf:params:xml:ns:xmpp-streams":text
> and WC[##other:"http://etherx.jabber.org/streams"] (or elements from
> their substitution group) violate "Unique Particle Attribution".
> During validation against this schema, ambiguity would be created for
> those two particles. URL:
> http://www.w3.org/TR/xmlschema-1/#cos-nonambig
You could fix that one by modifying the snippet for the <error/> element:
<xs:element name='error'>
<xs:complexType>
<xs:sequence xmlns:err='urn:ietf:params:xml:ns:xmpp-streams'>
<xs:group ref='err:streamErrorGroup'/>
<xs:element ref='err:text'
minOccurs='0'
maxOccurs='1'/>
<xs:any namespace='##other'
minOccurs='0'
maxOccurs='1'
processContents='lax'/>
</xs:sequence>
</xs:complexType>
</xs:element>
For example, by removing the xs:any. However, the problem here is a
limitation on the rules for W3C XML Schema itself, and I'd prefer not to
modify the streams.xsd schema to work around that problem.
Peter
More information about the JDev
mailing list