🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #8965

Re: [DTD/Schema] Liens vers entite

#8965
From: Thomas Broyer
Date: Tue, 03 Jul 2001 21:26
78 lines
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-mail
References: <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