Re,
Quand on fait ca:
>
> Source s = new DOMSource(dom);
> Result result = new StreamResult(out);
> Transformer xformer = TransformerFactory.newInstance ().newTransformer();
> xformer.transform(s, result);
> System.out.println(out.toString());
>
> Comment est-ce que la liste des noeuds a-t-elle été récupérée?
La liste des noeuds est dans ton objet Document (dom)
Voir http://www.docjar.com/docs/api/org/w3c/dom/Document.html pour plus
d'info
Elle a été récupérer par la méthode parse du DocumentBuilder
On modifie dom en modifiant nodes...
Oui
Je ne comprends pas bien comment out a été
> modifié? Comment ce Transformer marche?
L'objet Transformer est utilisé pour appliquer une transformation xsl à une
source xml
Voir http://www.docjar.com/docs/api/javax/xml/transform/Transformer.htmlpour
la doc
Donc on a xml + xsl = un autre xml tranformé
La signature de tranform :
public abstract void *transform*(Source
<http://www.docjar.com/docs/api/javax/xml/transform/Source.html>
xmlSource,
Result
<http://www.docjar.com/docs/api/javax/xml/transform/Result.html>
outputTarget)
Donc on à la source (le xml) et on indique un objet Result qui va contenir
le résultat.
Parenthèse : Et le xsl dans tout ça ?
Là il faut remonter à la création de l'objet Transformer
Il est obtenu à partir d'un objet TransformerFactory
doc :
http://www.docjar.com/docs/api/javax/xml/transform/TransformerFactory.html
Dans notre cas deux méthodes nous intéresse
public abstract Transformer
<http://www.docjar.com/docs/api/javax/xml/transform/Transformer.html>
*newTransformer*(Source
<http://www.docjar.com/docs/api/javax/xml/transform/Source.html>
source)
throws
TransformerConfigurationException
<http://www.docjar.com/docs/api/javax/xml/transform/TransformerConfigurationException.html>
Creates a new transformer using the specified stylesheet.
public abstract Transformer
<http://www.docjar.com/docs/api/javax/xml/transform/Transformer.html>
*newTransformer*()
throws
TransformerConfigurationException
<http://www.docjar.com/docs/api/javax/xml/transform/TransformerConfigurationException.html>
Creates a new transformer that applies the identity transform.
Si j'avais voulus tranformer le xml j'aurai utilisé le newTransformer(Source
source) qui prend en paramètre le xsl.
Pour l'exemple, j'ai utilisé l'autre qui n'a pas de paramètre et qui
effectue une "identity tranform" (je ne suis pas sur pour la traduction je
laisse en anglais !) donc le xml reste pareil.
Voila fin de la parenthèse, j'espère que ça a répondu à la question "comment
marche le Transformer".
Pour l'objet out, il s'agit d'un StringWriter donc ça se comporte comme un
objet Writer, c'est à dire qu'on peut y écrire un flux de caractères. Sauf
que cet Objet n'écrit pas dans un fichier mais dans un String.
"Comment à t'il été modifié" : il a été modifié par la fonction transform de
l'objet Transformer.
Enfin en tout cas ca marche!
> Merci encore!
> Sophie
De rien, surtout si tu as d'autres question n'hésite pas !
Regarde bien les javadoc de chacun des objets que j'ai mis dans l'exemple
car les possibilités sont grandes (tu peux utiliser des inputStream si tu
veux par exemple).
J'espère que tu as tout compris et que je n'ai pas dit de bêtise ! (pas de
panique, si c'est le cas d'autres feront les corrections ;-)
A+
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu May 18 22:41:17 2006