p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Homme Profil pro
    WEB
    Inscrit en
    août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

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

    Informations forums :
    Inscription : août 2011
    Messages : 15
    Points : 7
    Points
    7

    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 : 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
    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 : 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
    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...

  2. #2
    Membre Expert
    Inscrit en
    octobre 2011
    Messages
    791
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 791
    Points : 1 373
    Points
    1 373

    Par défaut

    [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.

  3. #3
    Invité régulier
    Inscrit en
    avril 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 12
    Points : 9
    Points
    9

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Invité régulier
    Homme Profil pro
    WEB
    Inscrit en
    août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

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

    Informations forums :
    Inscription : août 2011
    Messages : 15
    Points : 7
    Points
    7

    Par défaut

    Merci pour vos réponses, après m'être pencher un peu mieux sur le code, elles m'ont bien aidé.

    Bien à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSD] Problème de validation XSD (bis)
    Par AlambicTalon dans le forum XML
    Réponses: 7
    Dernier message: 24/04/2008, 20h47
  2. [XSD] Problème de validation XSD
    Par ploxien dans le forum XML
    Réponses: 5
    Dernier message: 17/04/2008, 00h10
  3. Réponses: 1
    Dernier message: 14/02/2007, 08h14
  4. [XSD] problème de validation
    Par anitshka dans le forum Valider
    Réponses: 1
    Dernier message: 23/11/2006, 12h38
  5. Réponses: 2
    Dernier message: 20/09/2006, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo