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 :

Validation DTD et xsd


Sujet :

Valider XML

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Validation DTD et xsd
    Bonjour à toutes et à tous
    Je débute en xml DTD et xsd et j'aimerais avoir votre avis quant à la validité de mes documents.

    le 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
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <carte xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="essai.xsd">
    	<entree>
    		<plat nom="entree1" prix_unitaire="5" quantite_mini="4">
    		</plat>
    		<plat nom="entree2" prix_unitaire="7" quantite_mini="2">
    		</plat>
    	</entree>
    	<resistance>
    		<plat nom="plat1" prix_unitaire="8" quantite_mini="6">
    		</plat>
    		<plat nom="plat2" prix_unitaire="12" quantite_mini="4">
    		</plat>
    	</resistance>
    	<dessert>
    		<plat nom="dessert1" prix_unitaire="5" quantite_mini="2">
    		</plat>
    		<plat nom="dessert2" prix_unitaire="7" quantite_mini="4">
    		</plat>
    	</dessert>
    	<menus>
    		<menu nom="menu1" entree="entree1" plat="plat2" dessert="dessert1" ristourne="3" quantite_mini="4" />
    		<menu nom="menu2" entree="entree1" plat="plat1" dessert="dessert2" ristourne="4" quantite_mini="6" />
    	</menus>
    </carte>
    le 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
    <!ELEMENT carte (entree?,resistance?, dessert?, menus?)>
    <!ELEMENT entree (plat+)> 
    <!ELEMENT resistance (plat+)>  
    <!ELEMENT dessert (plat+)>
    <!ELEMENT plat EMPTY> 
    <ATTLIST plat 
    	nom ID #REQUIRED 
    	prix_unitaire CDATA #REQUIRED
    	quantite_mini CDATA #REQUIRED 
    >		
    <!ELEMENT menus (menu+)>  
    <!ELEMENT menu EMPTY>  
    	nom ID #REQUIRED  
    	entree CDATA #REQUIRED  
    	plat CDATA #REQUIRED  
    	dessert CDATA #REQUIRED  
    	ristourne CDATA #IMPLIED 
    	quantite_mini CDATA #REQUIRED 
    >
    et pour finir le 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    	<xsd:element name="carte"> 
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="entree"/>
    				<xsd:element name="resistance"/>
    				<xsd:element name="dessert"/> 
    				<xsd:element name="menus"/> 
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="entree">  
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="plat"/> 
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="resistance">  
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="plat"/> 
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="dessert">  
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="plat"/>  
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="plat"> 
    		<xsd:complexType>
    			<xsd:attribute name="nom" type="xs:string" use="required"/>
    			<xsd:attribute name="prix_unitaire" type="xs:positiveInteger" use="required"/>
    			<xsd:attribute name="quantite_mini" type="xs:positiveInteger" use="required"/>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="menus">
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="menu"/>
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="menu">
    		<xsd:complexType>
    			<xsd:attribute name="nom" type="xs:string" use="required"/>
    			<xsd:attribute name="entree" type="xs:string" use="required"/>
    			<xsd:attribute name="plat" type="xs:string" use="required"/>
    			<xsd:attribute name="dessert" type="xs:string" use="required"/>
    			<xsd:attribute name="ristourne" type="xs:positiveInteger" use="optional"/>
    			<xsd:attribute name="quantite_mini" type="xs:positiveInteger" use="required"/>
    		</xsd:complexType>
    	</xsd:element>
    </xsd:schema>
    Voilà un grand merci à ceux qui pourront m'aider et merci d'avance

    Bonne journée
    Cordialement
    loboto

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    D'après Eclipse :

    - La DTD est mal formée et ne peut pas être utilisée pour valider un document.

    - Le XSD fait référence à des types inconnus, ceux qui commencent par xs: , car le préfixe xs: n'a pas été déclaré. Nous noterons au passage que tu as écrit ce XSD avec le préfixe xsd: et non pas xs:
    Le XSD est donc lui-même invalide et ne peut pas être utilisé pour valider un document.

    Mon conseil : installer un outil de validation de XML. Moi j'utilise Eclipse parce que c'est ce que j'ai sous la main, mais de nos jours on peut espérer que n'importe quel IDE sait le faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je ne m'occupe pas des erreurs de flappe possibles et ceux qui peuvent facilement se corriger - il y en a pas mal. La seule chose que je veux soulever est que les lignes comme:
    <xsd:element name="entree"/>
    ou
    <xsd:element name="plat"/>
    sont fondmentalement erronées. Il faut au lieu de name, y mettre ref pour réferer l'élément de "top" niveau.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut nouvel essai
    J'ai corriger quelques trucs et merci de vos réponse

    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
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <!DOCTYPE carte SYSTEM "exo.dtd">
    <carte xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="devoir.xsd">
    	<entree>
    		<plat nom="entree1" prix_unitaire="5" quantite_mini="4" />
     
    		<plat nom="entree2" prix_unitaire="7" quantite_mini="2" />
     
    	</entree>
    	<resistance>
    		<plat nom="plat1" prix_unitaire="8" quantite_mini="6" />
     
    		<plat nom="plat2" prix_unitaire="12" quantite_mini="4" />
     
    	</resistance>
    	<dessert>
    		<plat nom="dessert1" prix_unitaire="5" quantite_mini="2" />
     
    		<plat nom="dessert2" prix_unitaire="7" quantite_mini="4" />
     
    	</dessert>
    	<menus>
    		<menu nom="menu1" entree="entree1" plat="plat2" dessert="dessert1" ristourne="3" quantite_mini="4" />
    		<menu nom="menu2" entree="entree1" plat="plat1" dessert="dessert2" ristourne="4" quantite_mini="6" />
    	</menus>
    </carte>
    dtd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!ELEMENT carte (entree?,resistance?, dessert?, menus?)>
    <!ELEMENT entree (plat+)>
    <!ELEMENT resistance (plat+)>  
    <!ELEMENT dessert (plat+)> 
    <!ELEMENT plat EMPTY> 
    <!ATTLIST plat nom ID #REQUIRED prix_unitaire CDATA #REQUIRED quantite_mini CDATA #REQUIRED> 
     
    <!ELEMENT menus (menu+)>  
    <!ELEMENT menu EMPTY> 
    <!ATTLIST menu nom ID #REQUIRED entree CDATA #REQUIRED plat CDATA #REQUIRED dessert CDATA #REQUIRED ristourne CDATA #IMPLIED quantite_mini CDATA #REQUIRED>
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    	<xsd:element name="carte"> 
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="entree"/>
    				<xsd:element name="resistance"/> 
    				<xsd:element name="dessert"/> 
    				<xsd:element name="menus"/> 
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="entree">  
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="plat"/> 
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="resistance">  
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="plat"/>
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="dessert">  
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="plat"/>  
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="plat"> 
    		<xsd:complexType>
    			<xsd:attribute name="nom" type="xsd:string" use="required"/>
    			<xsd:attribute name="prix_unitaire" type="xsd:positiveInteger" use="required"/>
    			<xsd:attribute name="quantite_mini" type="xsd:positiveInteger" use="required"/>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="menus">
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="menu"/>
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    	<xsd:element name="menu">
    		<xsd:complexType>
    			<xsd:attribute name="nom" type="xsd:string" use="required"/>
    			<xsd:attribute name="entree" type="xsd:string" use="required"/>
    			<xsd:attribute name="plat" type="xsd:string" use="required"/>
    			<xsd:attribute name="dessert" type="xsd:string" use="required"/>
    			<xsd:attribute name="ristourne" type="xsd:positiveInteger" use="optional"/>
    			<xsd:attribute name="quantite_mini" type="xsd:positiveInteger" use="required"/>
    		</xsd:complexType>
    	</xsd:element>
    </xsd:schema>
    Voila quand je le passe au validateur http://www.xmlvalidation.com/

    j'ai ses erreurs :

    3: 105 Attribut "xmlns: xsi" doivent être déclarées pour type d'élément "carte".
    3: 105 Attribut "xsi: noNamespaceSchemaLocation" doivent être déclarées pour type d'élément "carte".
    pour cette lignes

    <carte xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="devoir.xsd">

    Pour ref j'ai essayer mais j'ai laissé tombé car j'avais d'autres erreurs
    et pour le validé avec un logiciel, je suis sous linux et j'ai rien trouvé

    merci et à bientôt

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par lobotoFix Voir le message
    Voila quand je le passe au validateur http://www.xmlvalidation.com/

    j'ai ses erreurs :

    3: 105 Attribut "xmlns: xsi" doivent être déclarées pour type d'élément "carte".
    3: 105 Attribut "xsi: noNamespaceSchemaLocation" doivent être déclarées pour type d'élément "carte".
    pour cette lignes

    <carte xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="devoir.xsd">
    Oui, c'est un peu le problème des DTD, un système obsolète. En plus, DTD et XSD servent à la même chose, alors ça ne sert à rien d'avoir les deux, il faut choisir.

    Citation Envoyé par lobotoFix Voir le message
    Pour ref j'ai essayer mais j'ai laissé tombé car j'avais d'autres erreurs
    Si vraiment tu veux gérer ça, c'est quand même pas compliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!ATTLIST carte
      xmlns:xsi CDATA #IMPLIED
      xsi:noNamespaceSchemaLocation CDATA #IMPLIED>
    C'est nul, parce que DTD c'est obsolète. Mais c'est pas compliqué.

    Citation Envoyé par lobotoFix Voir le message
    et pour le validé avec un logiciel, je suis sous linux et j'ai rien trouvé
    Bah si ça dérange pas xmlvalidation que tu passes ton temps à faire travailler leur site, je vois pas de raison de t'embêter à chercher autre chose.
    Comme je l'ai dit, utilisant Ecplise j'ai pas spécialement eu besoin de chercher plus pratique. Mais du coup il y a au moins ça : Eclipse.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Ha oui merci j'avais pas pensé à modifier la DTD. Je l'ai fait mais maintenant le validateur me dit qu'il faut un espace blanc avant le déclaration du type de l'attribut, ou un truc comme ça je parle pas très bien anglais.

    donc mon erreur et soit un espace blanc manquant dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ATTLIST carte xmlns:xsi CDATA #IMPLIED xsi:noNamespaceSchemaLocation CDATA #IMPLIED>
    soit cela provient des espaces de noms
    Pouvez vous m'aider encore svp

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Ok j'ai compris, mon problème viens de comment faire pour que cela apparaisse en xmlnssi
    merci pour vos réponse

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Qu'est-ce que c'est que ces  ?
    Vire-les, tout simplement. Que viennent-ils faire là ?

    Edit : je viens de me rendre compte que c'est des espaces d'épaisseur nulle. Je ne sais pas comment ils sont arrivés là, mais les enlever va être un peu compliqué vu qu'on ne les voit pas.
    Deux solutions :

    - un éditeur Hexa
    - tu sélectionnes et efface à partir de un peu avant eux, et jusqu'à un après eux. Ils seront effacés aussi. Puis tu retapes ce qui manque.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Ok merci cela fonctionne a merveille, j'ai effacé et retapé et tout est ok.
    je cherche comment on met résolu et je vous souhaite un exlent week end

    Cordialement
    loboto

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

Discussions similaires

  1. [XML]EntityResolver / Validation DTD fourni dans le jar
    Par Julaie95 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 30/12/2008, 23h37
  2. Valider XML avec XSD
    Par neilbgr dans le forum Langage
    Réponses: 10
    Dernier message: 26/03/2008, 16h01
  3. [debutant] erreur de validation DTD/schema
    Par loic_86 dans le forum Valider
    Réponses: 1
    Dernier message: 13/01/2006, 22h04
  4. [DOM] XML et validation DTD
    Par getupa dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 18/11/2005, 15h05
  5. DTD et XSD
    Par NeHuS dans le forum Valider
    Réponses: 2
    Dernier message: 07/11/2005, 14h55

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