Pretty Printer - SAXON

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Hallo,

ich transformiere von einem XML-Format in ein anderes mittels XSLT und SAXON 8. Ich bin mit der Formatierung jedoch nicht ganz zufrieden. Ich habe häufig Elemente mit vielen Attributen und die werden bei der Transformation mit Zeilenumbruch eingerückt. Ich hätte es allerdings lieber, dass sie alle in einer Zeile stehen:

Statt:

Code:
<foobar attr1="..."
        attr2="..."
        attr3="..."
        attr4="..."
        attr5="..."/>

hätte ich es gerne so:

Code:
<foobar attr1="..." attr2="..." attr3="..." attr4="..." attr5="..."/>


Ich habe nach einem geeigneten Output-Attribut gesucht, aber keins gefunden. Sieht bei mir so aus:

Code:
<xsl:output method="xml" indent="yes" encoding="iso-8859-1" />


Oder kann man SAXON irgendwie Formatierungsmerkmale mitteilen? Ich transformiere folgendermaßen:

Code:
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File(xml));
DocumentWrapper docw = new DocumentWrapper(doc, xml, new Configuration());
System.setProperty("javax.xml.transform.TransformerFactory",
	                   "net.sf.saxon.TransformerFactoryImpl");
TransformerFactory tfactory = TransformerFactory.newInstance();
Templates templates = tfactory.newTemplates(new StreamSource(xsl));
Transformer transformer = templates.newTransformer();
File output = new File(out);
transformer.transform(docw, new StreamResult(output));


Danke im Voraus...
byto
 

byte

Top Contributor
Ich habe nun bemerkt, dass nicht automatisch jedes neue Attribut in eine neue Zeile wandert. Anscheinend bricht SAXON im Result Document die Zeile bei den Attributen auf, sobald eine gewisse Zeilenlänge erreicht ist. Ich suche mich dumm und duselig, aber finde einfach keine Lösung dafür. :bahnhof:

Ich könnte natürlich die transformierte XML Datei nochmal mit JDOM einlesen und prettyprinten, aber das ist ja irgendwie nicht Sinn der Sache von XSLT. :autsch:
 

byte

Top Contributor
Habs jetzt erstmal so gelöst, dass ich das Result mit JDOM einlese und direkt wieder mit prettyformat rausschreibe. Ist nur irgendwie doof aber besser als keine Lösung.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben