Thomas: DTD / falsches Attribut in XML-Dokument

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

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 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

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
  2. 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

  3. 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

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. 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

      1. Hi,

        Oder meinst Du mit "Wohlgeformtheit", dass nicht nach einer DTD validiert wird?

        Mit "Wohlgeformtheit" meine ich Wohlgeformtheit. ;)

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. 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

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
          1. 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

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  4. 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

    --
    F: Was macht ein Offizier, der in der Nase bohrt?
    A: Er holt das Letzte aus sich heraus.