Bonjour,

Voici mon problème.

J'ai un document XML qui à une structure bien définie, j'ai donc crée une DTD relative à cette structure.

Exemple (fictif pour énoncer le problème)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT root (action1* | action2*)>
<!ELEMENT action1 EMPTY>
<!ELEMENT action2 EMPTY>
Donc mon document ressemble à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "H:\Professionnel\Documentation\doc\dtd\test.dtd">
<root>
       <action1/>
       <action2/>
</root>
Par contre j'aimerai pouvoir insérer dans cette structure des noeuds qui ne sont pas décrit dans la DTD.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "H:\Professionnel\Documentation\doc\dtd\test.dtd">
<root>
       <action1></action1>
       <noeudNonDecrit>Un texte</noeudNonDecrit>
       <action2></action2>
       <noeudNonDecrit>Autre texte</noeudNonDecrit>
</root>
Il est évident que ce document n'est plus conforme à la DTD.

Donc j'aimerai pouvoir différencier les noeuds conforme à ma DTD de ceux qui ne le sont pas.

J'ai essayé avec deux namespaces mais la validation via la DTD ne fonctionne pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
]<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT xx:root (xx:action1* | xx:action2*)>
<!ELEMENT xx:action1 EMPTY>
<!ELEMENT xx:action2 EMPTY>
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "H:\Professionnel\Documentation\doc\dtd\test.dtd">
<xx:root xmlns:xx='http://MyDtd'>
       <xx:action1></xx:action1>
       <noeudNonDecrit>Un texte</noeudNonDecrit>
       <xx:action2></xx:action2>
       <noeudNonDecrit>Autre texte</noeudNonDecrit>
<xx:/root>
En fait ce que j'essaie de faire c'est un programme qui va traiter ce document XML et en produire un autre en sortie. Toutes balises du namespace xx: doivent faire l'objet d'un traitement dans le programme. Les autres doivent être reproduites directement dans un output (un peu à la manière du XSLT ou il est posible d'avoir des balises HTML mélangées à des balises XSLT).

Si quelqu'un à une idée, elle serait la bien venue.

Je peux évidement me passer de DTD, cela résoud le problème mais ce n'est pas le but.

Merci d'avance.

Salomé