Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité régulier
    Homme Profil pro Quentin Janssens
    WEB
    Inscrit en
    août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Nom : Homme Quentin Janssens
    Âge : 34
    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 :
    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...

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

    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 : 8
    Points
    8

    Par défaut

    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

  4. #4
    Invité régulier
    Homme Profil pro Quentin Janssens
    WEB
    Inscrit en
    août 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Nom : Homme Quentin Janssens
    Âge : 34
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •