Frage

ich kenne den Zweck der DOCTYPE (und was jede URL / Kennung auf der Linie) so weit wie Web-Standards und die Seitenvalidierung geht, aber ich bin nicht sicher, was es eigentlich „ist“ im Rahmen eines XML-Dokuments.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello</p>
  </body>
</html>

Ist es Teil der eigentlichen XML-Dokumentstruktur, oder ist es eine Art von Kommentar-like „Tip“, die dann gestrippt wird zur Kenntnis genommen?

Was ist die Bedeutung der „!“ vor dem Namen? Hat bezeichnet dies eine spezielle Art von „Elemente“? Wie heißen sie?

Das Beispiel, das ich geschrieben ist XHTML für das Web, sondern DOCTYPE auch in allgemeinen XML-Dokumenten verwendet?

War es hilfreich?

Lösung

DOCTYPE wurde „geerbt“ von SGML (es angeblich zu DTD-Datei verweisen, die erklären, wie die Datei analysieren), aber selbsterklärend XML-Syntax und Namespaces machten es weitgehend irrelevant. Die einzige wirkliche Verwendung für DOCTYPE / DTD in XML erlaubt benannten Entitäten (z &nbsp;) zu definieren.

XML-Spezifikation erlaubt auch „Nicht-Validierung“ Parser, die DTD-Datei ignorieren vollständig (Web-Browser wie Parser verwenden, es sei denn, Sie in die Falle getappt text/html habe in diesem Fall XML-Parser nicht verwendet wird).

DTD ist ziemlich schlecht für die Validierung Zweck (harten Regeln für mehr als eine Ebene der Verschachtelung zu spezifizieren, keine Möglichkeit Arten von Attributen über einige vordefinierte Typen angeben). Schema, RelaxNG kann wesentlich präziser sein.

DTD nicht vollständig suppport Namespaces entweder, die wie XHTMLplusMathMLplusSVG DOCTYPE .

Im Web-Browser bestimmte DOCTYPEs haben erwünschten Nebeneffekt von auslösenden standardkonformen Rendering-Modus . Dies ist eher ein Hack als bestimmungsgemäßen Gebrauch DOCTYPEs.

  • Wenn Sie echte XHTML verwenden (application/xhtml+xml - derjenige, der gar nicht in IE öffnen), dann DOCTYPE überhaupt nicht (Empfehlung, die von XHTML 5) verwenden. XML-Modus löst standardkonforme unabhängig von DOCTYPE zu machen.

  • Wenn Sie text/html Modus verwenden, dann <!DOCTYPE html> verwenden. Das ist HTML 5 DOCTYPE und es ist ein kürzester, das bestmögliche Rendering in allen Browsern auslöst. Browser nicht DOCTYPE für andere Zwecke verwenden, so dass Sie verpassen Sie nicht auf irgendetwas.

  • Wenn Sie XHTML-Dateien mit XML-Parser (außerhalb Browser) sind die Verarbeitung, dann Sie vergessen Sie nicht, DTD Katalog richtig einzurichten, sonst wird Ihr Parser DoS-ing w3.org versuchen DTD jedes Mal zu holen. Wenn Sie nicht DTD Katalog verwenden können, dann deaktivieren „Externe“ im Parser oder DOCTYPE auslassen und nicht benannten Entitäten verwenden (das heißt Verwendung &#160; statt &nbsp;)

Andere Tipps

DOCTYPE ist Teil der XML-Spezifikation (siehe den entsprechenden Abschnitt hier < a />) und beinhalten kann entweder ein Link zu einem DTD , "internen" DTD Erklärungen, oder beides. Viele „modern“ Anwendungen von XML keine DOCTYPE verwenden überhaupt, obwohl - wie porneL erwähnt, sowohl XML-Schema und RelaxNG sind mächtige Wege ein Dokuments Syntax angeben. Siehe dieser Tim Bray Blog-Post für ein bisschen mehr Hintergrund.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top