Précédent   Forum du club des développeurs et IT Pro > Autres langages > XML/XSL et SOAP > Valider
Valider W3C XML Schemas, DTD, Relax NG, Schematron...) et tout ce qui permet de les mettre en oeuvre. Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/06/2012, 23h24   #1
Janko
Invité régulier
 
Homme Quentin Janssens
WEB
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Quentin Janssens
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : WEB
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2011
Messages : 15
Points : 8
Points : 8
Par défaut problème de validation XSD

Bonjour,

Je débute en XML. Je réalise un fichier dans lequel j'ai une classe avec des élèves et leurs infos (nom, prénom, age, classe, notes en cours de français, math et sciences...)

...et j'aimerais le valider avec un fichier xsd.

J'ai un problème au niveau du noeud "notes". Il semble ne pas vouloir prendre les différentes matières en compte à commencer par le français forcément puisque c'est le premier élément.

Pourriez-vous m'aider à y voir plus clair?

Voici le XML (j'ai réussi à le valider en DTD):
Code :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
<?xml version="1.0" encoding="iso-8859-1"?>
<classes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Users\Quentin\Desktop\prepa_exam_xml\3\classe3.xsd">
	<eleve id="e1" type="4">
		<nom>Dupont</nom>
		<prenom>Cédric</prenom>
		<age>10</age>
		<classe>4</classe>
		<notes>
			<francais>8</francais>
			<math>9</math>
			<sciences>9</sciences>
		</notes>
		<commentaire>Excellent</commentaire>
	</eleve>
	<eleve id="e2" type="5">
		<nom>Ben Ali</nom>
		<prenom>Samuel</prenom>
		<age>11</age>
		<classe>5</classe>
		<notes>
			<francais>5</francais>
			<math>6</math>
			<sciences>3</sciences>
		</notes>
		<commentaire>Médiocre</commentaire>
	</eleve>
	<eleve id="e3" type="4">
		<nom>Adam</nom>
		<prenom>Paul</prenom>
		<age>10</age>
		<classe>4</classe>
		<notes>
			<francais>7</francais>
			<math>8</math>
			<sciences>7</sciences>
		</notes>
		<commentaire>Bon</commentaire>
	</eleve>
	<eleve id="e4" type="5">
		<nom>Deschamps</nom>
		<prenom>Marc</prenom>
		<age>11</age>
		<classe>5</classe>
		<notes>
			<francais>8</francais>
			<math>8</math>
			<sciences>8</sciences>
		</notes>
		<commentaire>Excellent</commentaire>
	</eleve>
</classes>
et voici le fichier XSD:
Code :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!-- déclarer tous les noeuds de fin de chaîne-->
	<xs:element name="nom" type="xs:string"/>
	<xs:element name="prenom" type="xs:string"/>
	<xs:element name="age" type="xs:string"/>
	<xs:element name="classe" type="xs:string"/>
	<xs:element name="notes" type="xs:string"/>
	<xs:element name="commentaire" type="xs:string"/>
	<!-- déclaration du noeud root-->
	<xs:element name="classes">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="eleve" type="typeeleve" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- définir le type du noeud eleve -->
	<xs:complexType name="typeeleve">
		<xs:sequence>
			<xs:element ref="nom"/>
			<xs:element ref="prenom"/>
			<xs:element ref="age"/>
			<xs:element ref="classe"/>
			<xs:element ref="notes" type="typenotes"/>
			<xs:element ref="commentaire"/>
		</xs:sequence>
        <!-- déclaration des attributs -->
		<xs:attribute name="id" type="xs:integer" use="required"/>
		<xs:attribute name="type" type="typeattributetype" use="required"/>
	</xs:complexType>
	<!-- définir le type du noeud notes -->
	<xs:complexType name="typenotes">
		<xs:sequence>
			<xs:element ref="francais"/>
			<xs:element ref="math"/>
			<xs:element ref="sciences"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="typeattributetype">
		<xs:restriction base="xs:integer">
			<xs:enumeration value="4"/>
			<xs:enumeration value="5"/>
			<xs:enumeration value="6"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

Merci d'avance...
Janko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 09h07   #2
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 412
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 412
Points : 675
Points : 675
[1] Ligne #8, vous avez défini élément notes et du type xs:string.
[2] Ligne #26, vous référez notes mais adjoutant du type xs:typenotes. D'abord, ce n'est pas permi d'employer ref et type à la fois et en même temps. Un type typenotes derait avoir raison, donc, le élément global défini comme xs:string a tort.
[3] Lignes #36-38 réferent les éléments qui n'ont pas définis comme globaux.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2012, 03h48   #3
lucifer01
Invité régulier
 
Inscription : avril 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 12
Points : 8
Points : 8
Citation:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!-- déclarer tous les noeuds de fin de chaîne-->
	<xs:element name="nom" type="xs:string"/>
	<xs:element name="prenom" type="xs:string"/>
	<xs:element name="age" type="xs:string"/>
	<xs:element name="classe" type="xs:string"/>
	<xs:element name="notes" type="xs:string"/>
	<xs:element name="commentaire" type="xs:string"/>
	<!-- déclaration du noeud root-->
Pour moi tu devrais pas déclarer ceci en début de ton xsd mais l'imbriqué dans un complexType pour l'élément eleve, et tu crées aussi un complexType pour note aussi
lucifer01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2012, 15h27   #4
Janko
Invité régulier
 
Homme Quentin Janssens
WEB
Inscription : août 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Quentin Janssens
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : WEB
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : août 2011
Messages : 15
Points : 8
Points : 8
Merci pour vos réponses, après m'être pencher un peu mieux sur le code, elles m'ont bien aidé.

Bien à vous.
Janko est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h48.


 
 
 
 
Partenaires

Hébergement Web