Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[XML] Transformer

0 views
Skip to first unread message

Andreas Jaeger

unread,
Mar 17, 2004, 5:59:49 AM3/17/04
to
Document doc = db.parse("http://localhost:9080/test.xhtml");
// modify it somewhat
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.setOutputProperty(OutputKeys.METHOD, "html");
t.transform(new DOMSource(doc), new StreamResult(System.out));

Das funktioniert soweit ganz gut, aber mich stört, dass an jedes
einzelne Tag das alberne xmlns="http://www.w3.org/1999/xhtml"
angehängt wird. Kann man das durch einen einfachen Handgriff
abstellen?

Andreas

Daniel Urban

unread,
Mar 17, 2004, 4:10:53 PM3/17/04
to

"Andreas Jaeger" <ado...@uni-muenster.de> schrieb im Newsbeitrag
news:c39b35$usm$1...@sagnix.uni-muenster.de...

Das verwirrt mich ein wenig, zumindest bei Xalan 1.x war das noch nicht so.
Zumal Du oben auch noch "html" angibst, müßte doch eigentlich HTML generiert
werden und nicht XHTML. Welche XSLT-Engine benutzt Du?

Gruß,

Daniel

Andreas Jaeger

unread,
Mar 18, 2004, 8:08:32 AM3/18/04
to
Daniel Urban wrote:

> Das verwirrt mich ein wenig, zumindest bei Xalan 1.x war das noch nicht so.
> Zumal Du oben auch noch "html" angibst, müßte doch eigentlich HTML generiert
> werden und nicht XHTML. Welche XSLT-Engine benutzt Du?

org.apache.xalan.processor.TransformerFactoryImpl
org.apache.xalan.transformer.TransformerIdentityImpl

JDK 1.4.2 + eingebundene
TOMCAT5/common/endorsed/xercesImpl.jar
TOMCAT5/common/endorsed/xmlParserAPIs.jar

Daniel Urban

unread,
Mar 19, 2004, 12:56:52 PM3/19/04
to
Andreas Jaeger wrote:

> Document doc = db.parse("http://localhost:9080/test.xhtml");
> // modify it somewhat
> TransformerFactory tf = TransformerFactory.newInstance();
> Transformer t = tf.newTransformer();
> t.setOutputProperty(OutputKeys.METHOD, "html");
> t.transform(new DOMSource(doc), new StreamResult(System.out));

Was machst Du hier eigentlich? So wie ich das sehe gibt Dein Transformer
die Identität des DOM zurück, also transformiert er gar nicht. D.h.
die Namespaces kommen durch die Methode "db.parse" in Dein Dokument.
Kann das sein?

Das erklärt im übrigen auch, warum er kein HTML ausgibt, wie ich das
vermutet hatte und mich daher gewundert hatte.

Gruß,

Daniel

Andreas Jaeger

unread,
Mar 19, 2004, 6:12:34 PM3/19/04
to
Daniel Urban wrote:

> Was machst Du hier eigentlich? So wie ich das sehe gibt Dein Transformer
> die Identität des DOM zurück, also transformiert er gar nicht. D.h. die
> Namespaces kommen durch die Methode "db.parse" in Dein Dokument. Kann
> das sein?

Na ja, ich dachte mir, ich könnte mal meinen Kram XML-konform einlesen,
anschließend (vielleicht nicht wirklich, aber der Potenz nach) am DOM
herumfummeln und das Ergebnis dann wieder auswerfen. Ist das nicht
geschickt?

Wenn Du mit Deiner These recht hast (ich fahre jetzt für 2 Wochen in
den Urlaub, danach wird's verifiziert), scheint das xmlns-Attribut
implied für alle Tags zu sein. Das ist einerseits schön, andererseits
würde ich dennoch gern darauf verzichten. Kann man womöglich den
Transformer einfach ableiten? Irgendwie machen mich solche Sachen immer
nervös. Heute habe ich zum Beispiel einen Filter geschrieben, der alle
HTML-Kommentare aus von Tomcat gelieferten HTML-Seiten entfernt, da es
mich nervte, dass jeder die DreamWeaver-Template-Kommentare darin sehen
konnte. (Deswegen auch der Urlaub)

Andreas

Daniel Urban

unread,
Mar 19, 2004, 8:24:58 PM3/19/04
to

"Andreas Jaeger" <ado...@uni-muenster.de> schrieb im Newsbeitrag
news:c3fup3$kug$1...@sagnix.uni-muenster.de...

> Daniel Urban wrote:
>
> > Was machst Du hier eigentlich? So wie ich das sehe gibt Dein Transformer
> > die Identität des DOM zurück, also transformiert er gar nicht. D.h. die
> > Namespaces kommen durch die Methode "db.parse" in Dein Dokument. Kann
> > das sein?
>
> Na ja, ich dachte mir, ich könnte mal meinen Kram XML-konform einlesen,
> anschließend (vielleicht nicht wirklich, aber der Potenz nach) am DOM
> herumfummeln und das Ergebnis dann wieder auswerfen. Ist das nicht
> geschickt?

Doch. Aber ich bin nicht sicher, ob dann die Output-Werte auch übernommen
werden. Normalerweise setze ich die nicht im Java-Code, sondern im XSLT
selber.

> Wenn Du mit Deiner These recht hast (ich fahre jetzt für 2 Wochen in
> den Urlaub, danach wird's verifiziert), scheint das xmlns-Attribut
> implied für alle Tags zu sein.

Normalerweise erscheint es nur am ersten Tag, welches den Namespace
verwendet. Nach unten wird es dann "vererbt" und wird nicht noch einmal
ersetzt.


Gruß,

Daniel


0 new messages