IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Valider XML Discussion :

[XSD] Ecriture d'un schema


Sujet :

Valider XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut [XSD] Ecriture d'un schema
    Bonjour

    A partir d'un code Perl, je crée un fichier XML assez basique :
    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"?>
    <header>
    <title>Fasta</title>
    <copyright>Copyrigth (c) 2005 My Company</copyright>
    <licence begin="Licence advertising:"></licence>
    <adress begin="Company contact:" name="My Company" street="24, rue du noyé" postal_code="5000" city="Namur" country="BELGIUM"></adress>
    <authors>
    	<author>
    		<name>GLDavid</name>
    		<email>gldavid@developpez.com</email>
    	</author>
    </authors>
    <filename begin="File:">fasta.cpp</filename>
    </header>
    Je veux donc pouvoir vérifier si ce fichier XML est valide. J'ai donc écrit manuellement le xsd suivant :
    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
     
    <?xml version="1.0"?>
    <xsd:schema 
    	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     
    <xsd:element name="header">
        <xsd:complexType>
          <xsd:sequence>
    	<xsd:element name="title" type="xsd:string"/>
    	<xsd:element name="licence" type="xsd:string"/>
    		<xsd:attribute name="begin" type="xsd:string" use="required"/>
    	<xsd:element name="adress" type="xsd:string"/>
    		<xsd:attribute name="begin" type="xsd:string" use="required"/>
    		<xsd:attribute name="name" type="xsd:string" use="required"/>
    		<xsd:attribute name="street" type="xsd:string" use="required"/>
    		<xsd:attribute name="postal_code" type="xsd:string" use="required"/>
    		<xsd:attribute name="city" type="xsd:string" use="required"/>
    		<xsd:attribute name="country" type="xsd:string" use="required"/>
    	<xsd:element name="authors">
        		<xsd:complexType>
        			<xsd:sequence>
        				<xsd:element name="authors">
        					<xsd:complexType>
        						<xsd:sequence>
        						<xsd:element name="name" type="xsd:string"/>
        						<xsd:element name="email" type="xsd:string"/>
        						</xsd:sequence>
        					</xsd:complexType>
        				</xsd:element>
        			</xsd:sequence>
        		</xsd:complexType>
        	</xsd:element>
    	<xsd:element name="filename" type="xsd:string"/>
    		<xsd:attribute name="begin" type="xsd:string" use="required"/>
          </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
     
    </xsd:schema>
    Seulement, j'obtiens des erreurs assez flous lors de tests de validations avec un prog Java ou Perl. J'en déduis que mon schema doit être mal écrit.
    Quelles peuvent être mes erreurs d'écriture du schema ?

    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    il y a deux problèmes dans ton schéma :

    1) Les éléments telles que <licence> et <adresse> sont dites de type complexe et à contenu simple (contiennent du texte et/ou des attributs mais pas d'éléments imbriqués. La définition de ce type d'élément se fait de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsd:element  name="licence">
      <xsd:complexType>
        <xsd:simpleContent>
          <xsd:extension base="xsd:string">
            <xsd:attribute name="begin" type="xsd:string" use="required"/>
          </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>        
    </xsd:element>
    2) Il te manque les cardinalités ; en l'occurrence, l'élément <copyright> devrait être déclaré avec minOccurs="0" puisqu'il est absent de ton instance XML.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre Expert
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Par défaut
    salut,

    tu as aussi un espace interdit ici:

    <?_xml version="1.0" encoding="utf-8"?>

    ++

    Thierry

    P.S. désolé pour l'oubli de la balise code mais c'est le seul moyen pour te montrer ou il était!

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Bonsoir GrandFather

    J'ai essayé d'appliquer tes conseils :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <?xml version="1.0"?>
    <xsd:schema 
    	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     
    <xsd:element name="header">
        <xsd:complexType>
          <xsd:sequence>
     
    	<xsd:element name="title" type="xsd:string"/>
     
    	<xsd:element name="copyright" minOccurs="0" type="xsd:string"/>
     
    	<xsd:element name="licence">
    	  <xsd:complexType>
    	    <xsd:simpleContent>
    	      <xsd:extension base="xsd:string">
    	        <xsd:attribute name="begin" type="xsd:string" use="required"/>
    	      </xsd:extension>
    	    </xsd:simpleContent>
    	  </xsd:complexType>       
    	</xsd:element>
     
    	<xsd:element name="adress">
    	<xsd:complexType>
    	    <xsd:simpleContent>
    	      <xsd:extension base="xsd:string">
    		<xsd:attribute name="begin" type="xsd:string"/>
    		<xsd:attribute name="name" type="xsd:string"/>
    		<xsd:attribute name="street" type="xsd:string"/>
    		<xsd:attribute name="postal_code" type="xsd:string"/>
    		<xsd:attribute name="city" type="xsd:string"/>
    		<xsd:attribute name="country" type="xsd:string"/>
    		</xsd:extension>
    	    </xsd:simpleContent>
    	  </xsd:complexType>       
    	</xsd:element>
     
    	<xsd:element name="authors">
        		<xsd:complexType>
        			<xsd:sequence>
        				<xsd:element name="author">
        					<xsd:complexType>
        						<xsd:sequence>
        						<xsd:element name="name" type="xsd:string"/>
        						<xsd:element name="email" type="xsd:string"/>
        						</xsd:sequence>
        					</xsd:complexType>
        				</xsd:element>
        			</xsd:sequence>
        		</xsd:complexType>
        	</xsd:element>
     
    	<xsd:element name="filename">
    	<xsd:complexType>
    	    <xsd:simpleContent>
    	      <xsd:extension base="xsd:string">
    		<xsd:attribute name="begin" type="xsd:string"/>
    		</xsd:extension>
    	    </xsd:simpleContent>
    	  </xsd:complexType>       
    	</xsd:element>
     
          </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
     
    </xsd:schema>
    Au test de validation, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element 'header': No matching global declaration available.
    Bon, faut que je cherche encore.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Ok, autant pour moi, mon erreur était aussi dans une modification de mon XML. Ca a l'air de tenir la route ce schema.
    Merci à vous deux et à charge de revanche !

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. [XSD] validité de mon schema
    Par veneto dans le forum Valider
    Réponses: 3
    Dernier message: 17/08/2006, 18h44
  2. [XSD] Conditions dans XML SCHEMA
    Par mehdi146 dans le forum Valider
    Réponses: 5
    Dernier message: 07/08/2006, 13h37
  3. [XSD] Où apprendre XML Schéma ?
    Par Fildz dans le forum Valider
    Réponses: 3
    Dernier message: 03/08/2006, 09h39
  4. [XSD] Comment créer un schema XML
    Par fle7a dans le forum Valider
    Réponses: 5
    Dernier message: 18/07/2006, 12h02
  5. [XSD] Ecriture d'un byte dans un XML
    Par Doodoo256 dans le forum Valider
    Réponses: 2
    Dernier message: 14/03/2006, 15h10

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