Thomas J.S.: standalone in XML-Deklaration

Beitrag lesen

Hallo,

ich versuche nun schon seit einiger Zeit herauszufinden wie das standalone-Attribut in der XML-Deklaration zu verstehen ist.

Hmm...
http://edition-w3c.de/TR/2000/REC-xml-20001006/#sec-rmd

Soweit ich es kapiert habe, bedeutet standalone="yes" das die Angabe einer externen DTD/Schema zu ignorieren ist.

Genau genommen, bedeutet es nicht, dass es zu ignorieren ist (also kein "soll"). Generell ist das standalone-Attribut mehr ein Hinweis als eine Anweisung für den Parser. Z.B. einem nicht validierender XML-Parser ist es erlaubt, Referenzen auf externe Entities komplett zu ignorieren, wobei er einen Fehler melden muss, wenn standalone="yes" gesetzt und eine nichtdeklalierte Entity gefunden wird.

folgendes Beispiel:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>.</title>
  </head>

<body>
    <p><img /></p>
  </body>
</html>

Demnach ist das <img/>-Tag kein Fehler?!

Nein, aber ein Parser kann das so werten.

Bei standalone="no" müssten dagegen die fehlenden Attribute src und alt angemeckert werden?!

Ja, sollten sie.

Ein Validator müsste bei standalone="yes" demnach jedes Tag und Attribut anmeckern, da diese nirgends definiert sind?

Nein, muss er nicht. Warum auch denn? Erstens es kann einer interner Teilmenge der DTD geben und zweitens kann bei "yes" dann einfach eine Wohlgeformtheitsprüfung stattfinden.

Sehe ich das richtig so?
Das glaube ich aber nicht, da zum Beispiel gängige XML-Editoren (XML-Spy) bei standalone="yes" das img-Tag anmeckern, also doch die externe DTD verwenden.

Wie gesagt, standalone ist eher ein Hinweis, als eine Vorschrift an den Parser.

Grüße
Thomas