From: Jean-Fabien.Curie@answare.fr
Date: 07/08/2002 - 09:55
Bonjour,
Je préconiserais l'utilisation des Complex Types pour les raisons suivantes
:
1° Ils sont crées une seule fois et applicables aux éléménts que tu veux.
2° Tu peux faire "hériter" un complextype d'un autre complex type sur le
principe des "poupées russes".
3° Tu peux référencer tes attributs au lieu de les créer au niveau de
l'élément...(1 seule déclacation de l'attribut avec son typage)
4° Tu peux effectuer le typage approprié à chaque niveau de complex type, te
permettant d'utiliser LE niveau de complex Type que tu souhaites.
Je peux te donner une adresse qui devrait te donner d'autres indications à
ce propos :
www.xfront.com. Il y a un tutorial XML-Schéma (très très complet) de M.
Roger Costello. sous forme de fichiers .ppt.
Tu peux utiliser XML SPY pour faire les exercices proposés.
Bon continuation et bon courage.
J-Fabien
Voici un exemple dont tu peux t'inspirer :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="edit" maxOccurs="unbounded">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="add" type="tailorType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="change" type="tailorType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="remove" type="tailorType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="replace" type="tailorType" minOccurs="0"
maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute ref="parent"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute ref="type"/>
</xs:complexType>
</xs:element>
<xs:complexType name="tailorType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="map" type="mapType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="node" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:complexContent>
<xs:extension base="mapnodeType">
<xs:attributeGroup ref="nodeattrGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:complexType name="mapnodeType">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="map" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
<xs:element name="map" type="mapType"/>
<xs:complexType name="mapType">
<xs:sequence>
<xs:element ref="entry" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="entry">
<xs:complexType>
<xs:attribute ref="key"/>
<xs:attribute ref="value"/>
<xs:attribute ref="Revisevalue"/>
</xs:complexType>
</xs:element>
<xs:complexType name="nodeType">
<xs:sequence>
<xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="node">
<xs:complexType>
<xs:complexContent>
<xs:extension base="mapnodeType">
<xs:attributeGroup ref="nodeattrGroup"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:attribute name="name" type="xs:NMTOKEN" use="optional"/>
<xs:attribute name="applies-to" type="xs:NMTOKEN" use="optional"/>
<xs:attribute name="key" type="xs:NMTOKEN" use="optional"/>
<xs:attribute name="value" type="xs:string" use="optional"/>
<xs:attribute name="Revisevalue" type="xs:NMTOKEN" use="optional"/>
<xs:attribute name="parent" type="xs:anyURI" use="required"/>
<xs:attribute name="type" type="xs:NMTOKEN" use="required" fixed="system"/>
<xs:attributeGroup name="nodeattrGroup">
<xs:attribute ref="name"/>
<xs:attribute ref="applies-to"/>
</xs:attributeGroup>
</xs:schema>
----- Original Message -----
From: "Gregoor, Van Der Eyken" <geyken@esual.com>
To: <xml-tech@xmlfr.org>
Sent: Wednesday, August 07, 2002 11:21 AM
Subject: [xml-tech] XSchema : complex type ou élément ?
Bonjour,
Etudiant un peu les schémas, je m'aventure avec XML Spy en générant à
partir de document de données, et la il demande comment je le veux
pour gerer mes elements complexes (en plus il fait chaud) :
complex type
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:complexType name="EmployeeType">
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="id" type="xs:byte" use="required"/>
<xs:attribute name="dpt" type="xs:string"/>
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="line" type="xs:short"/>
<xs:attribute name="phone" type="xs:string"/>
<xs:attribute name="email" type="xs:string"/>
<xs:attribute name="wireless" type="xs:string"/>
<xs:attribute name="function" type="xs:string"/>
<xs:attribute name="city" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="Staff">
<xs:complexType>
<xs:sequence>
<xs:element name="Employee" type="EmployeeType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
elements
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="Employee">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:attribute name="id" type="xs:byte" use="required"/>
<xs:attribute name="dpt" type="xs:string"/>
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="line" type="xs:short"/>
<xs:attribute name="phone" type="xs:string"/>
<xs:attribute name="email" type="xs:string"/>
<xs:attribute name="wireless" type="xs:string"/>
<xs:attribute name="function" type="xs:string"/>
<xs:attribute name="city" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Staff">
<xs:complexType>
<xs:sequence>
<xs:element ref="Employee" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
hormis la syntaxe légèrement différente pour ces schemas simples, y 'a t'il
un concept meilleur que l'autre, pourquoi ? Quel est celui qui a les faveurs
des experts ?
hein ! je pose la question !
merci
gregoor
--
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=subscribe)
--
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
|