Utiliser la transformation identité : Jython + JAXP

02/06/2003

La transformation identité permet de générér un arbre xml résultat identique à celui fourni en entrée.

Ainsi, pour écrire un arbre DOM dans un flux, sans faire appel à des librairies externes, il est possible de n’utiliser que JAXP.

from org.w3c.dom import *
from javax.xml.parsers import *
from javax.xml.transform import *
from javax.xml.transform.dom import *
from javax.xml.transform.stream import *
from java.lang import System

# create the dom document
db = DocumentBuilderFactory.newInstance().newDocumentBuilder()
doc = db.getDOMImplementation().createDocument(None, "root", None)
doc.appendChild(doc.createComment("created by jaxp"));
doc.getDocumentElement().appendChild(doc.createElement("foo"))
doc.getDocumentElement().getFirstChild().appendChild(doc.createTextNode("bar"))
doc.getDocumentElement().appendChild(doc.createProcessingInstruction("myPI", "help :) "))

# generate output
tr = TransformerFactory.newInstance().newTransformer()
tr.transform(DOMSource(doc),StreamResult(System.out))

La première partie construit un arbre DOM simple. La seconde utilise la transformation identité pour diriger le resultat de la transformation sur la console. Ne passer aucune feuille de style au transformateur JAXP revient à lui indiquer d’utiliser la feuille de style identité.

Le résultat est le suivant :


<root><foo>bar</foo></root>