[Danger : débutant]
Je cherche à mettre des contraintes référentielles et d'unicité dans
un schéma W3C/XSD. Avec une DTD, j'utilisais ID et IDREF. Avec les W3C
Schema, si on en croit le O'Reilly, il est plutôt conseillé d'utiliser
key/keyref (notamment parce qu'ils fonctionnent avec des éléments, pas
seulement des attributs).
J'ai donc tenté la chose et, bien que mon schéma soit accepté, un
document clairement invalide (deux clés identiques et une référence à
une clé inexistante) est quand même accepté par xmllint.
Bogue de xmllint ou bien mauvaise compréhension de ma part ?
[Quelqu'un connait un autre validateur en logiciel libre pour comparer
?]
-- Attached file included as plaintext by Ecartis --
<?xml version="1.0"?>
<schema:schema xmlns:schema="http://www.w3.org/2001/XMLSchema">
<schema:element name="content">
<schema:complexType>
<schema:sequence>
<schema:element minOccurs="1" maxOccurs="unbounded" ref="foo"/>
<schema:element minOccurs="1" maxOccurs="unbounded" ref="bar"/>
</schema:sequence>
</schema:complexType>
</schema:element>
<schema:element name="foo">
<schema:complexType>
<schema:sequence>
<schema:element name="name" type="schema:string"/>
<schema:element name="mybar" type="schema:NMTOKEN">
<schema:keyref name="ref-to-my-bar" refer="ref">
<schema:selector xpath="content/bar/ref">
<schema:field xpath="text()"/>
</schema:selector>
</schema:keyref>
</schema:element>
</schema:sequence>
</schema:complexType>
</schema:element>
<schema:element name="bar">
<schema:complexType>
<schema:sequence>
<schema:element name="name" type="schema:string"/>
<schema:element name="ref" type="schema:NMTOKEN">
<schema:key name="unique-ref">
<schema:selector xpath="bar/ref">
<schema:field xpath="text()"/>
</schema:selector>
</schema:key>
</schema:element>
</schema:sequence>
</schema:complexType>
</schema:element>
</schema:schema>
-- Binary/unsupported file stripped by Ecartis --
-- Type: application/xml
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Mon Jan 16 13:55:07 2006