Article View: fr.comp.text.xml
Article #8965Re: [DTD/Schema] Liens vers entite
From: Thomas Broyer
Date: Tue, 03 Jul 2001 21:26
Date: Tue, 03 Jul 2001 21:26
78 lines
3595 bytes
3595 bytes
In <3B41BC18.70D13E8D@insalien.org>, Laurent AJDNIK wrote:
> Soit un fichier XML contenant une liste d'eleves. Chaque eleve a un nom,
> un age, et zero ou un parrain. Le parrain doit obligatoirement etre dans
> la liste des eleves.
>
> Comment DTDer tout ca ?
De plein de fa�ons diff�rentes, ne serait-ce que dans le choix des noms des
�l�ments, mais aussi (surtout) dans la structure voulue : attributs ou
sous-�l�ments.
Avec des sous-�l�ments, on pourrait avoir quelque chose de ce genre :
<!ELEMENT �l�ves (�l�ve)+>
<!ELEMENT �l�ve (nom, age)>
<!ATTLIST �l�ve
id ID #REQUIRED
parrain IDREF #IMPLIED
>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT age (#PCDATA)>
> A quoi ressemblerait un fichier XML conforme a cette DTD ?
<�l�ves>
<�l�ve id="e0001">
<nom>Thomas BROYER</nom>
<age>??</age>
</�l�ve>
<�l�ve id="e0002" parrain="e0001">
<nom>Laurent AJDNIK</nom>
<age>??</age>
</�l�ve>
</�l�ves>
Bien entendu, on pourrait "subdiviser" le nom en <pr�nom> et <nom>,
�ventuellement mis dans un �l�ment <identit�> ou autre.
Si le nom de famille seul est utilis�, il peut sans doute tenir place d'ID.
L'ID pourrait avoir une toute autre forme que eXXXX.
etc.
> A titre comparatif, en XML Schema, ca donnerait quoi ?
Je connais rien � XML Schema mais je sais qu'il y a �norm�ment de fa�ons
d'�crire la m�me chose. Quelque chose proche de la DTD au niveau
"conceptuel" reviendrait � quelque chose comme �a (� v�rifier, je rappelle
: je n'y connais rien � XML Schema) :
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="�l�ves" type="T�l�ves"/>
<xsd:element name="�l�ve" type="T�l�ve"/>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="age" type="xsd:duration"/>
<xsd:complexType name="T�l�ves">
<xsd:element name="�l�ve" type="T�l�ve" maxOccur="unbound">
</xsd:complexType>
<xsd:complexType name="T�l�ve">
<xsd:sequence>
<xsd:element ref="nom"/>
<xsd:element ref="age"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID" use="required"/>
<xsd:attribute name="parrain" type="xsd:IDREF"/>
<xsd:complexType>
</xsd:schema>
On peut bien entendu restreindre les types (le "format" de l'ID, etc.),
utiliser des cl�s plut�t que des ID/IDREF, etc.
Note aussi que l'<age> a ici un type bien d�fini (j'ai choisi xsd:duration,
c'est peut-�tre pas le meilleur, 'sais pas), donc une syntaxe bien d�finie
(cf. XML Schema, Part 2 pour en savoir plus)
Tom.
Technical Details
Message-ID:
<2593444.KmheAe9J7N@ltgt.net>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!isdnet!wanadoo.fr!proxad.net!feeder2-1.proxad.net!nnrp3.proxad.net.POSTED!not-for-mailReferences:
<3B41BC18.70D13E8D@insalien.org>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,ed6ef6154433ceb8 X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2001-07-03 14:26:11 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!isdnet!wanadoo.fr!proxad.net!feeder2-1.proxad.net!nnrp3.proxad.net.POSTED!not-for-mail Message-ID: <2593444.KmheAe9J7N@ltgt.net> From: Thomas Broyer <ptittom+news@free.fr> Subject: Re: [DTD/Schema] Liens vers entite Newsgroups: fr.comp.text.xml References: <3B41BC18.70D13E8D@insalien.org> Lines: 78 Organization: </> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8Bit Date: Tue, 03 Jul 2001 21:26:09 GMT NNTP-Posting-Host: 217.128.160.206 X-Complaints-To: abuse@proxad.net X-Trace: nnrp3.proxad.net 994195569 217.128.160.206 (Tue, 03 Jul 2001 23:26:09 CEST) NNTP-Posting-Date: Tue, 03 Jul 2001 23:26:09 CEST