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

  1. #1
    Membre actif
    Choix exclusif d'attributs (équivalent de xsd:choice pour les attributs)
    Bonjour,
    J'ai trouvé un sujet très intéressant parlant de cette possibilité : lien = http://www.developpez.net/forums/d32...oice-attribut/
    Ca répond parfaitement à ce que je cherche. Mais comme souvent impossible de faire en sorte que ça fonctionne.

    J'ai scolairement copié l'exemple donné dans le topic :
    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
    <xsd:element name="myElement">
     <xsd:complexType>
      <xsd:simpleContent>
       <xsd:extension base="xsd:string">
        <xsd:attribute name="a" type="xsd:string"/>
        <xsd:attribute name="b" type="xsd:string"/>
        <xsd:attribute name="c" type="xsd:string"/>
       </xsd:extension>
      </xsd:simpleContent>
     </xsd:complexType>
     <xsd:key name="att">
      <xsd:selector xpath="."/>
      <xsd:field xpath="@a|@b"/>
     </xsd:key>
    </xsd:element>


    Pour teste, j'ai écrit le XML suivant :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <myElement a="aa" b="bb" c="cc"/>


    Et aucun souci. le XML est validé.

    J'utilise Eclipse avec jdk1.7.0_45
    Je pencherais pour une mauvaise config dans Eclipse avec un mauvais "compilateur" XSD. Le fameux truc s'appelant XercesJ. Mais je n'ai pas trouvé où exactement ça se passe.

    Quelqu'un aurait déjà été confronté et réussi à régler le pb ?

    Merci d'avance pour vos réponses.
    Cordialement.

  2. #2
    Membre émérite
    Choix exclusif d'attributs (équivalent de xsd:choice pour les attributs)
    Dans le langage de w3c schéma version 1.0, c'est catégorique : il n'existe ce genre d'expression et c'est impossible de le faire.

    Dans le lien référentié
    je crois maintes assertions et conclusions là sont fausses.

    Dans la version 1.1, la situation s'améliore de beaucoup et il est maintenant tout à fait possible de le faire dedans le cadre du langage de w3c schéma. Au titre d'exemple tout comme la question posée ici et même plus compliqué, vous pouvez vous référer mes interventions dans ce lien :
    http://www.developpez.net/forums/f34/autres-langages/xml-xsl-soap/

  3. #3
    Membre actif
    Bonjour Tsuji,
    Tout d'abord merci pour ta réponse.

    J'avoue que j'étais perplexe avec ta réponse.
    J'ai passé toute la journée à réinstaller Eclipse et JDK pour les mettre à jour afin de prendre en charge le XML V1.1. Mais je n'ai pas réussi. Ou je suis passé à côté et je n'ai pas tout compris. J'ai même tenté de télécharger XercesJ en voulant mettre à jour les jar des pugin Eclipse. Pas réussi non plus.

    MAIS, au final, je suis tombé sur un topic avec une réponse écrite par tes soins qui m'a donnée LA solution. lien = http://www.tek-tips.com/viewthread.cfm?qid=1364846

    Tout y est et ça marche impec.
    Alors un grand merci à toi pour ce partage et le temps que tu y consacre.
    Bye.

  4. #4
    Membre émérite
    Bonjour,

    Quand je dis version 1.1 ou version 1.0, je dis toujours la version de recommendation de w3c xml schéma, non pas celle de w3c xml - ce ne sont pas les mêmes choses, bien entendu.

    La version 1.1 est maintenent assez bien supportée par xerces-j v2.11.x. Mais il faut le télécharger indépendamment.

    -tsuji

  5. #5
    Membre actif
    Bonjour Tsuji,
    Merci encore pour cette précision.
    Je m'en suis un peu douté lors de mes essais vendredi. Mais merci pour cette éclaircissement.

    Dernière chose si tu veux bien, concernant XercesJ, ok, je peux le télécharger indépendamment. Mais ce sera pour une utilisation "manuelle" depuis un code souhaitant valider un schéma xml ?
    On ne peut pas l'intégrer dans l'environnement Eclipse pour le developpement ? Enfin, je ne suis pas sûr car j'ai essayé en vain des trucs en ce sens vendredi mais je ne sais pas si j'avais les bonnes conditions pour réussir ou si carrément ce n'est pas possible.

    Merci d'avance pour ta réponse. Ensuite je te fiche la paix

  6. #6
    Membre émérite
    Si vous voulez utiliser les supports de fonctionalité schema v1.1 apportée par xerces-j 2.11.x en intégrant avec Eclipse, c'est fait comme n'importe quelle d'autre bibliothèque. Il suffit de faire pointer les jars externes dans les parcours de "built" et de faire le même dans la configuration de "run". Là, c'est comme d'habitude.

    Pourtant dans l'établissement de l'instance de SchemaFactory, vous faites la précision comme ça.
    Code java :Sélectionner tout -Visualiser dans une fenêtre à part
    SchemaFactory factory=SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1");

    C'est tout ce qu'il faut faire.