XML et importation par namespace

Répondre
LupusMic
le 03/06/2006 à 10:45
LupusMic
Salut,

J'ai un petit problème existentiel. J'ai un fichier XML qui sert de squelette. Dans celui-ci, je souhaite importer un fichier de données :

<?xml version="1.0"?>
<!DOCTYPE datas SYSTEM "../lib/xml/adventure.dtd">
<datas>
<adventure id="4" kind-id="1">
<title>Reflets d'acide.</title>
<synopsis></synopsis>
<critic></critic>
</adventure>

<kind id="1">
<title></title>
<content></content>
</kind>
</datas>


Pour ce faire j'ai le code suivant :

<?php

$wgDoc = DomDocument::load('page.wg.xml') ;
$advDoc = DomDocument::load('adventure.adv.xml') ;

@$wgDoc->validate() ;
@$advDoc->validate() ;

$finder = new DOMXPath($advDoc) ;

// extraction du premier nœud de données
$adv = $finder->evaluate('//adventure')->item(0) ;

$impAdv = $wgDoc->importNode($adv, true) ;
#var_dump($impAdv, $adv) ;
$menu = $wgDoc->getElementsByTagName('menu')->item(0) ;

// n'accepte malheuresement pas de namespace en argument :'(
$menu->appendChild($impAdv) ;

header('Content-type: text/xml') ;
echo $wgDoc->saveXML() ;

?>


Malheureusement, je ne parviens pas à trouver une méthode directe pour importer le fichier de données dans le fichier structurel en ajoutant un namespace distinct pour chacun. C'est important pour éviter les conflits de balise car le fichier issu est ensuite transformé à l'aide d'un fichier XSLT.

Faut-il que je surcharge la fonction appendChild pour ajouter la prise en compte d'un namespace ?

Merci pour vos conseils.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
zebden
le 04/06/2006 à 16:04
zebden
Je connais pas bien cette lib (pas encore tout du moins) mais t'as essayé avec :
$obj -> getElementsByTagNameNS ?

Une fois le noeud (donc getElementsByTagNameNS accepte les namespace) recupéré, je vois pas avec appendChild ce qu'il faudrait faire.
zebdinou pour les intimes / Blog : http://www.zebden.fr
LupusMic
le 04/06/2006 à 18:12
LupusMic
Je n'ai pas encore utilisé cette fonction parce que j'essaye de trouver une méthode générique. Mais visiblement, il n'en existe pas !

Je vais donc réécrire sur DomDocument une fois de plus ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours