# Wie hängen SAX/DOM mit XSLT zusammen?



## Anjja (3. Jul 2006)

Hallo zusammen! 

Ich bin ganz neu eingestiegen in XML, XPath, SAX, DOM, XSLT und Co. 

Ich habe schon kapiert wofür die einzelnen Abkürzungen stehen und was sie machen. Aber der Zusammenhang ist mir immernoch leicht schleierhaft. 

Der SAX Parser ist ja ereignisgesteuert, also kann ich ihm ja genau sagen mache (wenn du auf Element X triffst) folgenden HTML Code.. Aber genau das gleiche macht doch auch XSLT über Xpath und templates... Wieso benötige ich dann überhaupt noch XSLT? 
Die gesamte Prozesskette ist mir da noch ein wenig schleierhaft. Also wenn ich ein XML Dokument habe, dann wird zuerst geparst (über SAX oder DOM) und dann läuft der XSLT Prozessor durch (z.B. im IE) oder wie? JAXP hat ja irgendwie alles in allem, aber wo genau wird JAXP z.B. genau angewandt? Ich habe bereits einiges an Literatur verschlungen, alle einzelnen Themen werden gut erklärt, dennoch, der Zusammenhang fehlt, das Zusammenspiel der einzelnen Komponenten. 

Wäre sehr dankbar wenn sich jemand erbarmen würde Licht ins Dunkel zu bringen oder mir zumindest einen guten Literaturlink nennen könnte. 

Vielen vielen Dank im Voraus

Grüße

Anja


----------



## D.-ark-A.ngel (3. Jul 2006)

Hallo Anja,

Auch ich beschäftige mich erst seit kurzem mit der XML-Verarbeitung von Java, will es aber mal mit einer Antwort versuchen:

SAX und DOM sind ja XML-Zugriffsschnittstellen. Natürlich kannst Du mit denen Elemente aus einem Dokument extrahieren und neue Knoten bilden, also XML transformieren. Wenn es mehr als nur ein paar geringe Änderungen sind, würde ich das aber als ein wenig unpassend empfinden. Die Transformationssprache für XML ist nun einmal XSLT, das ja nicht für Java erfunden wurde, sondern von zig anderen Sprachen, Tools, etc. eben auch genutzt werden kann.

Um in Java aber eine XSLT-Transformation durchzuführen, brauchst Du ja einen XSLT-Prozessor. Davon gibt es auch mehrere (Saxon, Xalan und wie sie alle heißen). Nun existiert eine vereinheitlichte Schnittstelle, um diese Prozessoren alle mit den gleichen Java-Befehlen ansprechen zu können (so kann man auch mal den XSLT-Prozessor wechseln, ohne gleich alles neu programmieren zu müssen). Das ist JAXP.

Zusammenfassung: SAX und DOM sind für den XML-Zugriff, XSLT für die Umwandlung und JAXP ist für den XSLT-Zugriff.

Ich hoffe, das stimmt so alles und erklärt es auch halbwegs für Dich...

Viele Grüße,
D.ark-A.ngel


----------



## foobar (3. Jul 2006)

JAXP steht für Java API for XML Processing und ist ein Interface für alles was mit XML und Java zu tun hat. D.h. du kannst z.b. ein XML-File parsen und auf die Knoten über DOM zugreifen ohne zu wissen welcher Parser gerade im Moment vom JDK zur Verfügung gestellt wird.
JAXP ist daher nicht nur ein Wrapper für XSLT-Prozessoren sondern für XML-APIs im Allgemeinen.


----------



## D.-ark-A.ngel (3. Jul 2006)

...und auch wieder was gelernt!

Viele Grüße,
D.ark-A.ngel


----------

