lxml xinclude: einzubindende Datei dynamisch übergeben?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
m0ps1234
User
Beiträge: 40
Registriert: Freitag 13. März 2009, 08:57

Hallo zusammen,
hoffentlich letzte Frage für heute. :)

Ich besitze mehrere xml-Dateien, die von meinem Python Programm geparst und validiert werden. Die eine Hälfte davon wird auf ein XSD-Schema geprüft, die andere Hälfte auf ein RelaxNG-Schema. Somit hat man immer ein Päärchen: eine xml, die einmal für xsd getestet wird und die gleich, die für rng getestet wird - mit dem Unterschied, dass in der rng-xml das Attribut "schemaLocation" fehlt.

Jetzt nervt es mich, dass ich für jede xml 2 Dateien brauche, nur weil das eine Attribut für die rng fehlt.
Somit habe ich mir überlegt, dass ich ja zwei Header-xmls erstellen könnte. Eine mit dem Header für die xsd und einmal für die rng.
Und darunter sollen mittels xInclude jeweils der Rumpf der einzelnen xmls eingebunden werden. Jetzt meine Frage:
Im Moment parse ich das Ganze so:

Code: Alles auswählen

def parseXMLFile(self, xmlFile, schema, xInclude=True):
        xmlDoc = etree.parse(xmlFile)
        if xInclude:
            xmlDoc.xinclude() 
        return schema.validate(xmlDoc):
Ist es vielleicht möglich die Rümpfe dynamisch in den Header einzubinden? Sowas wie: xInclude(rumpfXYZ.xml) ?
Ich bezweifel es irgendwie, dass das funktioniert. Jedoch bin ich auch kein xml-Profi.
Vielleicht wisst ihr ja eine Antwort. Bzw vielleicht habt ihr einen anderen Vorschlag, wie ich mein Problem elegant lösen könnte....

Grüße
m0ps1234
User
Beiträge: 40
Registriert: Freitag 13. März 2009, 08:57

Ich probiere gerade mir einen Header in Python zu erstellen, in dem ich dann dynamisch die Variablen einfüge. Müsste eigneltich gehen.
Antworten