1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

XML-Parsing durch DOM

Dieses Thema im Forum "XML Technologien" wurde erstellt von oraclin25, 12. Januar 2013.

  1. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo zusammen,

    ich hätte eine Konzept-Frage bzgl. DOM, Parser und XML-Dokument:
    ich habe ein bisschen gegoogelt, leider verstehe ich das Konzept noch nicht so richtig. Wenn ich also ein XML-Dokument habe und möchte dieses verarbeiten, dann könnte ich dies mit Hilfe von DOM tun.

    Was ist also DOM?
    Ich habe so verstanden, dass es DOM-API gibt. Nach Wiki verstehe ich DOM als die Repräsentation von beispielweise einem XML-Dokument. Durch dieses Dokument kann dann ein Parser parsen. Nach dem Parsing entsteht dann ein sogenanntes DOM-Objekt. Ist das richtig so? Was macht man dann mit dem DOM-Objekt?

    Vielen Dank.

    Schöne Grüße aus Rheinland,

    Eure Ratna
     
    Zuletzt bearbeitet: 12. Januar 2013
  2. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo zusammen,

    bin inzwischen etwas schlauer geworden:
    DOM ist ersmal ein Standard, wie ein XML-Dokument auszusehen hat, nämlich in Form eines Graphbaumes. Diese Umwandung von XML-Dokument auf den Graphbaum erledigt der DOM-Parser. Der Graphbaum wird auch als DOM-Objekt bezeichnet. Danach kann auf diesem Graphbaum traversiert werden, dies bietet die DOM-API an.

    Nun meine Frage:
    Ist es möglich, dass auf dem Graphbaum mittels XSLT-Parser transformiert wird?

    Vielen Dank.

    Schöne Grüße aus Rheinland,

    Eure Ratna
     
    Zuletzt bearbeitet: 13. Januar 2013
  3. alxy

    alxy Erfahrenes Mitglied

    Ähm,

    DOM = Document Object Model ist, wie du bereits herausgefunden hast, eine Spezifikation, eine abstrakte Schnittstelle sozusagen, von der es jetzt konkrete Ableitungen gibt, wie zB
    XML = Extensible Markup Language. Ein XML-Dokument ist somit sozusagen schon eine Baumstruktur, das erfordert die Schnittstelle ja ;) Da du auchnoch Graphbaum ansprichst - meinst du damit tatsächlich eine grafisch sichtbare Struktur? Die hier angesprochene Struktur ist "reines" XML erstmal, zum Präsentieren der Daten kann dann XSLT verwendet werden. Guck dir dieses beispiel dazu an: http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog
    Die arbeiten zusammen wie HTML und CSS ;)
     
  4. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo alxy,

    vielen Dank für die rasche Antwort. Ich habe soweit verstanden, was mit DOM und XSLT gemeint ist.
    Bei einem Punkt bin ich mir nicht so sicher:
    1. Ich habe ein XML-Dokument
    2. Ich parse das Dokument mit einem DOM-Parser und erhalte den Graphbaum
    3. Auf diesem Graphbaum kann ich das Dokument mit einem XSLT-Applikation in eine Ausgabe transformieren.

    Meine Frage:
    Soweit ich weiss, kann auf einem XML-Dokument direkt eine XSLT-Applikation ablaufen. Warum möchte man bei obiger Konstellation das XML-Dokument zunächst einmal mittels DOM, bevor anschließend mit einer XSLT-Applikation verarbeiten?

    Vielen lieben Dank zusammen.

    Schöne Grüße aus Rheinland,

    Eure Ratna
     
  5. hela

    hela Premium-User

    Hallo,
    wie sollte das gehen? Du brauchst ein Rahmenprogramm, dass das XML-Dokument parsen kann und einen XSLT-Prozessor bereitstellt.
     
  6. alxy

    alxy Erfahrenes Mitglied

    Soviele lustige Wörter....

    Zu 2.) Was meinst du mit Graphbaum? Was ist für dich ein DOM-Parser? [Ein Parser verwandelt grundsätzlich erstmal eine Eingabe (zB im XML-Format) in ein für das Programm/den Computer weiterverarbeitbares Format, zB um dann später spezielle Dinge(Knoten) auslesen oder verändern zu können]

    Zu 3.) Du kannst eine XML-Datei auch so eifnach mit jedem beliebigen Editor/Browser/Textverrbeitungsprogramm öffnen und darstellen ;) Nur natürlich nicht so schön.
     
  7. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo hela und alxy,

    vielen Dank für Eure Hilfestellungen. Aus Wiki:

    Mit meiner Frage meinte ich:
    Kann ich die notwendige Baumstruktur für XSLT-Transformation mit Hilfe von einem DOM-Parser erzeugen? Also, ich habe das so verstanden, dass ein DOM-Parser lediglich dazu da ist, um die Baumstruktur eines XML-Dokuments zu erzeugen. Dass man dann auf dieser Baumstruktur die DOM-API verwenden kann, das lass ich erstmal ausgeklammert.

    Ich möchte gerne verstehen, ob es einen Zusammenhang gibt zwischen DOM-Parser und XSLT. :(

    Vielen lieben Dank.

    Schöne Grüße aus Rheinland,

    Eure Ratna
     
  8. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Hoffentlich nicht ;)

    Normalerweise wird ein XSLT-Processor seine eigene Bibliothek zum Parsen den XML mitbringen, da die meisten DOM-Parser für den Anwendungszweck der Transformation nicht optimiert sind.

    Der XSLT-Processor hat natürlich eine ähnliche Funktionalität, um Features wie X-Path zur Verfügung stellen zu können.

    Hier mal ein Zitat:
     
  9. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo saftmeister,

    Danke. Mhhh... Dieser parser, nenne ich mal ein softwaremodul, ist aber einem xslt-prozessor nicht gleich, oder?

    Schöne grüße aus rheinland,

    Eure ratna
     
  10. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Eigentlich nicht. Ein DOM-Parser erledigt ein manchmal auch zwei Dinge:

    1. (optional) Validieren des XML gegen ein Schema (XSD).
    2. Parsen des XML in Objekte der für den DOM-Parser zugehörigen Programmiersprache.

    Dafür benötigt der Parser natürlich das XML selbst, und eine Kenntniss darüber, welche Klasse die Struktur des XML-Knotens im Programm abbildet.

    Ich kenne deine Kenntnisse nicht, aber vielleicht schaust du dir mal an, wie das in Java gemacht wird:

    http://jaxb.java.net/tutorial/section_2_2_1-JAXB-Examples.html#Defining an Integer Range Type
    http://jaxb.java.net/tutorial/section_2_2_2-Numeric-Types.html#Numeric Types
     
    Zuletzt bearbeitet: 13. Januar 2013
  11. oraclin25

    oraclin25 Erfahrenes Mitglied

    Mhhh... Dein letzter Beitrag bezieht sich, wenn ich nicht irre, auf DOM-Parser. Ist der Begriff DOM-Parser eigentlich ein Oberbegriff für XSLT-Parser? Denn, eigentlich habe ich es so verstanden, dass die Baumstruktur bzw. das Ergebniss eines DOM-Parsers nicht für die XSLT-Transformation konzipiiert ist. Wenn das so ist, dann gibt es zur XSLT-Transformation einen geeigneteren Parser. Ich nenne diesen mal als "XSLT-Parser", aber bestimmt nicht ein DOM-Parser.

    Och je, hoffentlich ist mein Problem einigermaßen verständlich?

    Schöne Grüße aus Rheinland,

    Eure ratna
     
  12. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Absolut ja. Ich bin auf dem Gebiet auch kein Profi, aber das war ich bisher darüber weiß deckt sich mit deiner Aussage.

    Also hier mal zwei Punkte:

    1. Ein DOM-Parser lädt XML in programm-interne Strukturen (Klassen) für die programmatische Verarbeitung (um z.B. eine Ansicht über alle Kunden in einem Programm einzubauen, wobei die Kunden in einem XML-File stehen). Stelle dir eine Anwendung (GUI) vor, die eine Tabelle (nicht HTML!) beinhaltet, in der alle Datensätze angezeigt werden. Du kannst dann mit der Maus einen Datensatz doppelt anklicken und bekommst eine weitere GUI, in der du den Kunden bearbeiten kannst. Da programm-intern mit Objekten gearbeitet wird, die aus Klassen (Objekt-Schablone) erstellt wurden, benötigt es einen DOM-Parser, der das XML parst und daraus Objekte macht.

    2. Ein XSLT-Processor hat einen XML-Parser (eine Art DOM-Parser, ist aber keiner) eingebaut. Der XSLT-Processor nimmt also das XML her und transformiert es anhand einer XSLT-Datei (welche die Anweisungen enthält wie zu transformieren ist) in das gewünschte Ausgabe-Format (z.B. HTML).
     
  13. hela

    hela Premium-User

    Ich bin auch kein Profi, aber so absolut würde ich das nicht sehen. Das ist m.E. von der Umgebung abhängig. Leider habe ich zu wenig Kenntnisse in Java (letzten 10 Jahre nichts gemacht), aber in PHP kann man beispielsweise dem XSLT-Prozessor nur DOM-Dokumente anbieten, also mit der DOMDocument-Klasse geparste XML- oder HTML-Dokumente.
     
  14. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo saftmeister,

    Danke für die ausführliche Erklärung. Ich bin ja froh, dass du meine problematik verstanden hast. Sorry, wenn ich zu detailliert nachgefragt habe, aber frau ist manchmal etwas kleinlich :)
    Ich frage gerne solange nach bis die sache in meine logik passt.

    Schöne Grüße aus Rheinland,

    Eure Ratna
     
  15. saftmeister

    saftmeister Nutze den Saft! Premium-User

    Nunja, deswegen schrieb ich auch weiter oben, dass ein XSLT-Processor hoffentlich keinen DOM-Parser beinhaltet, was bei PHP anscheinend auch der Fall ist. Dort hat der XSLT-Processor offensichtlich gar keinen XML-Parser und es muss die DOMDocument-Klasse bzw. SimpleXML dafür herhalten ;) Ob das performant ist, wage ich nicht zu beurteilen.

    Oyoyo, was ist denn, wenn deine Logik nicht zur Sache passt? ;)
     
  16. oraclin25

    oraclin25 Erfahrenes Mitglied

    Hallo zusammen,

    Wenn ich das richtig verstanden habe, hängt es also von der programmiersprache ab, was ein xslt-prozessor so alles kann bzw. was ein xslt-prozessor so beinhaltet? Wie sieht es zum beispiel unter java aus? Ist ein eigener Parser darunter im Umfang enthalten?

    Vielen Dank.

    Schöne Grüße aus Rheinland.

    Eure Ratna
     
  17. hela

    hela Premium-User

    Wenn du XSLT machen willst, dann ist es m.E. wichtig zu wissen welchen XSLT-Prozessor die umgebende Sprache verwendet und was der kann. Eine (etwas ältere) Übersicht gibt es hier: http://www.oio.de/public/xml/xslt-prozessoren.htm
    Wie der verwendete XSLT-Prozessor die Daten übergeben haben möchte ergibt sich dann offensichtlich damit.
     
Die Seite wird geladen...