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 :

Introduction au monde XML


Sujet :

XML/XSL et SOAP

  1. #1
    Rédacteur

    Introduction au monde XML
    Une simple introduction au monde XML qui sera très prochainement complétée par un article portant sur les choix de structure de XML.

    Vos commentaires peuvent permettre d'améliorer ces articles donc n'hésitez pas !

  2. #2
    Expert confirmé
    Je trouve qu'il est relativement synthétique et complet pour une introduction.

    J'ai cependant relevé ça :

    Les coquilles :
    • 1-A-3. Usages :
      "opendDocument"
    • 1-B-4. namespace :
      La balise ou il est déclaré
    • 2-A-2. SAX et 2-A-3. Autres :
      Il y'a des sauts de lignes dans une même phrase.
    • 2-B. La validation :
      "C'est le parseur ,"
    • 2-E. Echanges XML :
      interface d'utilisateur*


    Des compléments possibles d'information :
    • 1-B-1. L'en-tête :
      Dire que l'attribut encoding correspond à l'encodage actuel du document (c'est pas forcément évident ). Peut-être ajouter comment changer cet encodage.
    • 1-B-2. Les balises, appelées éléments :
      Peut-être préciser dans quel cas il faut ajouter une balise fermante et dans quel cas la balise est autosuffisante (<a>...</a>, <b/>). (d'après ce que je crois avoir compris il est obligatoire d'avoir la notation <b/> quand <b> n'a pas de contenu mais l'HTML en est un beau contre exemple, alors du coup j'ai un doute)
    • 1-C. Récapitulatif sur la construction d'un XML :
      Si j'ai bon en disant qu'une balise sans contenu doit être auto-fermante, le rajouter ici aussi.


    Mes questions :
    • 1-B-4. namespace :
      C'est possible d'avoir des balises d'un namespace différent à l'intérieur d'une balise avec un namespace donné ?
      Exemple 1 :
      Code :Sélectionner tout -Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      <n1:a>
        <b>
          <n1:c/>
        </b>
      </n1:a>

      Exemple 2 :
      Code :Sélectionner tout -Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      <n1:a>
        <n2:b>
          <n1:c/>
        </n2:b>
      </n1:a>
    • 1-B-8. Les entités :
      Perso j'utilise souvent le DTD externe, j'ai jamais mis l'attribut "standalone" à "no" (je connaissais pas son existence) et pourtant ça a toujours fonctionné, c'est normal ?


    Voilà voilà.
    Loceka.

  3. #3
    Rédacteur

    Citation Envoyé par Loceka Voir le message


    Des compléments possibles d'information :
    • [..] (d'après ce que je crois avoir compris il est obligatoire d'avoir la notation <b/> quand <b> n'a pas de contenu mais l'HTML en est un beau contre exemple, alors du coup j'ai un doute)
    • 1-C. Récapitulatif sur la construction d'un XML :
      Si j'ai bon en disant qu'une balise sans contenu doit être auto-fermante, le rajouter ici aussi.

    Comme tu as mauvais je ne vais pas faire la modif
    les deux écritures sont parfaitement valide
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    <a></a>
    </a>


    Citation Envoyé par Loceka Voir le message

    Mes questions :

    1-B-4. namespace :
    C'est possible d'avoir des balises d'un namespace différent à l'intérieur d'une balise avec un namespace donné ?
    Exemple 1 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <n1:a>
      <b>
        <n1:c/>
      </b>
    </n1:a>

    Exemple 2 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <n1:a>
      <n2:b>
        <n1:c/>
      </n2:b>
    </n1:a>

    Je reconnais ne pas avoir eu trop envie de m'étendre sur les namespaces, les possibilités d'imbrication étant énormes...mais oui, surtout si tu utilises les préfixes ont peut imbriquer les namespaces.
    Citation Envoyé par Loceka Voir le message

    1-B-8. Les entités :
    Perso j'utilise souvent le DTD externe, j'ai jamais mis l'attribut "standalone" à "no" (je connaissais pas son existence) et pourtant ça a toujours fonctionné, c'est normal ?
    J'évite les DTD autant que je peux, je ne pouvais néanmoins en faire l'impasse ici.
    Le standalone a à voir avec les entités pas nécessairement avec les DTD si elles n'en contiennent pas.

    Merci pour les commentaires, il me permettront de faire évoluer cet article dans le futur (pas immédiat j'ai plusieurs autres articles à venir)

  4. #4
    Modérateur

    Citation Envoyé par Loceka Voir le message
    1-B-4. namespace :
    C'est possible d'avoir des balises d'un namespace différent à l'intérieur d'une balise avec un namespace donné ?
    Oui.
    Les deux exemples que tu donnes sont possibles, et arrivent assez souvent dans certains formats en pratique.

    Citation Envoyé par Loceka Voir le message
    1-B-8. Les entités :
    Perso j'utilise souvent le DTD externe, j'ai jamais mis l'attribut "standalone" à "no" (je connaissais pas son existence) et pourtant ça a toujours fonctionné, c'est normal ?
    C'est normal, car la présence d'une DTD permettant de valider le document n'est pas forcément indispensable à son exploitation, même si elle existe.

    Par contre, si cette DTD définissait des ENTITY pour ce document, et que tu utilisais ces ENTITY à l'intérieur du document, ne pas avoir déclaré standalone="no" le rendrait mal formé. En effet, l'entité n'est pas définie à l'intérieur du document, donc le document ne peut pas être exploité sans sa DTD.

    Autre exemple : les DTDs qui définissent une valeur par défaut aux attributs s'ils sont absents. Le document seul sans DTD ne fournit pas ces valeurs par défaut, standalone doit donc être à "no". (Mais amusément, ça ne peut être vérifié que si une DTD est bien fournie et vérifiée pour validité.)
    => De manière générale, si la DTD modifie les données qui seraient obtenues par la seule lecture du document, standalone doit être à "no"... Mais pareil, à part la question des ENTITY, une erreur ne se voit que si on cherche à vérifier la validité du document par rapport à cette DTD.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java