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 :

Besoin d'aide avec un XSD !


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Besoin d'aide avec un XSD !
    Bonjour,
    ça fait depuis deux jours que je lis des tutos, des exemples, de la documentation sur la validation XML avec XSD et j'essaie de réaliser le fichier XSD, mais pas moyen d'avoir quelque chose qui marche.

    Mon XML est simple. Il contient une liste d'étiquette (label) et tous les enfants sont des noms alternatifs qui représente le label. Il peut y avoir un nombre illimité d'enfant, mais au moins 1. Pareil pour les label.

    Dans un deuxième temps, la validation devrait permettre de vérifier que le label ne contienne aucun charactères spéciaux, c'est-à-dire uniquement :
    a-z, A-Z, 0-9.

    Mon fichier 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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <MonTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="mavalid.xsd">
     
    <label name="AAA">
    	<othername>AA A</othername>
    	<othername>AAAAAAAAAAAA</othername>
    	<othername>A a a A</othername>
    </label>
    <label name="BBB">
    	<othername>BEBEBE</othername>
    	<othername>B B b B</othername>
    	<othername>bb b</othername>
    </label>
    </MonTest>
    Je ne publie pas les dizaines d'essais que j'ai fait avec le XSD. Voici seulement la dernière version que j'ai faite sur la base de plusieurs exemple détaillé trouvé sur le net.


    Mon fichier XDS :
    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     
    <xsd:element name="MonTest">
        <xsd:complexType>
            <xsd:sequence>				
    			<xsd:element name="label" type="xsd:int">
    			<xsd:complexType>
    					 <xsd:element name="othername" minoccurs="1" maxOccurs="unbounded"/>
    			</xsd:complexType>
    			</xsd:element>				
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    Je fais la validation en Java et j'obtiens ces erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    error: org.xml.sax.SAXParseException: s4s-elt-invalid-content.1: The content of '#AnonType_labelMonTest' is invalid.  Element 'element' is invalid, misplaced, or occurs too often.
    error: org.xml.sax.SAXParseException: src-element.3: Element 'label' has both a 'type' attribute and a 'anonymous type' child. Only one of these is allowed for an element.
    error: org.xml.sax.SAXParseException: cvc-complex-type.2.4.d: Invalid content was found starting with element 'label'. No child element is expected at this point.

    Je crois que l'on peut exclure un problème du code Java et affirmer que le problème vient effectivement du XDS.
    Pourtant, j'ai l'impression qu'il devrait être correcte...

    Est-ce que quelqu'un de plus expérimenté pourrait partager un peu de son savoir pour me sortir de cette impasse et m'aider à rendre ce fichier XDS utilisable pour mon XML ?!

    Merci beaucoup !

    dondamiano

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Points : 82
    Points
    82
    Par défaut
    salut,

    Cette déclaration ma parait erronée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsd:element name="label" type="xsd:int">
    au vu de ce qu'on trouve dans le xml : "AAAA", "BBBB", "CCCC", ...

    ça serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsd:element name="label" type="xsd:string">

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Points : 82
    Points
    82
    Par défaut
    D'autre part si tu utilises une sequence, tu te dois de déclarer le nombre d'iteration possible des éléments de la séquence :

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xs:element name="numero">
    <xs:complexType>
        <xs:sequence>
          <xs:element name="un" type="xs:string"/>
          <xs:element name="deux" type="xs:string"/>
          <xs:element name="trois" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    </xs:element>
    implique que l'élément "numero" doit contenir les éléments "un", "deux" et "trois" une fois et dans l'ordre!!

    pour pallier à cela, il faut utiliser les attributs "minOccurs" et "maxOccurs" dans l'élément séquence ou dans les éléments fils

    Du coup j'aurai fait un xsd de ce style :

    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
     
    <xs:element name="MonTest">
        <xs:complexType>
          <xs:sequence>
            <xs:element maxOccurs="unbounded" name="label">
              <xs:complexType>
                <xs:sequence>
                  <xs:element maxOccurs="unbounded" name="othername" type="xs:string" />
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" use="required" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>

Discussions similaires

  1. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 12h39
  2. [ASA] J'ai besoin d'aide avec sybase et vb6 svp !!
    Par tibo830 dans le forum SQL Anywhere
    Réponses: 7
    Dernier message: 12/05/2006, 10h09
  3. Besoin d'aide avec TinyXML
    Par Clad3 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/08/2005, 18h20
  4. Réponses: 2
    Dernier message: 29/08/2003, 17h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

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