Pfadangabe zur DTD in der XML-Datei

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
Michael Euteneuer
User
Beiträge: 9
Registriert: Mittwoch 7. Januar 2004, 16:36

Hi!
Nachdem mir gestern so prompt geholfen wurde (danke Dookie!), versuche ich es gleich mit meinem nächsten Problem. Ich habe mehrere XML-Dateien, zu jeder gibt es auch eine DTD, und alle Dateien liegen in einem Verzeichnis. Als Beispiel nehme ich die Datei constants.xml, deren erste Zeilen so aussehen:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE LISTOFCONSTANTS SYSTEM "constants_schema.dtd">
<LISTOFCONSTANTS>
Die entsprechende DTD constants_schema.dtd liegt wie erwähnt im selben Ordner.

Nun kann ich die XML-Datei problemlos gegen die DTD validieren:

Code: Alles auswählen

def val(xml_datei): 
  xv=xmlval.XMLValidator()
  dt=DTDHandler(xv.parser)
  bh=BadOrderErrorHandler(xv.app.locator)
  xv.set_error_handler(bh)
  xv.set_dtd_listener(dt)
  xv.parse_resource(xml_datei)
  
Läuft durch und meckert nicht. Wenn ich aber im Anschluss die Datei parsen will:

Code: Alles auswählen

from xml.sax import make_parser
def read_in_constants(xml_datei):
  ch=Const_Handler() #Selbstgebaut
  saxparser=make_parser()
  saxparser.setContentHandler(ch)
  saxparser.parse(xml_datei)
kommt folgende Meldung:

Code: Alles auswählen

  File "C:\Python23\lib\urllib2.py", line 233, in get_type
    raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: constants_schema.dtd
Wieso kann er mit dem relativen Pfad validieren, aber nicht parsen?

Gruß,
Michael
Antworten