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
XML: Stylesheet aus Dom auslesen
Hi Dumbi,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.
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
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
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
Interessante Fragestellung...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
Na ja, ein Tipp ist das folgende gerade nicht ...

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