Problem mit XSLT (wahrscheinlich ein Bug in Java 6)

Status
Nicht offen für weitere Antworten.

slawaweis

Bekanntes Mitglied
Hallo,

habe Heute den ganzen Tag an einem Problem verzweifeln und glaube inzwischen, dass es ein Bug in Java 6 ist. Deshalb wollte ich hier zuerst um eine Bestätigung fragen, bevor ich die Sache an SUN sende. Vielleicht ist das Problem ja schon bekannt und es gibt einen Workaround, oder ich mache was falsch :)

Ich versuche ein eigenes XML-Format per XSL in eine TXT-Datei umzuwandeln. Dabei kommen mit Java 4, 5, und 6 verschiedene Ergebnisse raus.

Hier eine Beispiel XML-Datei, die nur einen Tag hat, der zweimal vorkommt und jeweils 10 Attribute hat, einmal mit "%" und einmal ohne:

abc.xml
Code:
<?xml version="1.0" ?>

<?xml-stylesheet href="abc.xsl" type="text/xsl"?>

<document>

  <abc a1="10" a2="20" a3="30" a4="40"
       a5="50" a6="60" a7="70" a8="80"
       a9="90" a10="100"
       />
  
  <abc a1="10%" a2="20%" a3="30%" a4="40%"
       a5="50%" a6="60%" a7="70%" a8="80%"
       a9="90%" a10="100%"
       />

</document>

Hier eine Beispiel XSL-Datei, die diesen einen Tag von oben verarbeitet und dabei die Werte der Attribute einfach auflistet:

abc.xsl
Code:
<?xml version="1.0" ?>

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                >

  <xsl:output method="text" />

  <xsl:template match="abc">
    <xsl:value-of select="@a1" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a2" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a3" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a4" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a5" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a6" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a7" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a8" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a9" /><xsl:text> | </xsl:text>
    <xsl:value-of select="@a10" /><xsl:text> | </xsl:text>
  </xsl:template>

</xsl:stylesheet>

Jetzt versuche ich das ganze zu transformieren und habe folgende Ergebnisse:

für j2re1.4.2_18 und jre1.5.0_16, beide mit Eclipse 3.3 und Ant ausgeführt, sowie Firefox 3.0.5
Code:
  10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 
  
  10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | 100% |

was soweit das ist, was ich will. Jetzt führe ich das ganze auf Java 6 (mit Eclipse und Ant) aus und bekomme das:

für jre1.6.0_11, mit Eclipse 3.3 und Ant ausgeführt
Code:
  10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 
  
  10% | 20% | 30% | 40% | 50% | 60% | 80% | 80% | 100 | 100% |

man beachte die letzten 4 Zahlen in der unteren Reihe.

Kann das bitte jemand überprüfen? Für alle Tests habe ich die selbe Eclipse Installation verwendet. Ant verwendet seit Java 4 den in die JVM eingebauten XSLT-Prozessor. Der Ant-Task war:

Code:
  <target name="abc">

    <xslt in="abc.xml"
          out="abc.txt"
          style="abc.xsl"
          force="true">
    </xslt>

  </target>

Slawa
 

mvitz

Top Contributor
Output in Datei abc.txt
Code:
  10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 
  10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | 100% |

Sowohl:
Ubuntu 8.04.1 mit JDK 1.6.0.07 und Ant 1.7.0
WinXP SP3 mit JDK 1.6.0.11 und Ant 1.7.1
ergaben obiges.
 

slawaweis

Bekanntes Mitglied
Hallo habi55,

habi55 hat gesagt.:
Sowohl:
Ubuntu 8.04.1 mit JDK 1.6.0.07 und Ant 1.7.0
WinXP SP3 mit JDK 1.6.0.11 und Ant 1.7.1
ergaben obiges.

danke für deinen Test. Ich habe es jetzt auch auf puren Ant 1.7.0 und 1.7.1 ausprobiert und da läuft alles korrekt durch. Dann habe ich Java 6 Update 11 und Eclipse 3.4.1 frisch installiert und es dort mit Ant ausprobiert, mit dem gleichen Effekt, dass mit Java 6 Update 11 die Ausgabe nicht stimmt. Kann das bitte jemand überprüfen? Ich teste übrigens auf Windows XP SP2.

Slawa
 

xweber

Neues Mitglied
Code:
  10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 
		        
			  10% | 20% | 30% | 40% | 50% | 60% | 80% | 80% | 100 | 100% |

mit

Code:
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b15, mixed mode)
 

mvitz

Top Contributor
Code:
	10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 
	10% | 20% | 30% | 40% | 50% | 60% | 80% | 80% | 100 | 100% |

