DTD / falsches Attribut in XML-Dokument
Thomas
- xml
0 Cheatah0 Thomas
1 Thomas J.S.0 Cybaer0 Der Martin
Hallo Ihr alle,
ich benötige einmal eine gedankliche Unterstützung:
Ich habe ein XML-Dokument, in dem in einem Element ein Attribut enthalten ist, was so aber in der DTD nicht vorkommt.
Dann ist doch dieses Dokument ungültig, oder? Aber müsste dann der Browser gar nichts anzeigen, wenn ein XML-Dokument fehlerhaft ist?
Aber der IE 6.0 zeigt die Baumstruktur des Dokuments vollständig an!
Was kann ich denn nun mit so einem Dokument anfangen?
Hintergrund ist, dass ich die DTD zum Auswerten der XML-Datei genommen habe und damit alles vernachlässige, was nicht in der DTD steht.
Vielen Dank für Eure Infos.
Thomas
Hi,
Ich habe ein XML-Dokument, in dem in einem Element ein Attribut enthalten ist, was so aber in der DTD nicht vorkommt.
Dann ist doch dieses Dokument ungültig, oder?
wenn das Attribut nicht zufällig einem anderen Namespace zugeordnet ist: Ja.
Aber müsste dann der Browser gar nichts anzeigen, wenn ein XML-Dokument fehlerhaft ist?
Welches Interesse sollte der Browserhersteller an einer derartigen Implementierung haben?
Was kann ich denn nun mit so einem Dokument anfangen?
Keine Ahnung. Was _willst_ Du damit anfangen?
Hintergrund ist, dass ich die DTD zum Auswerten der XML-Datei genommen habe und damit alles vernachlässige, was nicht in der DTD steht.
Klingt plausibel. Warum lehnst Du das Dokument nicht ab, wenn es fehlerhaft ist?
Cheatah
Hallo Cheatah,
vielen Dank für Deine Antwort.
wenn das Attribut nicht zufällig einem anderen Namespace zugeordnet ist: Ja.
Ich glaube nicht das dem so ist - aber interessehalber: Was bedeutet dies?
Aber müsste dann der Browser gar nichts anzeigen, wenn ein XML-Dokument fehlerhaft ist?
Welches Interesse sollte der Browserhersteller an einer derartigen Implementierung haben?
Aha, also liege ich erst einmal richtig!
Hintergrund ist, dass ich die DTD zum Auswerten der XML-Datei genommen habe und damit alles vernachlässige, was nicht in der DTD steht.
Klingt plausibel. Warum lehnst Du das Dokument nicht ab, wenn es fehlerhaft ist?
Leider weiß ich nicht, ob ich das einfach so kann, schließlich nutze ich dass Dokument beruflich und bekomme das von Kunden zur Verfügung gestellt.
Thomas
Hi,
wenn das Attribut nicht zufällig einem anderen Namespace zugeordnet ist: Ja.
Ich glaube nicht das dem so ist - aber interessehalber: Was bedeutet dies?
dass eine andere DTD für das Attribut zuständig ist ;-) Du erkennst es an der Schreibweise 'ns:attr="value"'.
Aber müsste dann der Browser gar nichts anzeigen, wenn ein XML-Dokument fehlerhaft ist?
[...]
Klingt plausibel. Warum lehnst Du das Dokument nicht ab, wenn es fehlerhaft ist?
Leider weiß ich nicht, ob ich das einfach so kann, schließlich nutze ich dass Dokument beruflich und bekomme das von Kunden zur Verfügung gestellt.
Ah ja. Dann hast Du ja nachträglich Deine eigene Frage beantwortet ;-)
Cheatah
Hello out there!
Ich habe ein XML-Dokument, in dem in einem Element ein Attribut enthalten ist, was so aber in der DTD nicht vorkommt.
Dann ist doch dieses Dokument ungültig, oder?wenn das Attribut nicht zufällig einem anderen Namespace zugeordnet ist: Ja.
Ich glaube nicht das dem so ist
Ich glaube das auch nicht.
Einer DTD ist das Konzept Namensräume völlig fremd, ein ':' ist ein Zeichen wie (fast) jedes andere.
dass eine andere DTD für das Attribut zuständig ist ;-) Du erkennst es an der Schreibweise 'ns:attr="value"'.
Dann wäre das XML-Dokument dennoch ungültig. Es sei denn, es stünde sowas wie
<!ATTLIST foo
ns:attr CDATA #IMPLIED
>
in der DTD. Wobei die Zeichenkette "ns", die in anderem Kontext als Namesraumpräfix dient, dann nicht anders lauten darf; es muss dann heißen:
<root
xmlns="http://example.net/rootns"
xmlns:ns="http://example.net/attrns"
>
<foo ns:attr="value"/>
</root>
nicht aber so:
<root
xmlns="http://example.net/rootns"
xmlns:someOtherString="http://example.net/attrns"
>
<foo someOtherString:attr="value"/>
</root>
So steht auch das 'xml:lang'-Attribut in der XHTML-DTD drin:
<!ENTITY % i18n
"lang %LanguageCode; #IMPLIED
xml:lang %LanguageCode; #IMPLIED
dir (ltr|rtl) #IMPLIED"
>
See ya up the road,
Gunnar
Hallo,
ich benötige einmal eine gedankliche Unterstützung:
Ich habe ein XML-Dokument, in dem in einem Element ein Attribut enthalten ist, was so aber in der DTD nicht vorkommt.Dann ist doch dieses Dokument ungültig, oder? Aber müsste dann der Browser gar nichts anzeigen, wenn ein XML-Dokument fehlerhaft ist?
Korrekt, dann ist das Dokument nicht gültig.
Aber der IE 6.0 zeigt die Baumstruktur des Dokuments vollständig an!
Von Haus aus kümmert sich weder der IE noch FF/Mozilla um die Validierung.
Dem IE kann man es beibringen:
http://www.microsoft.com/downloads/details.aspx?FamilyId=D23C1D2C-1571-4D61-BDA8-ADF9F6849DF9&displaylang=en danach (Installation) hat man Kontektmenü einen Punkt "Validate XML".
Dem FF/Mozilla kann man Validierung nicht beibringen.
Grüße
Thomas
Hi,
Aber müsste dann der Browser gar nichts anzeigen, wenn ein XML-Dokument fehlerhaft ist?
Üblicherweise testen die Browser nur auf "Wohlgeformtheit".
Gruß, Cybaer
Hi,
Üblicherweise testen die Browser nur auf "Wohlgeformtheit".
Bei der Anzeige von XML-Dokumenten kommt bei mir immer eine Fehlermeldung im Browser, sobald ein Syntaxfehler auftritt, wogegen HTML-Dokumente "irgendwie" angezeigt werden.
Oder meinst Du mit "Wohlgeformtheit", dass nicht nach einer DTD validiert wird?
Gruß
Thomas
Hi,
Oder meinst Du mit "Wohlgeformtheit", dass nicht nach einer DTD validiert wird?
Mit "Wohlgeformtheit" meine ich Wohlgeformtheit. ;)
Gruß, Cybaer
Hello out there!
Mit "Wohlgeformtheit" meine ich Wohlgeformtheit. ;)
Der Unterschied sollte klar sein: http://forum.de.selfhtml.org/archiv/2005/10/t117716/#m754156 ;-)
See ya up the road,
Gunnar
Hi,
Mit "Wohlgeformtheit" meine ich Wohlgeformtheit. ;)
Der Unterschied sollte klar sein: http://forum.de.selfhtml.org/archiv/2005/10/t117716/#m754156 ;-)
(prust) Danke für den Hinweis, daß mir diese Perle nun auch bekannt ist! :-))
Gruß, Cybaer
Hallo,
Hallo Ihr alle,
ich benötige einmal eine gedankliche Unterstützung:
Ich habe ein XML-Dokument, in dem in einem Element ein Attribut enthalten ist, was so aber in der DTD nicht vorkommt.
Dann ist doch dieses Dokument ungültig, oder?
gemessen an seiner DTD, ja.
Aber der IE 6.0 zeigt die Baumstruktur des Dokuments vollständig an!
Dem ist die DTD auch völlig wurscht. Anderen Browsern AFAIK auch. Es genügt, wenn das XML-Dokument wohlgeformt ist. Dann lässt es sich systematisch parsen, und alle sind glücklich. Eine Validierung gegen die DTD (falls angegeben) findet nicht statt.
Ciao,
Martin