lxml XInclude findet File nicht...

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

Tag zusammen,
ich stehe hier gerade vor einem Problem und weiß nicht woran es liegt:
Ich möchte ein XML parsen, welches ein xInclude enthält und danach dieses mittels RelaxNG validieren.
Hier ein Ausschnitt aus dem Parser:

Code: Alles auswählen

def pLXML(self, completeXMLContentAsString, xInclude=True):
        xmlDoc = etree.parse(StringIO.StringIO(completeXMLContentAsString))
        if xInclude:
            xmlDoc.xinclude()
        ...
Das XML wird aus der Datei ausgelesen und als String der Funktion übergeben.
Mein XML sieht folgendermaßen aus und liegt im Verzeichnis: .../Beispiel/abc/test.xml:

Code: Alles auswählen

<Test xmlns:xi="http://www.w3.org/2001/XInclude" attributBeispiel="xyz">
            
	<documentation>
			BlaBla
	</documentation>
        <xi:include href="../abc/xyz.xml" parse="xml"/>
        ...
</Test>        
(ANMERKUNG: Das Element "Test" beinhaltet noch weitere Attribute und NS, habe ich nur zur ÜBersichtlichkeit weggelassen!)

So, wenn ich nun mein Programm aufrufe mit dem Pfad zu der Test.xml (z.B. "C:/programm/meinProg/Beispiel/abc/Test.xml"), dann wirft er mir den Fehler :
XInclude Error: failed to load external entity "../abc/xyz.xml".

Wenn ich im XInclude aber den Pfad "C:/programm/meinProg/Beispiel/abc/xyz.xml" angebe, dann lädt er es.
Ich weiß jedoch, dass es auch mit dem relativen Pfad gehen muss. Jedoch weiß ich nicht warum er es bei mir ablehnt...
Habt ihr einen Vorschlag?

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

Scheint als hätte es sich geklärt. Man darf die Datei nicht als Inhalt sondern einfach als Datei übergeben. Irgendwie ja logisch...
Antworten