Mit Eclipse 3.4.1 (neu runtergeladen und installiert) auf JDK 1.6.0.11

Scheint also ein Eclipseproblem zu sein.
 

Ebenius

Top Contributor
Da Eclipse ja keine eigene JRE mitbringt, wohl aber einen eigenen Compiler: Passiert das selbe, wenn man die kompilierten Klassen aus den Eclipse-Projekten mit Java aus der Shell benutzt? Eventuell optimiert der JDT ja was kaputt?
 
G

Gelöschtes Mitglied 5909

Gast
10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |

10% | 20% | 30% | 40% | 50% | 60% | 70% | 80% | 90% | 100% |

xp sp3 java 6 u 11 ant 1.7.0

aus der Konsole aufgerufen
 

mvitz

Top Contributor
also bei mir Ant 1.7.1 und JDK 1.6.0.11 ging es auf der Console unter Win XP SP3. Mit Eclipse 3.4.1 auf derselber Maschine ging es nicht. Deswegen denke ich mal liegt es an Eclipse.
 

Ebenius

Top Contributor
habi55 hat gesagt.:
also bei mir Ant 1.7.1 und JDK 1.6.0.11 ging es auf der Console unter Win XP SP3. Mit Eclipse 3.4.1 auf derselber Maschine ging es nicht. Deswegen denke ich mal liegt es an Eclipse.
... in dem ja der JDT-Compiler verwendet wird. Ich würde das testen, bevor ich einen Bug-Report schreibe.
 

Ebenius

Top Contributor
habi55 hat gesagt.:
Was hat denn der Compiler mit einer XSLT Transformation zu tun? (Ich habe davon keine Ahnung)
Mit der Transformation hoffentlich gar nix. Aber vielleicht mit dem Code drumherum... Irgendwer gibt das doch aus... In einem Java-Programm, oder? Wenn der Compiler da Mist macht, kann das die seltsamsten Effekte hervorrufen. Und JDT optimiert eben extrem anders als Sun-Javac. Daher würde ich das einfach prüfen, ohne genauen Anlass.
 

Ebenius

Top Contributor
:oops: Ohje. ich hab gedacht, Du rufst nen XSLT-Processor aus Java heraus auf. Aber das passiert ja direkt im ANT. Wer lesen kann... Sorry.
 
G

Gelöschtes Mitglied 5909

Gast
dann wirds wohl an der ant version liegen die eclipse verwendet
 

slawaweis

Bekanntes Mitglied
danke an alle die es getestet haben. Es ist ein reines Eclipse und Ant-Integration Problem. Ohne Eclipse läuft alles richtig durch. Ich habe einen Workaround gefunden, das das Problem zwar nicht löst, aber umgeht. Dazu muss man sich Xalan runterladen und die vier JAR-Bibliotheken aus Xalan in den Build-Path des Ant-Aufrufts in Eclipse setzen. Dann läuft es ohne Probleme auch auf Java 6 durch. Man kann auch noch expliziert den Transformer in dem Ant-Task angeben:

Code:
  <target name="abc">

    <xslt in="abc.xml"
          out="abc.txt"
          style="abc.xsl"
          force="true">
      <factory name="org.apache.xalan.processor.TransformerFactoryImpl" />
    </xslt>

  </target>

um es zu untermauern, aber es geht auch ohne. Ant wählt wohl selber den Xalan-Prozessor aus, wenn der im Classpath verfügbar ist.

