Re: Path zur dtd ist keine URL
- From: "Ralf Ullrich" <news@xxxxxxxx>
- Date: Thu, 1 Jun 2006 21:28:45 +0000 (UTC)
TPulsar wrote:
Hi,
mein Problem ist das ich eine XML datei Parsen soll mit einer prüfung auf eine dtd. Die DTD ist am anfang des XMl Dokuments angegeben aber statt mit den / Trennungen, besitzt es die Windows \ trennungen. Der Parser kann daher die DTD nicht finden da er die Windows Trennungen nicht interpretieren kann. Die XMl Datei kann leider auch nicht geändert werden. Benutzt werden muss dom4j. Kennt einer eine saubere lösung damit der Parser vom dom4j die Windoes trennungen \ auch erkennt?
Wenn es sich um eine SystemId handelt ist das doch OK:
SystemLiteral
::= ('"' [^"]* '"') | ("'" [^']* "'")
PubidLiteral
::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
PubidChar
::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
D.h. der Backslash ist nur in PublicIds nicht zugelassen. Beide Ids müssen NICHT URIs nach RFC 3986 sein, wie Bernd Post behauptete, sondern der XML Processor muss lediglich in der Lage sein, diese Ids in solche URIs zu überführen.
Im Falle der SystemIds kann man auf Windows Systemen vom XML Prozessor durchaus erwarten, dass er die System Id "C:\xml\dtds\abc.dtd" intern in eine URI der Art "file://C:/xml/dtds/abc.dtd" überführt. SystemIds sollen ja schließllich auch systemspezifische Lokationen beschreiben. (Auch eine http: Url ist in diesem Sinne eine systemspezifische Lokation.)
PublicIds hingegen können vom XML-Prozessor dazu verwendet werden einen völlig eigenen Weg einzuschlagen um die Lokation der Entity zu bestimmen. So kann der XML Prozessor beispielsweise einen lokalen Cache führen, oder die Daten aus einer Datenbank holen, oder, oder, oder. In jedem Fall reicht es prinzipiell, wenn er quasi durch einen Stringvergleich, einer PublicId eine URI zuordnet.
Kannst du mal die XML- und Doctype-Deklaration deiner XML-Datei posten? Ich würde die gerne mal sehen, um dir sagen zu können wo genau der Fehler liegt, und was du tun kannst. Allerdings, wie Bernd, fürchte ich, dass die XML Datei bereits fehlerhaft generiert wird, und du dich mit den Kollegen dort auseinandersetzen musst. (Ein Argument, könnte dann sein, ob man die Datei dann überhaupt noch XML Datei nennen soll/darf..)
cu
.
- References:
- Path zur dtd ist keine URL
- From: TPulsar
- Path zur dtd ist keine URL
- Prev by Date: SOA Einführung
- Next by Date: Re: Visualisierung MathML
- Previous by thread: Re: Path zur dtd ist keine URL
- Next by thread: Re: Path zur dtd ist keine URL
- Index(es):
Relevant Pages
|