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)
Donc mon document ressemble à ceci :
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>
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root SYSTEM "H:\Professionnel\Documentation\doc\dtd\test.dtd"> <root> <action1/> <action2/> </root>
Il est évident que ce document n'est plus conforme à 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>
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.
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).
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>
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é
Partager