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

XML/XSL et SOAP Discussion :

création XSD choix entre X listes d'attributs


Sujet :

XML/XSL et SOAP

  1. #1
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut création XSD choix entre X listes d'attributs
    Bonjour,

    je cherche à réalisé une xsd qui accepterais le xml suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <balise att1="" att2="" att3="" />
    <balise att4="" />
    <balise att5="" />
    je ne veux pas autoriser des balise qui mélangerais les att1/2/3/4/5 autrement que ci-dessus.

    J'ai testé avec du attributGroup et du choice, ça ne marche pas, car non valide au niveau de la xsd.
    du complexType abastract marche pas.
    du key/field marche pas totalement, car ça accepte des éléments suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <balise att4="" att2="" />
    que je ne veux pas.

    quelqu'un aurait une idée ?

    Merci d'avance.
    Si un commentaire t'as aidé pense à mettre un .

  2. #2
    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
    Ce genre de contrainte s'appelle co-occurence contrainte dans la litérature, et ça fait aussi long temps de 10+ ans que depuis existence de w3c langage de schéma v1.0! Je veux dire seulement un simple google vous donne plus ou moins une réponse simple: négative. Soit on rélégue ce genre de validation au niveau d'application, soit par aide de relaxng, soit par deux étapes avec l'aide de schematron...

    Mais voici déjà quelque temps qu'on peut on principe le faire dans le cadre de w3c langage de schéma: c'est la version v1.1. Pourtant le support n'est pas répandu et pénétrant dans le sens comme par exemple un support porté par jaxb n'y est pas...

    Dans v1.1 on peut faire comme ça avec l'aide du composant xs:assert et xpath 2.0.
    Code xsd : 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
    <xs:element name="balise" type="baliseType" />
     
    <xs:complexType name="baliseType">
        <xs:complexContent>
            <xs:restriction base="xs:anyType">
                <xs:attribute name="att1" type="xs:string" use="optional" />
                <xs:attribute name="att2" type="xs:string" use="optional" />
                <xs:attribute name="att3" type="xs:string" use="optional" />
                <xs:attribute name="att4" type="xs:string" use="optional" />
                <xs:attribute name="att5" type="xs:string" use="optional" />
     
                <xs:assert test="
                   (
                   exists((@att1)) and exists((@att2)) and exists((@att3)) and not(exists((@att4))) and not(exists((@att5)))
                   )
                   or
                   (
                   not(exists((@att1))) and not(exists((@att2))) and not(exists((@att3))) and exists((@att4)) and not(exists((@att5)))
                   )
                   or
                   (
                   not(exists((@att1))) and not(exists((@att2))) and not(exists((@att3))) and not(exists((@att4))) and exists((@att5))
                   )
               " />
            </xs:restriction>
        </xs:complexContent>
    </xs:complexType>
    Voilà!

    Il faut bien entendu mettre l'attribut version="1.1" dans la ligne de xs:schema et sécure un moteur validateur qui supporte v1.1. Heursement, xerces-j à ce moment arrive à un état de support assez complet. Vous pouvez le charger depuis la site d'Apache et l'expérimentez avec.

    ps: Edition fait en enlevant des facets cardinaux sur xs:element balise parce qu'écrit comme ça c'est naturel de penser qu'elle est une xs:element globale.

  3. #3
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    Merci pour votre aide,
    Je teste cela dès que possible!

    Par contre les doubles parenthèses :

    Ont une importance ou est-ce une habitude de codage?
    Si un commentaire t'as aidé pense à mettre un .

  4. #4
    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
    Les doubles parenthèses ont une importance, pas trop apparantes, c'est vrai, mais elles ont une importance critique: ce sont des idiosyncracies de XPath 2.0, en particulier, la notion de séquence.

Discussions similaires

  1. [XSD] choix entre attributs et elements
    Par ama-deo dans le forum Valider
    Réponses: 6
    Dernier message: 08/03/2010, 20h21
  2. Réponses: 3
    Dernier message: 18/06/2008, 10h26
  3. [XSD] Choice entre attribute et element
    Par sanchou dans le forum Valider
    Réponses: 2
    Dernier message: 24/04/2008, 15h26
  4. [XSD] Dépendance entre deux attributs
    Par boux2 dans le forum Valider
    Réponses: 1
    Dernier message: 12/12/2006, 14h51
  5. [Débutant] Choix entre attribut par relation & aggrégation/composition ?
    Par GrandFather dans le forum Diagrammes de Classes
    Réponses: 14
    Dernier message: 04/12/2006, 10h12

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