lxml XInclude findet File nicht...
Verfasst: Montag 28. März 2011, 08:38
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:
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:
(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
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()
...
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>
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