From: Pascal MICHEL (Pascal.MICHEL@edfgdf.fr)
Date: 25/06/2003 - 12:45
Bonjour,
Je vous soumets mon souci de modélisation :
Voici un extrait simplifié de mon doc XML
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="modele.xsd">
<REF>
<TRI>ETC</TRI>
<COMPOSANT>
<NUM>1</NUM>
<VAL>...</VAL>
</COMPOSANT>
<COMPOSANT>
<NUM>2</NUM>
<VAL>...</VAL>
</COMPOSANT>
</REF>
<REF>
<TRI>OUPS</TRI>
<COMPOSANT>
<NUM>2</NUM>
<VAL>....</VAL>
</COMPOSANT>
<COMPOSANT>
<NUM>3</NUM>
<VAL>...</VAL>
</COMPOSANT>
</REF>
<REP>
<NUM>A1</NUM>
<LIB>...</LIB>
</REP>
<REP>
<NUM>A2</NUM>
<LIB>...</LIB>
</REP>
<TANDEM>
<LOCALISATION>
<TRI>ETC</TRI>
<NUM>2</NUM>
</LOCALISATION>
<ISO>A1</ISO>
<DEC>A2</DEC>
</TANDEM>
</root>
J'ai donc :
des références uniques (key) sur le trigramme /REF/TRI
des repères uniques (key) /REP/NUM
les contraintes référentiels qui vont avec
Voici ce que pourrait être mon modèle
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="DEC">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="ISO">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="LIB">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="NUM">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="VAL">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="TRI">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
<xs:element name="COMPOSANT">
<xs:complexType>
<xs:sequence>
<xs:element ref="NUM"/>
<xs:element ref="VAL"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LOCALISATION">
<xs:complexType>
<xs:sequence>
<xs:element ref="TRI"/>
<xs:element ref="NUM"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="REF">
<xs:complexType>
<xs:sequence>
<xs:element ref="TRI"/>
<xs:element ref="COMPOSANT"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="REP">
<xs:complexType>
<xs:sequence>
<xs:element ref="NUM"/>
<xs:element ref="LIB"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="TANDEM">
<xs:complexType>
<xs:sequence>
<xs:element ref="LOCALISATION"/>
<xs:element ref="ISO"/>
<xs:element ref="DEC"/>
</xs:sequence>
</xs:complexType>
<xs:keyref name="contrainteTRI" refer="cleREF">
<xs:selector xpath="LOCALISATION"/>
<xs:field xpath="TRI"/>
</xs:keyref>
<xs:keyref name="contrainteISO" refer="cleREP">
<xs:selector xpath="."/>
<xs:field xpath="ISO"/>
</xs:keyref>
<xs:keyref name="contrainteDEC" refer="cleREP">
<xs:selector xpath="."/>
<xs:field xpath="DEC"/>
</xs:keyref>
</xs:element>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="REF"
maxOccurs="unbounded"/>
<xs:element ref="REP"
maxOccurs="unbounded"/>
<xs:element ref="TANDEM"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--Une clef ne peut être que sur un seul noeud :-(
<xs:key name="cleCOMPOSANT">
<xs:selector xpath="REF"/>
<xs:field xpath="TRI"/>
<xs:field xpath=".//NUM"/>
</xs:key>
-->
<xs:key name="cleREF">
<xs:selector xpath="REF"/>
<xs:field xpath="TRI"/>
</xs:key>
<xs:key name="cleREP">
<xs:selector xpath="REP"/>
<xs:field xpath="NUM"/>
</xs:key>
</xs:element>
</xs:schema>
Mes pbls :
1) l'unicité de TRI/NUM. Par exemple ETC/{"2","val1"} et ETC/{"2","val2"}
==> erreur
2) placer correctement la contrainte relative à la localisation du tandem
: sur le couple : <TRI> + <NUM>, si la localisation est ETC/3 ==> erreur
3) le tandem ne peut être composé des deux mêmes valeurs ISO et DEC
Dans l'attente empressé de vous lire.
--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|