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

Format d'échange (XML, JSON...) Java Discussion :

Problème de validation XML par rapport à un Schéma XSD [DOM]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Problème de validation XML par rapport à un Schéma XSD
    Je souhaite valider des fichiers XML par rapport au schéma 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="firm:invoice"
                elementFormDefault="unqualified"
                attributeFormDefault="unqualified"
                version="1.0">
    	<xsd:element name="invoice">
    		<xsd:complexType>
    			<xsd:sequence>
    				<xsd:element name="client">
    					<xsd:complexType>
    						<xsd:sequence>
    							<xsd:element name="name" type="xsd:string"></xsd:element>
    							<xsd:element name="firstname" type="xsd:string"></xsd:element>
    							<xsd:element name="address">
    								<xsd:complexType>
    									<xsd:sequence>
    										<xsd:element name="street"
    											type="xsd:string">
    										</xsd:element>
    										<xsd:element name="postalCode"
    											type="xsd:string">
    										</xsd:element>
    										<xsd:element name="City"
    											type="xsd:string">
    										</xsd:element>
    									</xsd:sequence>
    								</xsd:complexType>
    							</xsd:element>
    						</xsd:sequence>
    					</xsd:complexType>
    				</xsd:element>
    				<xsd:element name="articles" maxOccurs="1" minOccurs="1">
    					<xsd:complexType>
    						<xsd:sequence>
    							<xsd:element name="article" maxOccurs="unbounded" minOccurs="1">
    								<xsd:complexType>
    									<xsd:sequence>
    										<xsd:element name="id"
    											type="xsd:string">
    										</xsd:element>
    										<xsd:element name="description"
    											type="xsd:string">
    										</xsd:element>
    										<xsd:element name="quantity"
    											type="xsd:string">
    										</xsd:element>
    									</xsd:sequence>
    								</xsd:complexType>
    							</xsd:element>
    						</xsd:sequence>
    					</xsd:complexType>
    				</xsd:element>
    			</xsd:sequence>
    		</xsd:complexType>
    	</xsd:element>
     
    </xsd:schema>
    J'ai le fichier XML 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <invoice xmlns="firm:invoice">
      <client>
        <name>Dupont</name>
        <firstname>Franck</firstname>
        <address>
          <street>32, rue de la paix</street>
          <postalCode>75001</postalCode>
          <City>Paris</City>
        </address>
      </client>
      <articles>
        <article>
          <id>1</id>
          <description>article 1</description>
          <quantity>1</quantity>
        </article>
        <article>
          <id>23</id>
          <description>article 2</description>
          <quantity>3</quantity>
        </article>
        <article>
          <id>78</id>
          <description>article 3</description>
          <quantity>2</quantity>
        </article>
        <article>
          <id>14</id>
          <description>article 4</description>
          <quantity>1</quantity>
        </article>
      </articles>
    </invoice>
    Je valide le fichier à l'aide du code 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
    40
    41
    42
    43
    44
    45
     
     
    import javax.xml.XMLConstants;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Source;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.validation.Schema;
    import javax.xml.validation.SchemaFactory;
    import javax.xml.validation.Validator;
     
    import org.w3c.dom.Document;
     
    public class SchemaValidationTests
    {
     
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            try {
                Document document_l = null;
                DocumentBuilder parser_l;
                DocumentBuilderFactory docFactory_l = DocumentBuilderFactory.newInstance();
                docFactory_l.setNamespaceAware(true);
                parser_l = docFactory_l.newDocumentBuilder();
                document_l = parser_l.parse(SchemaValidationTests.class.getResourceAsStream("invoice.xml"));
     
                SchemaFactory factory_l = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
                Source[] sources_l = new Source[] {
                        new StreamSource(SchemaValidationTests.class.getResourceAsStream("invoice.xsd"))
                };
                Schema schema_l = factory_l.newSchema(sources_l);
                Validator validator_l = schema_l.newValidator();
                validator_l.validate(new DOMSource(document_l));
            }
            catch (Exception e) {
                e.printStackTrace();
            }
     
        }
     
    }
    J'obtiens alors l'erreur suivante:
    ERREUR : 'cvc-complex-type.2.4.a: Invalid content was found starting with element 'client'. One of '{"":client}' is expected.'

    Ou est mon erreur ? Merci pour votre aide.

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

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

    passe la valeur de l'attribut elementFormDefault en « qualified », puisque tous tes éléments appartiennent à l'espace de nom défini par targetNamespace.
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Merci pour ton aide. Quel est le sens de l'attribut elementFormDefault.

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

Discussions similaires

  1. [JAXB] Unmarshal erreur de validation incohérente par rapport au schéma
    Par la7su dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/01/2013, 09h00
  2. [DOM] php4 : validation d'un fichier XML par rapport à un XSD
    Par nannous dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 25/02/2008, 09h43
  3. [JAXP 1.2] Valider XML par schéma externe avec SAX (voire DOM)
    Par g_rare dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 17/07/2006, 19h48
  4. validation d'un document XML par rapport à une DTD
    Par sebastien2222 dans le forum Valider
    Réponses: 1
    Dernier message: 03/03/2006, 15h41
  5. [XSD][Java]Valider un XML par rapport a un XSD
    Par sikapoch dans le forum Valider
    Réponses: 11
    Dernier message: 08/11/2005, 15h21

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