Slawa
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Xslt Problem XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
O XPATH Problem - Anfänger XML & JSON 4
so_ein_Komischer Problem mit Clean and Build XML & JSON 1
P JAXB-Problem XML & JSON 1
W Problem mit dem mit XML sortierung XML & JSON 2
S Jaxb Unmarshalling Problem XML & JSON 4
E einfaches Problem XML + XSD + jedit XML & JSON 2
B JasperReport Problem in Runtime XML & JSON 2
S Problem with JAXB unmarshalling classes that have the same name in @XmlRootElement XML & JSON 2
R Problem bei: XML und XSL zu HTML XML & JSON 2
M Read / write Problem beim ByteStrom XML & JSON 2
M XML write Problem zweiter Ansatz XML & JSON 3
M XML read Problem XML & JSON 4
M XML write Problem XML & JSON 2
whitenexx Problem beim parsen von Facebook XML XML & JSON 3
M XML Unicode Problem XML & JSON 2
S XJC --> Java-Objects compile Problem XML & JSON 4
F XPath-Problem mit DOM4J XML & JSON 8
B JPA + JAXB Mapping Problem XML & JSON 2
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
G Problem beim schreiben von XML in eine File XML & JSON 2
S Encoding Problem XML & JSON 7
K JAXB und Maps -> Marshalling-Problem XML & JSON 6
B Problem beim löschen von ChildNodes aus einem XML-DOM XML & JSON 3
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
M JExcelAPI (JXL) Encoding Problem XML & JSON 11
S DOM Parsen Problem mit HTML Sonderzeichen XML & JSON 4
A aus xml --> html Problem XML & JSON 3
Y stax Problem XML & JSON 3
T Problem beim Parsen von Attribut xmlns="urn:com:test&qu XML & JSON 6
P XPath Problem XML & JSON 2
J Problem beim XML-Lesen XML & JSON 2
M Problem mit FOP in Java Programm XML & JSON 2
S Problem mit XPath XML & JSON 4
J Problem mit compile einer XSD XML & JSON 3
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
A XPath Problem XML & JSON 2
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
B jdom: getChildren() problem XML & JSON 4
H XSL-FO Problem mit If XML & JSON 2
loadbrain XPath Problem XML & JSON 2
T addContent / Problem mit Variable XML & JSON 2
F Problem mit JAXB Unmarshaller XML & JSON 2
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
8 SAXParser Problem, startElement wird nicht ausgeführt XML & JSON 2
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
G Problem mit getContent XML & JSON 4
K stax problem XML & JSON 2
S Problem mit SAX XML & JSON 6
A Problem mit JasperReport XML & JSON 6
G DOCTYPE Problem beim Transformer/TransformerFactory etc. XML & JSON 13
C XSD Problem XML & JSON 16
R Problem bei Erstellung von XML(JDOM) XML & JSON 3
R Problem mit SAX-Parser characters() XML & JSON 7
M XPath Problem im Zusammenhang mit document() XML & JSON 2
P Problem beim erstellen eines neuen Elements (JDOM) XML & JSON 5
Z Problem mit getNodeValue() und setNodeValue() in DOM XML & JSON 6
H JAXB CUSTOMIZATION PROBLEM XML & JSON 2
M XPATH und RSS (Problem namespaces) XML & JSON 7
P SAXParser problem? XML & JSON 2
S Problem beim Erstellen eines pdfs XML & JSON 3
V Problem mit xsd XML & JSON 2
P XML mit hilfe von JDOM abspeichern macht Problem XML & JSON 6
G Problem mit addContent() XML & JSON 4
B DTD Problem - Reihenfolge der Einträge XML & JSON 2
R Problem beim Auslesen von Attributen XML & JSON 4
K Problem mit ant/java web services XML & JSON 4
K xml Datei mit JDOM erzeugen, Problem Namespaces XML & JSON 1
P Problem mit XML und DOM XML & JSON 2
W xslt zum Rausfiltern von Feldern in XML wenn variable gleich false XML & JSON 7
W xslt zum Entfernen von unnoetigen Nullkommastellen bei double und float XML & JSON 26
K XML und XSL bzw XSLT XML & JSON 1
R String in XSLT teilen XML & JSON 3
R Script in XSLT einbinden XML & JSON 2
K aus 2XML mache 1XML mit XSLT XML & JSON 4
G xslt Attributwerte von bestimmten Elementen XML & JSON 2
K docBook XSLT: HTML Code Snippet in Erzeugte HTML Dokument einfügen XML & JSON 9
T XML + XSLT to PDF mit FOP-Engine XML & JSON 14
E FOP - XSLT Transformierung mit Parametern XML & JSON 4
R '&' Zeichen im XSLT XML & JSON 4
S byte array in xslt umwandeln XML & JSON 7
B XSLT collections ? XML & JSON 2
Raidri JSP Parameter an XSLT übergeben XML & JSON 2
K XSLT Frage XML & JSON 4
S Guter XSLT - Transformator XML & JSON 2
G XSLT-Stylesheet XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
B anzeigen des XML+ XSLT Ergebnisses XML & JSON 21
N XML zu XSLT XML & JSON 2
N XSLT Testmethoden XML & JSON 2
cybermat Ergebnis einer XSLT-Tansformation als Rückgabewert erhalten XML & JSON 4
A Wie hängen SAX/DOM mit XSLT zusammen? XML & JSON 3
Noar XSLT - Element-Wrapping XML & JSON 2
byte XSLT Transformation "ohne Server" XML & JSON 6
byte XSLT Editor ? XML & JSON 7
P XSLT in Java verwenden XML & JSON 7
A XSLT oder Java? / XML-Tools XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben