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 :

entité externe XML


Sujet :

XML/XSL et SOAP

  1. #1
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut entité externe XML
    Bonjour,

    Voici mon fichier xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="utf-8" standalone="no" ?>
    <!DOCTYPE parent SYSTEM "entiteExterne.dtd">
    <parent>
        <famille>
            <garcon>Loic</garcon> 
            <fille>Martine</fille> 
        </famille> 
        &fam;
    </parent>
    et voici la dtd correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <!ELEMENT parent (famille)+>
    <!ELEMENT famille (garcon,fille)>
    <!ELEMENT garcon (#PCDATA)>
    <!ELEMENT fille (#PCDATA)>
    <!ENTITY fam SYSTEM "famille.xml">
    et le fichier famille.xls :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="utf-8"  ?>
    <famille>
        <garcon>Jean</garcon>
        <fille>Jeanine</fille>
    </famille>
    Je passe bien les validation XML, mais quand j'essaie d'afficher mon fichier, il m'affiche :

    Erreur d’analyse XML : entité non définie
    Emplacement : file:///T:/cours/xml/Exemples_cours/entiteExterne.xml
    Numéro de ligne 8, Colonne 5 : &fam;
    ----^
    Je ne sais pas pourquoi, merci pour votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Hello,

    cela arrive en général quand le parseur XML est configuré pour ignorer la DTD et ne même pas chercher à la lire ni la récupérer.
    En principe standalone="no" interdit au parseur d'ignorer la DTD, précisément pour des cas de ce genre. Mais, au final le parseur obéit à son utilisateur, pas à des documents qui viennent on ne sait d'où.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut
    Bonjour,
    Merci pour la réponse, mais alors comment faire ?
    Je viens d'essayer d'ouvrir le fichier avec php, j'ai le même message !
    Dois-je renoncer à utiliser des entity externes ?
    Merci pour la réponse

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Hello,

    Ben, euh, comment faire.... Quoi ?
    On va pas deviner quel est le but de la chose, lire une DTD ne t'intéresse probablement pas que pour la beauté du geste ?
    Au départ tu faisais un truc, ensuite c'est du PHP... Bon au final tu as besoin de quoi ?

    Quoiqu'il en soit je ne sais pas ce que tu avais au départ, et PHP je ne peux pas faire de support dessus parce que c'est de la parce que je ne connais pas bien.

    Je confirme, en tout cas, qu'insérer du contenu par mécanisme d'entités externes, pose en principe des soucis de sécurité et que les choses seront toujours plus faciles si tu ne le fais pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut
    Bonjour,


    Je voulais simplement rajouter du contenu XML à du contenu XML.
    Si ce n'est pas conseillé, je ferai différemment.
    Merci pour tes réponses.

  6. #6
    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
    ...quand j'essaie d'afficher mon fichier...
    Si vous voulez dire d'afficher le fichier sur un browseur, le systematique est un peu comme ceci: firefox et chrome ne vont pas faire charger le subset externe et ne vont pas contempler le support dans un temps futur probablement ça représente une risque de sécurité et aussi de tenir support au xml en plein à contre coeur quelque peu; pour IE, ça devrait normalement marcher en particulier quand vous ne voulez que regarder ce qu'il donne, le subset externe, durant développement... Au final, quand c'est pour un déploiement de production, à cause du support hétérogène, l'emploie du subset externe perd son utilité et on ne devrait pas risquer ça en général.

    Ceci étant dire, on peut toujours garder de l'écriture avec le subset externe si on continue d'utiliser dtd en xml parce que c'est une bonne pratique et il n'y pas de raison de désapprendre le technique de modulation etc... On peut conserver la structure sur le serveur et toujours charger le xml avant de servir le client par une chaîne de caractères avec les entités pleinement développées.

    Si c'est une site qui en serve le php, on peut faire sans trop peine, bien entendu. Pour le faire proprement, il faut charger le fichier proprement, comme ça. Ici, je prends simplexml au titre d'exemple.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $f_in="xyz.xml";    //celui qui contient la déclaration DOCTYPE etc...
    $doc=simplexml_load_file($f_in, null, LIBXML_DTDLOAD+LIBXML_NOENT);    //ici l'emploie du constructeur avec la bonne option est essentiel
    //et puis servir une chaîne de caractères ver le client
    $s=$doc->asXML();
    Et toutes les entités seront bien "développées" sans peiner le client. Voilà !

  7. #7
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Points : 112
    Points
    112
    Par défaut
    Bonjour,

    Merci pour cette réponse argumentée. Je vais essayer tout ça.

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XML] Inclusion par entité externe d'un morceau XML pas bien formé
    Par vieuxblasé dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 11/07/2011, 18h36
  2. [DTD] Entité externes
    Par malikoo dans le forum Valider
    Réponses: 2
    Dernier message: 02/07/2007, 18h14
  3. Adapter l'image externe.xml au cadre du MC
    Par elvis1203 dans le forum Flash
    Réponses: 4
    Dernier message: 06/06/2007, 10h02
  4. [XML] Problème d'entité externe dans mon XSLT
    Par fragmonster dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 13/04/2007, 15h55
  5. hibernate.cfg.xml Entité externe introuvable
    Par allstar dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/08/2006, 13h18

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