Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1676 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu] xml et namespace

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] xml et namespace

n°1243367
art_dupond
je suis neuneu... oui oui !!
Posté le 10-11-2005 à 16:57:59  profilanswer
 

youp,
 
 
j'ai un fichier xml:

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <root xmlns:xi="http://www.w3.org/2001/XInclude">
  3.    <brol>
  4. <patapouet>
  5.    pouet
  6. </patapouet>
  7.    </brol>
  8.    <modules>
  9. <xi:include href="mod_news.xml">
  10.    <xi:fallback>
  11.       <error>xinclude: mod_news.xml not found</error>
  12.    </xi:fallback>
  13. </xi:include>
  14.    </modules>
  15. </root>


 
je voudrais générer cette partie dynamiquement
 

Code :
  1. <xi:include href="mod_news.xml">
  2.    <xi:fallback>
  3. <error>xinclude: mod_news.xml not found</error>
  4.    </xi:fallback>
  5. </xi:include>


 
pour ca, je fais :
 

Code :
  1. <?
  2. $xpath = new DomXPath($xml);
  3. $xparent = $xpath->query('/root/modules')->item(0);
  4. $xml_string = '<xi:include href="mod_cal.xml"><xi:fallback><error>xinclude: mod_cal.xml not found</error></xi:fallback></xi:include>';
  5. $sxe = simplexml_load_string($xml_string);
  6. $dom_sxe = dom_import_simplexml($sxe);
  7. $dom_sxe = $xml->importNode($dom_sxe, true);
  8. try {
  9. $xparent->appendChild($dom_sxe);
  10. }
  11. catch (Exception $e) {
  12. echo $e;
  13. }


 
-> Erreur:  

Citation :

Warning: namespace error : Namespace prefix xi on include is not defined


 
 
donc j'ajoute:  

Code :
  1. $xml->createAttributeNS("http://www.w3.org/2001/XInclude", "xmls:xi" );


 
mais ca ne change rien :(
 
 
quelqu'un pourrait me guider un peu ?
 
 
merci :)

Message cité 1 fois
Message édité par art_dupond le 10-11-2005 à 22:20:17

---------------
oui oui
mood
Publicité
Posté le 10-11-2005 à 16:57:59  profilanswer
 

n°1243433
shakpana
des fois, j'me demande ...
Posté le 10-11-2005 à 18:41:21  profilanswer
 

art_dupond a écrit :

-> Erreur:  

Citation :

Warning: namespace error : Namespace prefix xi on include is not defined



Je dirais que c'est normal vu que ton  
$xml_string = '<xi:include href="mod_cal.xml"> ...
n'a aucun namespace de définit vu que c'est juste un bout de XML, donc le parser te lance une erreur ...
mais tu devrais pouvoir le fixer en lui rajoutant son xmlns, mais bon, c'est un peu du brico ...
sinon faut te faire une implémentation DOM complète, qui serait plus complexe mais plus à propos.


---------------
Il faut toujours arrondir les angles -- Raymond Poincaré (à moins que ce soit de Cicéron)
n°1243578
art_dupond
je suis neuneu... oui oui !!
Posté le 10-11-2005 à 21:46:29  profilanswer
 

qu'est-ce que tu appelles une implémentation DOM complète ?
 
voilà mon code complet:
 

Code :
  1. $xml = new DOMDocument;
  2. $xml->preserveWhiteSpace = false;
  3. $xml->formatOutput = true;
  4. $xml->load('./layout.xml');
  5. try {
  6. $xml->createAttributeNS("http://www.w3.org/2001/XInclude", "xmlns:xi" );
  7. }
  8. catch (Exception $e) {
  9. echo $e;
  10. }
  11. ############
  12. # ajout modules #
  13. ############
  14. $xpath = new DomXPath($xml);
  15. $xparent = $xpath->query('/root/modules')->item(0);
  16. $xml_string = '<xi:include href="mod_cal.xml"><xi:fallback><error>xinclude: mod_cal.xml not found</error></xi:fallback></xi:include>';
  17. $sxe = simplexml_load_string($xml_string);
  18. $dom_sxe = dom_import_simplexml($sxe);
  19. $dom_sxe = $xml->importNode($dom_sxe, true);
  20. try {
  21. $xparent->appendChild($dom_sxe);
  22. }
  23. catch (Exception $e) {
  24. echo $e;
  25. }
  26. ##########
  27. # xincludage #
  28. ##########
  29. @$xml->xinclude();
  30. #######
  31. # envoi  #
  32. #######
  33. header("Content-Type: text/xml" );
  34. echo $xml->saveXML();


 
 
layout.xml

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <root xmlns:xi="http://www.w3.org/2001/XInclude">
  3.    <brol>
  4.       <patapouet>
  5.           pouet
  6.       </patapouet>
  7.    </brol>
  8.    <modules>
  9.       <xi:include href="mod_news.xml">
  10.           <xi:fallback>
  11.               <error>xinclude: mod_news.xml not found</error>
  12.            </xi:fallback>
  13.       </xi:include>
  14.    </modules>
  15. </root>


 
 
 
edit: je vais peut-être essayer avec cloneNode() ou replaceChild()


Message édité par art_dupond le 10-11-2005 à 21:56:50

---------------
oui oui
n°1243611
art_dupond
je suis neuneu... oui oui !!
Posté le 10-11-2005 à 22:17:58  profilanswer
 

bon je ne sais pas pourquoi j'ai voulu faire ca comme ca.
 
j'ai enlevé <modules></modules> de layout.xml
 
et j'ai ajouté  
 
<modules xmlns:xi="http://www.w3.org/2001/XInclude">...</modules>
 
dans mon xml_string
 
 
 


Message édité par art_dupond le 10-11-2005 à 22:20:03

---------------
oui oui

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [resolu] xml et namespace

 

Sujets relatifs
[CSS] - Probleme double marge IE : position:absolute [résolu]warning gcc [Résolu]
[MACRO excel / resolu ] creation d hyperliens amenant a des feuillets[ECLIPSE] ClearCase plugin->> Probleme Résolu
[VBS] (résolu) copy overwrite fonctionne pas.. pourquoi?[VBA-EXCEL 2003][resolu] suppression des feuilles contenant le mot
[Mysql]Resolu Probleme de migration 3.23 -> 4.1[RESOLU]Sélection d'un tableau Word
[Résolu][VB .net] Drag & drop entre deux applications[RESOLU] CSS : id de H1
Plus de sujets relatifs à : [resolu] xml et namespace


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR