Bonjour,
Je viens de me lancer dans les schémas XML avec XSD et j'ai quelques petits problèmes.
Après plusieurs tentatives je suis arrivé à ce schéma :
- fichier projets.xsd
- fichier projets.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 <?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="langage" type="xs:string" /> <xs:element name="description" type="xs:string" /> <xs:element name="link" type="xs:string" /> <xs:element name="documentation" type="xs:string" /> <xs:element name="duree" type="xs:string" /> <xs:element name="download" type="xs:string" /> <xs:element name="projet"> <xs:complexType> <xs:all> <xs:element ref="langage" /> <xs:element ref="description" /> <xs:element ref="link" /> <xs:element ref="documentation" /> <xs:element ref="duree" /> <xs:element ref="download" /> </xs:all> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="date" type="xs:string" use="required" /> <xs:attribute name="niveau" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema>
Ceci passe au validateur du W3C. Cependant, il y a encore quelques trucs que j'aimerais modifier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?xml version="1.0" encoding="utf-8" ?> <projets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./projets.xsd"> <projet name="xxx" date="xxx" niveau="xxx"> <langage>xxx</langage> <description>xxx</description> <link>xxx</link> <documentation>xxx</documentation> <duree>xxx</duree> <download>xxx</download> </projet> </projets>
Par exemple j'aimerais que la présence des toutes les balises fils de projet ne soit pas obligatoire. D'après ce que j'ai lu je pensais qu'avec <xs:all> on n'était pas obligé de mettre toutes les balises fils mais apparemment ce n'est pas le cas puisqu'en essayant de valider un fichier xml dans lequel j'ai enlevé la balise <download></download> par exemple, le validateur rejette mon document et me dit qu'il manque cette balise.
Savez vous ce que je dois préciser pour pouvoir faire ça ?
Enfin, j'ai une autre petite question. Pour la balise description j'aimerais la modifier pour qu'elle ait le comportement suivant :
- elle a un attribut de nom type qui peut prendre valeurs une ou l'autre des valeurs prédéfinies (short, long) obligatoirement- et ensuite son contenu est tjrs de type string
Là, je pense qu'il faut définir la balise description comme une balise de type Complexe mais une fois ceci fait je ne vois pas comment définir à l'intérieur que son contenu sera de type string et surtout comment mettre les contraintes concernant son attribut.
Quelqu'un aurait - il une piste à me donner pour définir ceci ?
Merci d'avance.
Sylvain.
Partager