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 :

[XML] Processeur : autorisation de refuser un fichier conforme ?


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut [XML] Processeur : autorisation de refuser un fichier conforme ?
    Bonjour,

    Je me pose une question bête, mais à laquelle j'ai besoin d'une réponse. Je sais qu'un processeur XML valide est dans l'obligation de refuser de traiter un fichier XML mal-formé...

    Mais à l'inverse, at-il le droit de refuser un fichier XML pourtant bien formé ? Par exemple, at-il le droit de refuser des fichiers au motif que les noms de tag utilise d'autres caractères que les caractères ASCII... par exemple ?

    Est-ce que le processeur est considéré conforme ou pas dans ce là ?

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

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

    Un parseur XML (on parlera de processeur plutôt dans le cas d'un traitement XSLT) ne "refuse" pas un document XML, il le parse s'il est bien formé, et le valide ou non à condition qu'il s'agisse d'un parseur validant et qu'une grammaire est disponible pour le document lu.

    Le cas des documents XML utilisant des encodages de caractères autre que Unicode est un peu plus complexe. Selon la norme, l'encodage des caractères du document parsé n'a pas d'importance, puisque tout est restitué en sortie en Unicode. En pratique, il existe pour certains parseurs des limitations au nombre d'encodages qu'ils peuvent lire (par exemple, pour libxml2, voir la liste des encodages possibles par défaut). En tout cas, c'est une limitation liée à l'implémentation du parseur et cela ne peut en aucun cas être "piloté" par le développeur qui l'utilise.
    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
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut
    Je comprend les distinctions, merci de les avoir souligné

    En fait, je dois refuser les nom de balises et d'attributs écrits avec autre chose que des caractères ASCII non-accentués, non pas parce que le parser ne saurait pas les lire (il n'accepte d'ailleur que UTF-8, et donc il pourrait recevoir ces caractères), mais pour des raisons de représentation interne : aprés le parsing, le contenu du document XML passe à la moulinette d'une application, en employant une représentation interne dans laquelle il y a une limite sur le jeux de caractère des noms de tags et d'attributs (à l'inverse, pour le contenu des éléments, tout est accepté).

    Je me posais cette question, pour savoir si cette limitation serait considérée comme une « mauvaise surprise » ou pas. Finalement, je me suis dit que le mieux est peut-être de le préciser dans la document, et de faire comme si le parseur était un processeur, qui applique une sorte de doctype implicite qui limite les nom de tag et d'attribu autorisé...

    De toute façon, je ne pense pas que la limitation des noms à un jeux de caractère ascii soit un vrai problème.

    Merci pour tes précisions

  4. #4
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    ce qyue tu veux empecher est les balises du type
    <coucou>éééé</coucou>
    ou bien
    <coucoué>tutu</coucoué>

    ou bien les deux
    Pour le cas 2 il suffit d'utiliser un schema ou une dtd

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par Hibou57
    Je me posais cette question, pour savoir si cette limitation serait considérée comme une « mauvaise surprise » ou pas. Finalement, je me suis dit que le mieux est peut-être de le préciser dans la document, et de faire comme si le parseur était un processeur, qui applique une sorte de doctype implicite qui limite les nom de tag et d'attribu autorisé...
    La limitation se situant dans le traitement "post-parsing", tu peux faire ce que tu veux à ce niveau... Là où il y a une impossibilité, c'est implémenter ce contrôle à une couche plus basse, celle du parseur, pour les raisons que j'ai invoquées. En fait, il y aurait peut-être - je n'en suis pas certain - une possibilité en exploitant les API bas niveau mises à disposition par certains parseurs XML (XNI pour Xerces par exemple) pour implémenter un contrôle d'encodage, mais ce serait tellement complexe et tarabiscoté que je te déconseille cette voie.
    Citation Envoyé par fraoustin
    Pour le cas 2 il suffit d'utiliser un schema ou une dtd
    Il n'existe dans les DTD ou les W3C XML Schemas absolument rien qui permette de restreindre les encodages possibles pour les documents valides.
    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

  6. #6
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    En faite pour moi dans une dtd tu indique que ta balise s'appelle "tete" et non pas "tété"

  7. #7
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut
    Bonjour GrandFather,

    Citation Envoyé par GrandFather
    Il n'existe dans les DTD ou les W3C XML Schemas absolument rien qui permette de restreindre les encodages possibles pour les documents valides.
    Tout à fait, tu es sage, tu as parlé, et tu as raison

    Je m'étais justement fait cette remarque que c'est impossible à exprimer avec une DTD.

    Mais c'est peut-être moi qui ait induit Fraoustin en erreur en parlant de doctype implicite : ce que j'appel doctype (pardon), c'est toute forme de description de la structure d'un document, et même par un algorithme quelconque.

    J'ai continué à me pencher sur la question, et je pourrai éventuellement au moins résoudre le problème de la représentation, pour qu'elle accepte tous les caractère valide pour un nom XML. Cette solution pourrait s'appliquer au nom d'attribut et au nom de tag.

    Mais il subsisterait encore un problème avec les nom de tag (je n'en dit pas plus).

    Je voulais surtout savoir si ce ne serait pas trop surprenant de la part d'une application traitant du XML.

    Par contre tu dis que le parser n'aurait pas le droit de le faire, mais c'est justement le parser qui fera ce controle, car il a été écrit spécialement pour cette application, il ne fonctionne que pour cette application, et est intimement intégré à celle-ci. Mais il y a une solution : je vais seulement changer le message d'erreur, pour dire « bien que ce caractère soit autorisé pour les noms XML, il n'est pas persmis par le type de document accepté par cette application : veuillez n'employer que des caractères ASCII non accentués ». Comme ça ce sera plus claire et plus conforme

    Merci d'avoir souligner cette necésité

Discussions similaires

  1. [XML] Incorporation de balises HTML dans fichier XML
    Par wazzzzza dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 26/07/2005, 15h17
  2. Réponses: 5
    Dernier message: 25/07/2005, 11h17
  3. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 17h51
  4. Réponses: 2
    Dernier message: 01/06/2004, 13h47
  5. [Réseau] Autorisations d'accès aux fichiers
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 19/05/2004, 14h43

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