Seite 1 von 1

Pfadangabe zur DTD in der XML-Datei

Verfasst: Dienstag 9. November 2004, 09:28
von Michael Euteneuer
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