Seite 1 von 1

XML: Stylesheet aus Dom auslesen

Verfasst: Mittwoch 22. Juni 2005, 07:18
von Dumbi
Hallo,

ich glaube ich habe gerade ein Brett vorm Kopf. Ich habe das folgende total einfache Problem. Ich habe ein XML Dokument gegeben und möchte aus diesem die Stylesheet angaben auslesen. Wie geht das?

Einfügen kann ich eine Stylesheet. Mit createProcessingInstruction. Aber irgendwie fehlt mir ein getProcessingInstruction? Und mit getElementsByTagName("xml-stylesheet") geht es auch nicht.

Ich bitte um Hilfe

Danke

Maik

Re: XML: Stylesheet aus Dom auslesen

Verfasst: Mittwoch 22. Juni 2005, 10:10
von tabellar
Dumbi hat geschrieben:Hallo,

ich glaube ich habe gerade ein Brett vorm Kopf. Ich habe das folgende total einfache Problem. Ich habe ein XML Dokument gegeben und möchte aus diesem die Stylesheet angaben auslesen. Wie geht das?

Einfügen kann ich eine Stylesheet. Mit createProcessingInstruction. Aber irgendwie fehlt mir ein getProcessingInstruction? Und mit getElementsByTagName("xml-stylesheet") geht es auch nicht.
Hi Dumbi,

mir fehlt im Moment ein wenig der Zusammenhang, wie Du die Sache angehen möchtest. Seh ich es so richtig, dass Du ein XML Dokument mit Inhalts- und Stylesheet Angaben vorliegen hast und dieses mit einem entsprechenden Parser (minidom?) in ein DOM transformierst? Wenn Du es sauber als "Document Object Model (DOM)" vorliegen hast, sind die einzelnen Elemente/Knoten eigentlich relativ einfach auszulesen.

Hättest Du nicht mal einen Auszug von der XML Datei mit den Stylesheetangaben, dass wüssten wir genaueres was du herausfiltern möchtest. Warum sind die Stylesheet Angaben im XML Dokument und nicht extern in einer .css oder .xsl Datei (XSLT Transformation? Was hast Du genau vor, dann können wir dir vielleicht besser helfen, mit ev. Alternativen...

Tabellar

Verfasst: Mittwoch 22. Juni 2005, 14:40
von Dumbi
Hallo,

sorry es war heute morgen etwas früh. Ist aber richtig wie Du es verstanden hast. Ich habe eine XML Datei mit

from xml.dom.ext.reader.Sax import FromXmlFile
doc = FromXmlFile(path)

eingelesen. Jetzt möchte ich eigentlich nur den Pfad zur StyleSheet Datei aus dem DOM Baum auslesen. Ich möchte die href angaben haben:

<?xml-stylesheet type="text/xsl" href="C:\StyleSheet\Style.xsl"?>

also ="C:\StyleSheet\Style.xsl"

Die Knoten usw, kriege ich auch alle. Bloß diese PI Elemente kann ich nicht auslesen.

Ein Tipp wäre echt cool.

Gruß

Dumbi

Verfasst: Mittwoch 22. Juni 2005, 17:48
von tabellar
Dumbi hat geschrieben:Die Knoten usw, kriege ich auch alle. Bloß diese PI Elemente kann ich nicht auslesen.

Ein Tipp wäre echt cool.

Gruß

Dumbi
Interessante Fragestellung...
Na ja, ein Tipp ist das folgende gerade nicht ... :wink: :

Code: Alles auswählen

import xml.dom.minidom
import re
doc = xml.dom.minidom.parse('test.xml')
nodes=doc.childNodes

for node in nodes:
    type=node.nodeType
    if type==node.PROCESSING_INSTRUCTION_NODE:
       target=node.target
       data=node.data
       if re.match("xml-stylesheet",target):
          xsl = re.search("href="([A-Za-z0-9._]*)"",data)
          xsl = xsl.group(1)

print "PINode:",target
print "PINodeData:",data
print "PINodeHrefAttr:",xsl

So wie es aussieht, verwendest Du wohl 4Suite. Ich beschränk mich im Normalfall auf Python Bordmittel und verwende gerne das "MINIDOM".

Gruss Tabellar

Verfasst: Montag 27. Juni 2005, 07:28
von Dumbi
Puhhh,

danke für deine Hilfe :).