2012-10-13 5 views
0

Ceci est le résultat que je voudrais avoir:Comment générer du XML avec un nœud qui spécifie un espace de noms pour lui-même?

<?xml version="1.0" encoding="utf-8"?> 
<types> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"/> 
</types> 

mais en utilisant la solution simple:

$document = new DOMDocument('1.0', 'utf-8'); 

$schema = $document->createElementNS('http://www.w3.org/2001/XMLSchema', 'xs:schema'); 

$types = $document->createElement('types'); 
$types->appendChild($schema); 

$document->appendChild($types); 

echo $document->saveXML(); 

Je reçois seulement ceci:

<?xml version="1.0" encoding="utf-8"?> 
<types xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"/> 
</types> 

Qu'est-ce que je manque?

Répondre

4

Le problème est dans l'ordre de l'ajout d'enfants. Essayez ceci:

$document = new DOMDocument('1.0', 'utf-8'); 

$types = $document->createElement('types'); 
$schema = $document->createElementNS('http://www.w3.org/2001/XMLSchema', 'xs:schema'); 

$document->appendChild($types); 
$types->appendChild($schema); 

echo $document->saveXML(); 
+0

Comment le saviez-vous? Y a-t-il une logique derrière cela ou une explication raisonnable? La chose terrible est que c'est une simplification et je dois les ajouter dans l'ordre comme dans la question :-( – zerkms

+3

@zerkms J'ai besoin de relire les docs pour vous donner la réponse précise à la question dans votre commentaire – Serge

Questions connexes