Dokumenttyp-Definition

Eine Dokumenttyp-Definition (DTD) ist eine Reihe von Preiserhöhungsbehauptungen, die einen Dokumententyp für eine SGML-Familienpreiserhöhungssprache (SGML, XML, HTML) definieren.

Ein DTD verwendet eine knappe formelle Syntax, die genau erklärt, welche Elemente und Verweisungen erscheinen können, wo im Dokument des besonderen Typs, und wie der Inhalt und Attribute der Elemente sind. Ein DTD kann auch Entitäten erklären, die im Beispiel-Dokument verwendet werden können.

XML verwendet eine Teilmenge von SGML DTD.

neuere XML namespace-bewusste Diagramm-Sprachen (wie W3C XML Diagramm und ISO RELAX NG) haben DTDs größtenteils ersetzt. Eine namespace-bewusste Version von DTDs wird als Teil 9 von ISO DSDLhttp://www.dsdl.org/entwickelt. DTDs dauern auf Anwendungen an, die spezielle Veröffentlichen-Charaktere wie der XML und die HTML-Charakter-Entitätsverweisungen brauchen, die aus den größeren Sätzen abgeleitet wurden, die als ein Teil des ISOS SGML Standardanstrengung definiert sind.

Das Verbinden von DTDs mit Dokumenten

Ein DTD wird mit einem XML oder SGML Dokument mittels einer Dokumententyp-Behauptung vereinigt. Die Dokumententyp-Behauptung erscheint im syntaktischen Bruchstück doctypedecl in der Nähe vom Anfang eines XML Dokumentes. Die Behauptung stellt fest, dass das Dokument ein Beispiel des durch den Verweise angebrachten DTD definierten Typs ist.

DTDs machen zwei Sorten der Behauptung:

  • eine fakultative Außenteilmenge
  • eine fakultative innere Teilmenge

Die Behauptungen in der inneren Teilmenge bilden einen Teil der Dokumententyp-Behauptung im Dokument selbst. Die Behauptungen in der Außenteilmenge werden in einer getrennten Textdatei gelegen. In der Außenteilmenge kann über einen öffentlichen Bezeichner und/oder einen Systembezeichner Verweise angebracht werden. Programme, um Dokumente zu lesen, dürfen nicht erforderlich sein, die Außenteilmenge zu lesen.

Bemerken Sie, dass jeder gültige SGML oder XML Dokument, das in einer Außenteilmenge in seinem DTD Verweise anbringt, oder dessen Körper Verweisungen auf grammatisch analysierte Außenentitäten enthält, die in seinem DTD (einschließlich derjenigen erklärt sind, die innerhalb seiner inneren Teilmenge erklärt sind), nur teilweise grammatisch analysiert werden können, aber durch die Bestätigung von SGML oder XML parsers in ihrer eigenständigen Weise nicht völlig gültig gemacht werden können (das bedeutet, dass diese, parsers gültig machend, nicht versuchen werden, diese Außenentitäten wiederzubekommen, und ihr Ersatztext nicht zugänglich sein wird).

Jedoch werden solche Dokumente noch völlig parsable in der nichteigenständigen Weise sein, parsers gültig zu machen, der einem Fehler Zeichen geben wird, wenn diese Außenentitäten mit ihrem angegebenen öffentlichen Bezeichner (FPI) und/oder Systembezeichner (ein URI) nicht gelegen werden können oder unzugänglich sind. (Im DTD erklärte Notationen bringen auch in Außenentitäten Verweise an, aber diese grammatisch unnalysierten Entitäten sind für die Gültigkeitserklärung von Dokumenten in der eigenständigen Weise dieser parsers nicht erforderlich: Die Gültigkeitserklärung aller durch Notationen Verweise angebrachten Außenentitäten wird zur Anwendung mit dem SGML oder XML parser verlassen). Nichtbestätigung parsers kann schließlich versuchen, diese Außenentitäten in der nichteigenständigen Weise (durch die teilweise Interpretation des DTD ausfindig zu machen, um nur ihre offen erklärten parsable Entitäten aufzulösen), aber wird das zufriedene Modell dieser Dokumente nicht gültig machen.

Beispiele

Das folgende Beispiel einer Dokumententyp-Behauptung enthält sowohl Publikum als auch Systembezeichner:

</Quelle>

Das ganze HTML 4.01 Dokumente passt sich einem von drei SGML DTDs an. Die öffentlichen Bezeichner dieser DTDs sind unveränderlich und sind wie folgt:

Die Systembezeichner dieser DTDs, wenn Gegenwart in der Dokumententyp-Behauptung, werden URI Verweisungen sein. Ein Systembezeichner weist gewöhnlich zu einem spezifischen Satz von Behauptungen in einer auflösbaren Position hin. SGML berücksichtigt öffentliche Bezeichner, die zu Systembezeichnern in Katalogen kartografisch darzustellen sind, die zum URI resolvers verwendet durch das Dokument fakultativ bereitgestellt werden, das Software grammatisch analysiert.

Bemerken Sie, dass diese Dokumententyp-Behauptung nur nach der fakultativen XML Behauptung, und vor dem Dokumentenkörper erscheinen kann, wenn sich die Dokumentensyntax XML anpasst. Das schließt XHTML Dokumente ein:

...

</HTML>

</Quelle>

Eine zusätzliche innere Teilmenge kann auch nach der Außenteilmenge zur Verfügung gestellt werden:

]>

...</HTML></Quelle>

Wechselweise kann nur die innere Teilmenge zur Verfügung gestellt werden:

]> ...</HTML></Quelle>

Schließlich kann die Dokumenttyp-Definition keine Teilmenge überhaupt einschließen; in diesem Fall gibt es gerade an, dass das Dokument ein einzelnes Element auf höchster Ebene hat (das ist eine implizite Voraussetzung für den ganzen gültigen XML und HTML-Dokumente, aber nicht für Dokumentenbruchstücke oder für alle SGML Dokumente, deren Elemente auf höchster Ebene vom implizierten Wurzelelement verschieden sein können), und es den Typ-Namen des Wurzelelements anzeigt:

...</HTML></Quelle>

Preiserhöhungsbehauptungen

DTDs beschreiben die Struktur einer Klasse von Dokumenten über das Element und Behauptungen der Attribut-Liste. Element-Behauptungen nennen den zulässigen Satz von Elementen innerhalb des Dokumentes und geben an, ob und wie offen erklärte Elemente und Läufe von Charakter-Daten innerhalb jedes Elements enthalten werden können. Behauptungen der Attribut-Liste nennen den zulässigen Satz von Attributen für jedes offen erklärte Element, einschließlich des Typs jedes Attribut-Werts, wenn nicht eines ausführlichen Satzes des gültigen Werts (E).

DTD Preiserhöhungsbehauptungen erklären, der Element-Typen, Listen zuschreiben Sie, wird Entitäten und Notationen in der Struktur der entsprechenden Klasse von XML Dokumenten erlaubt.

Typ-Behauptungen Element

Eine Element-Typ-Behauptung definiert ein Element und seinen möglichen Inhalt. Ein gültiges XML Dokument enthält nur Elemente, die im DTD definiert werden.

Verschiedene Schlüsselwörter und Charaktere geben einen Inhalt eines Elements an:

  • um anzugeben, dass das definierte Element keinen Inhalt erlaubt, d. h., kann es keine Kinderelemente, nicht sogar Textelemente haben (wenn es whitespaces gibt, werden sie ignoriert);
  • um anzugeben, dass das definierte Element jeden Inhalt ohne Beschränkung erlaubt, d. h., dass es jede Zahl (einschließlich niemandes) und Typ von Kinderelementen (einschließlich Textelemente) haben kann;
  • oder ein Ausdruck, die einzigen Elemente erlaubt als direkte Kinder im Inhalt des definierten Elements angebend; dieser Inhalt kann auch sein:
  • ein Mischinhalt, was bedeutet, dass der Inhalt mindestens ein Textelement und Null oder mehr genannte Elemente einschließen kann, aber ihre Ordnung und Zahl von Ereignissen können nicht eingeschränkt werden; das kann sein:
  • : historisch bedeutende grammatisch analysierte Charakter-Daten, das bedeutet, dass nur einem Textelement im Inhalt erlaubt wird (keinem quantifier wird erlaubt);
  • : eine beschränkte Wahl (in einer exklusiven Liste zwischen Parenthesen und getrennt durch "" Pfeife-Charaktere und begrenzt durch das erforderliche "" quantifier) zwei oder mehr Kinderelemente (einschließlich nur Textelemente oder der angegebenen genannten Elemente) kann in jeder Ordnung und Zahl von Ereignissen im Inhalt verwendet werden.
  • ein Element-Inhalt, was bedeutet, dass es keine Textelemente in den Kinderelementen des Inhalts geben muss (werden alle zwischen Kinderelementen verschlüsselten whitespaces dann, gerade wie Anmerkungen ignoriert). Solcher Element-Inhalt wird als zufriedene Partikel in einer Variante der Backus-Naur-Form ohne Endsymbole und Elementnamen als Nichtendsymbole angegeben. Element-Inhalt besteht aus:
  • eine zufriedene Partikel kann entweder der Name eines Elements sein, das im DTD, oder eine Folge-Liste oder auserlesene Liste erklärt ist. Ihm kann von einem fakultativen quantifier gefolgt werden.
  • eine Folge-Liste bedeutet eine geordnete Liste (angegeben zwischen Parenthesen und getrennt durch einen "" Komma-Charakter) von einer oder mehr zufriedenen Partikeln: Alle zufriedenen Partikeln müssen nacheinander als direkte Kinder im Inhalt des definierten Elements, an der angegebenen Position und Verhältnisordnung erscheinen;
  • eine auserlesene Liste bedeutet eine gegenseitig exklusive Liste (angegeben zwischen Parenthesen und getrennt durch einen "" Pfeife-Charakter) von zwei oder mehr zufriedenen Partikeln: Nur eine dieser zufriedenen Partikeln können im Inhalt des definierten Elements an derselben Position erscheinen.
  • Ein quantifier ist ein einzelner Charakter, der sofort dem angegebenen Artikel folgt, für den er gilt, um die Zahl von aufeinander folgenden Ereignissen dieser Sachen an der angegebenen Position im Inhalt des Elements einzuschränken; es kann auch sein:
  • um anzugeben, dass es ein oder mehr Ereignisse des Artikels geben muss — kann der wirksame Inhalt jedes Ereignisses verschieden sein;
  • um anzugeben, dass jede Zahl (Null oder mehr) Ereignisse im erlaubten — der Artikel fakultativ ist und kann der wirksame Inhalt jedes Ereignisses verschieden sein;
  • um anzugeben, dass es mehr als ein Ereignis nicht geben muss — ist der Artikel fakultativ;
  • Wenn es keinen quantifier gibt, muss der angegebene Artikel genau eine Zeit an der angegebenen Position im Inhalt des Elements vorkommen.

Zum Beispiel:

</Quelle>

Bemerken Sie, dass Element-Typ-Behauptungen durch die Nichtbestätigung von SGML und XML parsers ignoriert werden (in denen Fällen irgendwelche Elemente in jeder Ordnung und jeder Zahl von Ereignissen im grammatisch analysierten Dokument akzeptiert werden), aber diese Behauptungen werden noch für gut-formedness und Gültigkeit überprüft.

Attribut-Listenbehauptungen

Eine Attribut-Liste gibt für einen gegebenen Element-Typ die Liste des ganzen möglichen mit diesem Typ vereinigten Attributes an. Für jedes mögliche Attribut enthält es:

  • der offen erklärte Name des Attributes,
  • sein Datentyp (oder eine Enumeration seiner möglichen Werte),
  • und sein Verzug-Wert.
Zum Beispiel:</Quelle>

Hier sind einige Attribut-Typen, die sowohl durch SGML als auch durch XML unterstützt sind:

: dieser Typ bedeutet Charakter-Daten und zeigt an, dass der wirksame Wert des Attributes jeder Textwert sein kann, wenn das Attribut, wie befestigt, nicht angegeben wird (die Anmerkungen im DTD können weiter dokumentieren, welche Werte effektiv akzeptiert werden, aber die DTD Syntax erlaubt solche genaue Spezifizierung nicht);

: der wirksame Wert des Attributes muss ein gültiger Bezeichner sein, und es wird verwendet, um zum aktuellen Element das Ziel von Verweisungen mit diesem definierten Bezeichner zu definieren und zu verankern (einschließlich als Dokumentenbruchstück-Bezeichner, die am Ende eines URI nach "#" Zeichen angegeben werden können); es ist ein Fehler, wenn verschiedene Elemente in demselben Dokument denselben Bezeichner definieren; die Einzigartigkeitseinschränkung deutet auch an, dass der Bezeichner selbst keine andere Semantik trägt, und dass Bezeichner als undurchsichtig in Anwendungen behandelt werden müssen; bemerken Sie, dass XML auch das Standardpseudoattribut "" mit diesem Typ vorherbestimmt, ohne jede Behauptung im DTD zu brauchen, so gilt die Einzigartigkeitseinschränkung auch für diese definierten Bezeichner, wenn sie überall in einem XML Dokument angegeben werden.

oder: Der wirksame Wert des Attributes kann nur ein gültiger Bezeichner (oder eine raumgetrennte Liste solcher Bezeichner) sein und muss im einzigartigen Element Verweise anbringen, das im Dokument mit einem Attribut definiert ist, das mit dem Typ im DTD (oder das einzigartige Element erklärt ist, das in einem XML Dokument mit einem Pseudoattribut"" definiert ist), und dessen wirksamer Wert derselbe Bezeichner ist;

oder: Der wirksame Wert des Attributes kann nur ein gültiger Namenjeton sein (oder eine unter Drogeneinfluss getrennte Liste solcher Namenjetons), aber es wird nicht eingeschränkt, um ein einzigartiger Bezeichner innerhalb des Dokumentes zu sein; dieser Name kann ergänzende und von der Anwendung abhängige Semantik tragen und kann zusätzliche Namengeben-Einschränkungen verlangen, aber das ist außer dem Spielraum des DTD;

oder: Der wirksame Wert des Attributes kann nur der Name einer grammatisch unnalysierten Außenentität sein (oder eine raumgetrennte Liste solcher Namen), der auch in der Dokumententyp-Behauptung erklärt werden muss; dieser Typ wird im HTML parsers nicht unterstützt, aber ist in SGML und XML 1.0 oder 1.1 (einschließlich XHTML und SVG) gültig;

: der wirksame Wert des Attributes kann nur eine der aufgezählten Liste (angegeben zwischen Parenthesen und getrennt durch einen "" Pfeife-Charakter) Textwerte sein, wo jeder Wert in der Enumeration vielleicht zwischen einzelnen oder doppelten Anführungszeichen angegeben wird, wenn es nicht ein einfacher Namenjeton ist;

: der wirksame Wert des Attributes kann nur irgendwelche der aufgezählten Liste (angegeben zwischen Parenthesen und getrennt durch einen "" Pfeife-Charakter) Notationsnamen sein, wo jeder Notationsname in der Enumeration auch in der Dokumententyp-Behauptung erklärt werden muss; dieser Typ wird im HTML parsers nicht unterstützt, aber ist in SGML und XML 1.0 oder 1.1 (einschließlich XHTML und SVG) gültig.

Ein Verzug-Wert kann definieren, ob ein Attribut oder nicht vorkommen muss, oder ob es einen festen Wert hat, oder welcher Wert als ein Verzug-Wert verwendet werden sollte (" …"), im Falle dass das gegebene Attribut in einem XML Anhängsel ausgelassen wird.

Bemerken Sie, dass Attribut-Listenbehauptungen durch die Nichtbestätigung von SGML und XML parsers ignoriert werden (in denen Fällen jedes Attribut innerhalb aller Elemente des grammatisch analysierten Dokumentes akzeptiert wird), aber diese Behauptungen werden noch für gut-formedness und Gültigkeit überprüft.

Entitätsbehauptungen

Eine Entität ist einem Makro ähnlich. Die Entitätsbehauptung teilt es ein Wert zu, der überall im Dokument behalten wird. Eine übliche Anwendung soll einen Namen haben, der erkennbarer ist als eine numerische Charakter-Verweisung für einen fremden Charakter. Entitäten helfen, Leserlichkeit eines XML Textes zu verbessern. Im Allgemeinen gibt es zwei Typen: inner und äußerlich.

  • Innere (grammatisch analysierte) Entitäten vereinigen einen Namen mit jedem willkürlichen Textinhalt, der in ihrer Behauptung definiert ist (der in der inneren Teilmenge oder in der Außenteilmenge des DTD sein kann, der im Dokument erklärt ist). Wenn auf eine genannte Entitätsverweisung dann im Rest des Dokumentes (einschließlich im Rest des DTD) gestoßen wird, und wenn dieser Entitätsname als eine grammatisch analysierte Entität effektiv definiert worden ist, wird die Verweisung selbst sofort durch den Textinhalt ersetzt, der in der grammatisch analysierten Entität definiert ist, und die Syntaxanalyse geht innerhalb dieses Ersatztextes weiter.
  • Vorherbestimmte genannte Charakter-Entitäten sind inneren Entitäten ähnlich: 5 von ihnen werden jedoch besonders im ganzen SGML, HTML und XML parsers behandelt. Diese Entitäten sind ein bisschen von normalen grammatisch analysierten Entitäten verschieden, weil, wenn auf eine genannte Charakter-Entitätsverweisung im Dokument gestoßen wird, die Verweisung auch sofort durch den in der Entität definierten Charakter-Inhalt ersetzt wird, aber die Syntaxanalyse geht nach dem Ersatztext weiter, der wörtlich im zurzeit grammatisch analysierten Jeton sofort eingefügt wird (wenn solcher Charakter im Textwert dieses Jetons erlaubt wird). Das erlaubt einige Charaktere, die für die Kernsyntax des HTML oder XML selbst erforderlich sind, um von ihrer speziellen syntaktischen Rolle entkommen zu werden (namentlich, "&" der vorbestellt wird, um Entitätsverweisungen, "zu beginnen
  • In grundlegenden Profilen für SGML oder in HTML-Dokumenten ist die Behauptung von inneren Entitäten nicht möglich (weil DTD Außenteilmengen nicht wiederbekommen werden, und innere DTD Teilmengen in diesen grundlegenden Profilen nicht unterstützt werden).
  • Statt dessen bestimmen HTML-Standards einen großen Satz von bis zu mehreren hundert von genannten Charakter-Entitäten vorher, aber sie können noch behandelt werden, weil Standard Entitäten grammatisch analysiert hat, die im durch den parser verwendeten DTD definiert sind.
  • Außenentitäten beziehen sich auf Außenlagerungsgegenstände. Sie werden gerade durch einen einzigartigen Namen im Dokument erklärt, und mit einem öffentlichen Bezeichner (ein FPI) und/oder einem Systembezeichner (interpretiert als ein URI) das Spezifizieren wo die Quelle ihres Inhalts definiert. Sie bestehen tatsächlich in zwei Varianten:
  • grammatisch analysierte Außenentitäten (meistenteils definiert mit einem SYSTEM-Bezeichner, der den URI ihres Inhalts anzeigt), die in ihrer Definition zu einer genannten Anmerkung nicht vereinigt werden, in welchem Fall, XML oder SGML gültig machend, parsers ihren Inhalt wiederbekommen und sie grammatisch analysieren wird, als ob sie als innere Entitäten (die Außenentität erklärt wurden, die ihren wirksamen Ersatztext enthält);
  • grammatisch unnalysierte Außenentitäten, die definiert und mit einem Anmerkungsnamen vereinigt werden, in welchem Fall sie als undurchsichtige Verweisungen behandelt und als solcher zur Anwendung mit dem SGML oder XML parser Zeichen gegeben werden: Ihre Interpretation, Wiederauffindung und Syntaxanalyse werden zur Anwendung gemäß den Typen von Anmerkungen verlassen, die es unterstützt (sieh die folgende Abteilung über Anmerkungen und für Beispiele grammatisch unnalysierter Außenentitäten).
  • Außenentitäten werden in grundlegenden Profilen für SGML oder in HTML-Dokumenten nicht unterstützt, aber sind in vollen Durchführungen von SGML und in XML 1.0 oder 1.1 gültig (einschließlich XHTML und SVG, selbst wenn sie in jenen Dokumententypen nicht ausschließlich erforderlich sind).

Ein Beispiel von inneren Entitätsbehauptungen (hier in einer inneren DTD Teilmenge eines SGML Dokumentes) ist:

]></Quelle>

Bemerken Sie, dass innere Entitäten in jeder Ordnung definiert werden können, so lange in ihnen nicht Verweise angebracht und im DTD oder im Körper des Dokumentes in ihrer Ordnung der Syntaxanalyse grammatisch analysiert wird: Es ist gültig, um eine Verweisung auf eine noch unbestimmte Entität innerhalb des Inhalts einer grammatisch analysierten Entität einzuschließen, aber es ist ungültig, um irgendwo anders jede genannte Entitätsverweisung einzuschließen, bevor diese Entität einschließlich aller anderen inneren Entitäten völlig definiert worden ist, die in seinem definierten Inhalt Verweise angebracht sind (das verhindert auch kreisförmige oder rekursive Definitionen von inneren Entitäten). Dieses Dokument wird grammatisch analysiert, als ob es war:

]></Quelle>

Bemerken Sie, dass die Verweisung auf den "Autor" innere Entität im Ersatztext der "Unterschrift" innere Entität nicht eingesetzt wird. Statt dessen wird es nur ersetzt, wenn die "Unterschrift"-Entitätsverweisung innerhalb des Inhalts des "sgml" Elements grammatisch analysiert wird, aber nur durch die Bestätigung parsers (parsers gültig nichtmachend, wird Entitätsverweisungen nicht einsetzen, die innerhalb des Inhalts des Elements oder innerhalb von Attribut-Werten im Körper des Dokumentes vorkommen.

Das ist möglich, weil der in den inneren Entitätsdefinitionen angegebene Ersatztext eine Unterscheidung zwischen Parameter-Entitätsverweisungen erlaubt (die durch den "%"-Charakter eingeführt werden, und dessen Ersatz für den grammatisch analysierten DTD Inhalt gilt) und allgemeine Entitätsverweisungen (die durch "&" Charakter eingeführt werden, und dessen Ersatz verzögert wird, bis sie effektiv grammatisch analysiert und gültig gemacht werden). Der "%"-Charakter, um Parameter-Entitätsverweisungen im DTD einzuführen, verliert seine spezielle Rolle außerhalb des DTD, und es wird ein wörtlicher Charakter.

Jedoch werden die Verweisungen auf vorherbestimmte numerische Charakter-Entitäten eingesetzt, wo auch immer sie vorkommen, ohne eine Bestätigung parser zu brauchen (sie werden nur durch "&" Charakter eingeführt).

Notationsbehauptungen

Notationen werden in SGML oder XML verwendet. Sie stellen eine ganze Verweisung auf grammatisch unnalysierte Außenentitäten zur Verfügung, deren Interpretation zur Anwendung verlassen wird (der sie direkt interpretieren wird oder die Außenentität selbst wiederbekommen wird), durch das Zuweisen von ihnen ein einfacher Name, der im Körper des Dokumentes verwendbar ist. Zum Beispiel können Notationen an die Verweisung non-XML Daten in einem XML 1.1 Dokument gewöhnt sein. Zum Beispiel, um SVG Images zu kommentieren, um sie mit einem spezifischen renderer zu vereinigen:

</Quelle>

Das erklärt den Typ MIME von Außenimages mit diesem Typ und verkehrt es mit einer Notation nennt "type-image-svg". Jedoch folgen Notationsnamen gewöhnlich einer Namengeben-Tagung, die zum Anwendungserzeugen oder Verwenden der Notation spezifisch ist: Notationen werden als zusätzliche Meta-Daten interpretiert, deren wirksamer Inhalt eine Außenentität und entweder ein ÖFFENTLICHER FPI ist, der in den Katalogen eingeschrieben ist, die durch XML oder SGML parsers oder ein SYSTEM URI verwendet sind, dessen Interpretation Anwendungsabhängiger ist (hier ein Typ MIME, der als ein relativer URI interpretiert ist, aber es konnte ein absoluter URI zu einem spezifischen renderer oder eine URNE sein, die einen OS-Specific-Gegenstand-Bezeichner wie ein UUID anzeigt).

Der offen erklärte Notationsname muss innerhalb der ganzen Dokumententyp-Behauptung, d. h. in der Außenteilmenge sowie der inneren Teilmenge mindestens für die Übereinstimmung mit XML einzigartig sein.

Notationen können zu grammatisch unnalysierten Außenentitäten vereinigt werden, die in den Körper des SGML oder XML Dokumentes eingeschlossen sind. Oder Parameter dieser Außenentitäten gibt den FPI und/oder den URI an, wo die grammatisch unnalysierten Daten der Außenentität gelegen werden, und der zusätzliche Parameter dieser definierten Entitäten die zusätzliche Notation (d. h., effektiv der Typ MIME hier) angibt. Zum Beispiel:

]>

</sgml>

</Quelle>

Innerhalb des Körpers des SGML Dokumentes, diese Verweise angebrachten Außenentitäten (dessen Name zwischen angegeben wird "&" und";") werden wie übliche genannte Entitäten (definiert mit einem CDATA-Wert) nicht ersetzt, aber werden als verschiedene grammatisch unnalysierte Jetons verlassen, die irgendein als der Wert eines Element-Attributes (wie obengenannter) oder innerhalb des Element-Inhalts verwendet werden können, vorausgesetzt, dass entweder der DTD solche Außenentitäten im offen erklärten zufriedenen Typ von Elementen oder im offen erklärten Typ von Attributen (hier der Typ für das Attribut) erlaubt, oder der SGML parser den Inhalt nicht gültig macht.

Notationen können auch direkt zu Elementen als zusätzliche Meta-Daten vereinigt werden, ohne sie zu einer anderen Außenentität, durch das Geben ihrer Namen als mögliche Werte einiger zusätzlicher Attribute zu vereinigen (auch erklärt im DTD innerhalb

]></sgml></Quelle>

Das Beispiel zeigt oben, dass eine Notation "type-image-svg" genannt hat, der im normalen öffentlichen FPI und dem Systembezeichner (der normale URI) von einem SVG 1.1 Dokument Verweise anbringt, anstatt gerade einen Systembezeichner als im ersten Beispiel anzugeben (der ein relativer URI interpretiert lokal als ein Typ MIME war). In dieser Anmerkung wird direkt innerhalb des grammatisch unnalysierten "Typ"-Attributes des "img" Elements Verweise angebracht, aber sein Inhalt wird nicht wiederbekommen. Es erklärt auch eine andere Notation für eine mit dem Verkäufer spezifische Anwendung, um das "Sgml"-Wurzelelement im Dokument zu kommentieren. In beiden Fällen wird die offen erklärte genannte Notation direkt in einem offen erklärten "Typ"-Attribut verwendet, dessen Inhalt im DTD mit dem "NOTATIONS"-Attribut-Typ angegeben wird (dieses "Typ"-Attribut wird für das "sgml" Element, sowie für das "img" Element erklärt).

Jedoch gibt das "Titel"-Attribut des "img" Elements die innere Entität "example1SVGTitle" an, dessen Behauptung, die keine Anmerkung definiert, so wird es durch die Bestätigung parsers und der Entitätsersatztext grammatisch analysiert, "Titel von example1.svg" sein wird.

Und der Inhalt des "img" Elements bringt in einer anderen Außenentität "example1SVG" Verweise an, dessen Behauptung auch keine Notation definiert, so wird es auch durch die Bestätigung parsers grammatisch analysiert und der Entitätsersatztext durch seinen definierten SYSTEM-Bezeichner "example1.svg" (auch interpretiert als ein relativer URI) gelegen wird. Der wirksame Inhalt für das "img" Element, der Inhalt dieser zweiten Außenquelle sein. Der Unterschied mit dem GIF Image, ist, dass das SVG Image innerhalb des SGML Dokumentes gemäß den Behauptungen im DTD grammatisch analysiert wird, wo im GIF Image gerade als ein undurchsichtiger Außengegenstand Verweise angebracht wird (der nicht parsable mit SGML ist) über sein "Daten"-Attribut (dessen Werttyp eine undurchsichtige ENTITÄT ist).

Nur ein Notationsname kann im Wert von ENTITÄTS-Attributen angegeben werden (es gibt keine Unterstützung in SGML, XML 1.0 oder XML 1.1 für vielfache Notationsnamen in derselben offen erklärten Außen-ENTITÄT, so werden getrennte Attribute erforderlich sein). Jedoch kann in vielfachen Außenentitäten (in einer raumgetrennten Liste von Namen) in Attributen Verweise angebracht werden, die mit dem Typ ENTITIES erklärt sind, und wo jede genannte Außenentität auch mit seiner eigenen Notation erklärt wird).

Notationen sind auch für XML und SGML parsers völlig undurchsichtig, so werden sie durch den Typ der Außenentität nicht unterschieden, in der sie Verweise anbringen können (für diese parsers, ließen sie gerade einen einzigartigen Namen zu einem öffentlichen Bezeichner (ein FPI) und/oder einem Systembezeichner (ein URI)) vereinigen.

Einige Anwendungen (aber nicht XML oder SGML parsers selbst) erlauben auch, in Notationen indirekt durch das Namengeben von ihnen im Wert eines CDATA Standardattributes Verweise anzubringen, überall kann ein URI angegeben werden. Jedoch ist dieses Verhalten anwendungsspezifisch, und verlangt, dass die Anwendung einen Katalog bekannter URNEN aufrechterhält, um sie in die Notationen aufzulösen, die in einem normalen SGML oder XML parser grammatisch analysiert worden sind. Dieser Gebrauch erlaubt Notationen, nur in einem DTD versorgt als eine Außenentität definiert und nur als die Außenteilmenge von Dokumenten Verweise angebracht zu werden, und erlaubt diesen Dokumenten, vereinbar mit der Bestätigung von XML oder SGML parsers zu bleiben, die keine direkte Unterstützung für Notationen haben.

Notationen werden im HTML, oder in grundlegenden Profilen für XHTML und SVG, weil nicht verwendet:

  • in allen durch diese Standard-Unterlage-Typen verwendeten Außenentitäten wird durch einfache Attribute Verweise angebracht, hat mit dem Typ CDATA in ihrem normalen DTD erklärt (wie das "href" Attribut eines Ankers "ein" Element oder das "src" Attribut eines Images "img" Element, dessen Werte als ein URI interpretiert, ohne jeden Katalog von öffentlichen Bezeichnern zu brauchen, d. h., FPI bekannt werden);
  • in allen Außenentitäten für zusätzliche Meta-Daten wird Verweise angebracht:
  • entweder durch zusätzliche Attribute (wie das "Typ"-Attribut, das den Typ MIME der Außenentität oder das "Charset"-Attribut anzeigt, das seine Verschlüsselung anzeigt),
  • oder durch zusätzliche Elemente (wie "Verbindung" oder "meta" im HTML und XHTML) innerhalb ihrer eigenen Attribute,
  • oder durch Standardpseudoattribute in XML und XHTML (wie "xml:lang" oder "xmlns" und "xmlns: *" für namespace Behauptungen).

Bemerken Sie auch, dass sogar in der Bestätigung von SGML oder XML 1.0 oder XML 1.1 parsers, die Außenentitäten, die durch einen FPI und/oder URI in offen erklärten Notationen Verweise angebracht sind, automatisch durch den parsers selbst nicht wiederbekommen werden. Statt dessen stellen diese parsers gerade der Anwendung den grammatisch analysierten FPI und/oder URI zur Verfügung, der zu den Notationen vereinigt ist, die im grammatisch analysierten SGML oder XML Dokument, und mit einer Möglichkeit für ein Wörterbuch gefunden sind, das alle im DTD erklärten Notationsnamen enthält; diese, parsers gültig machend, werden auch die Einzigartigkeit von Notationsnamenbehauptungen überprüfen, und werden einen Gültigkeitserklärungsfehler ausgeben, wenn einige Notationsnamen irgendwo im DTD oder im Dokumentenkörper verwendet, aber nicht erklärt werden:

  • wenn die Anwendung keine Notation verwenden kann (oder wenn ihr FPI und/oder URI unbekannt oder in ihrem lokalen Katalog nicht unterstützt sind), können diese Notationen entweder still durch die Anwendung oder die Anwendung ignoriert werden konnte einem Fehler Zeichen geben;
  • sonst werden die Anwendungen sich entscheiden, wie man sie dann interpretiert, wenn die Außenentitäten wiederbekommen und dann getrennt grammatisch analysiert werden müssen;
  • Anwendungen können dann einem Fehler Zeichen geben, wenn solche Interpretation, Wiederauffindung oder getrennte Syntaxanalyse jemals scheitern.
  • Unerkannte Notationen, die eine Anwendung veranlassen können, einem Fehler Zeichen zu geben, sollten die Interpretation des gültig gemachten Dokumentes mit ihnen nicht blockieren.

XML DTDs und Diagramm-Gültigkeitserklärung

Der XML DTD Syntax ist eine von mehreren XML Diagramm-Sprachen. Jedoch ersetzen viele der Diagramm-Sprachen den XML DTD nicht völlig. Namentlich erlaubt der XML DTD, Entitäten und Notationen zu definieren, die keine direkten Entsprechungen in DTD-weniger XML haben (weil innere Entitäten und parsable Außenentitäten nicht ein Teil von XML Diagramm-Sprachen sind, und weil andere grammatisch unnalysierte Außenentitäten und Notationen keinen einfachen gleichwertigen mappings im grössten Teil von XML shema Sprachen haben).

Die meisten XML Diagramm-Sprachen sind nur Ersatz für Element-Behauptungen und schreiben Listenbehauptungen, in wie Weise zu, wie es möglich wird, XML Dokumente mit der Nichtbestätigung XML parsers grammatisch zu analysieren (wenn der einzige Zweck der DTD Außenteilmenge war, das Diagramm zu definieren). Außerdem müssen Dokumente für diese XML Diagramm-Sprachen getrennt grammatisch analysiert werden, so ist die Bestätigung des Diagramms von XML Dokumenten in der reinen eigenständigen Weise mit diesen Sprachen nicht wirklich möglich: Die Dokumententyp-Behauptung bleibt notwendig, um mindestens (mit einem XML Katalog) das im grammatisch analysierten XML Dokument verwendete Diagramm zu identifizieren, und das wird auf einer anderen Sprache gültig gemacht.

Ein häufiger Irrtum meint, dass eine Nichtbestätigung XML parser Dokumententyp-Behauptungen nicht lesen muss, wenn tatsächlich die Dokumententyp-Behauptungen noch für die richtige Syntax sowie Gültigkeit von Behauptungen gescannt werden müssen, und der parser noch alle Entitätsbehauptungen in der inneren Teilmenge grammatisch analysieren, und die Ersatztexte von inneren Entitäten einsetzen muss, die überall in der Dokumententyp-Behauptung oder im Dokumentenkörper vorkommen.

Eine Nichtbestätigung parser kann sich jedoch dafür entscheiden, parsable Außenentitäten (einschließlich der Außenteilmenge) nicht zu lesen, und muss die zufriedenen Musterbeschränkungen nicht beachten, die in Element-Behauptungen und in Attribut-Listenbehauptungen definiert sind.

Wenn das XML Dokument von parsable Außenentitäten abhängt (einschließlich der angegebenen Außenteilmenge oder parsable Außenentitäten, die in der inneren Teilmenge erklärt sind), sollte es in seiner XML Behauptung behaupten. Die Identifizierung der Bestätigung DTD kann durch den Gebrauch von XML Katalogen durchgeführt werden, um seine angegebene Außenteilmenge wiederzubekommen.

Im Beispiel unten wird das XML Dokument damit erklärt, weil es eine Außenteilmenge in seiner Dokumententyp-Behauptung hat:

</Quelle>

Wenn die XML Dokumententyp-Behauptung einen SYSTEM-Bezeichner für die Außenteilmenge einschließt, kann es nicht als eigenständig sicher bearbeitet werden: Der URI sollte wiederbekommen werden, sonst kann es unbekannte genannte Charakter-Entitäten geben, deren Definition erforderlich sein kann, um die wirksame XML Syntax in der inneren Teilmenge richtig grammatisch zu analysieren, oder im Dokumentenkörper (die XML Syntax-Syntaxanalyse normalerweise nach dem Ersatz aller genannten Entitäten durchgeführt wird, der fünf Entitäten ausschließend, die in XML vorherbestimmt werden, und die nach der Syntaxanalyse des XML Dokumentes in lexikalische Jetons implizit eingesetzt werden). Wenn es gerade einen ÖFFENTLICHEN Bezeichner einschließt, kann es als eigenständig bearbeitet werden, wenn der XML Verarbeiter diesen ÖFFENTLICHEN Bezeichner in seinem lokalen Katalog davon weiß, wo es eine verbundene DTD Entität wiederbekommen kann.

XML DTD Diagramm-Beispiel

Ein Beispiel eines sehr einfachen äußerlichen XML DTD, um das Diagramm einer Liste von Personen zu beschreiben, könnte bestehen aus:

</Quelle>

Die Einnahme dieser Linie durch die Linie:

  1. ist ein gültiger Elementname, und ein Beispiel solch eines Elements enthält jede Zahl der Elemente. Das Anzeigen dort kann 0 oder mehr Elemente innerhalb des Elements sein.
  1. ist ein gültiger Elementname, und ein Beispiel solch eines Elements enthält ein Element, das genannt, von einem genanntem gefolgt ist (fakultativ), dann (auch fakultativ) und (auch fakultativ). Das Anzeigen, dass ein Element fakultativ ist. Die Verweisung auf den Elementnamen hat nein, so muss ein Element ein Element enthalten.
  1. ist ein gültiger Elementname, und ein Beispiel solch eines Elements enthält "grammatisch analysierte Charakter-Daten" (#PCDATA).
  1. ist ein gültiger Elementname, und ein Beispiel solch eines Elements enthält grammatisch analysierte Charakter-Daten.
ist ein gültiger Elementname, und ein Beispiel solch eines Elements enthält grammatisch analysierte Charakter-Daten. ist ein gültiger Elementname, und ein Beispiel solch eines Elements enthält grammatisch analysierte Charakter-Daten.

Ein Beispiel einer XML Datei, die davon Gebrauch macht und sich diesem DTD anpasst, folgt. Im DTD wird hier als eine Außenteilmenge, über das SYSTEM specifier und einen URI Verweise angebracht. Es nimmt an, dass wir den DTD mit der URI Verhältnisverweisung "example.dtd" identifizieren können; der "people_list" danach"! DOCTYPE" sagt uns, dass die Wurzelanhängsel oder das erste im DTD definierte Element, "people_list" genannt werden:

</Person>

</people_list>

</Quelle>

Man kann machen das in einem XML-ermöglichten Browser (wie Internet Explorer oder Mozilla Firefox) durch das Aufkleben und das Sparen des DTD Bestandteils oben zu einer Textdatei hat example.dtd und die XML Datei zu einer verschieden genannten Textdatei und Öffnung der XML Datei mit dem Browser genannt. Die Dateien sollten beide in demselben Verzeichnis gespart werden. Jedoch überprüfen viele Browser nicht, dass sich ein XML Dokument den Regeln im DTD anpasst; sie sind nur erforderlich zu überprüfen, dass der DTD syntaktisch richtig ist. Für Sicherheitsgründe können sie auch beschließen, den äußerlichen DTD nicht zu lesen.

Derselbe DTD kann auch direkt im XML Dokument selbst als eine innere Teilmenge, durch das Einhüllen davon innerhalb von [eckigen Klammern] in der Dokumententyp-Behauptung eingebettet werden, in welchem Fall das Dokument nicht mehr von Außenentitäten abhängt und in der eigenständigen Weise bearbeitet werden kann:

]> </Person></people_list></Quelle>

Alternativen zu DTDs (um Diagramme anzugeben), sind verfügbar:

  • XML Diagramm, auch gekennzeichnet als XML Schema Definition (XSD), hat Empfehlungsstatus innerhalb des W3C erreicht, und ist für "Daten orientiert" (d. h. transactional populär nichtveröffentlichend) XML Gebrauch wegen seines stärkeren Schreibens und leichterer runder Schaltung zu javanischen Behauptungen. Der grösste Teil der Veröffentlichen-Welt hat gefunden, dass die zusätzliche Kompliziertheit von XSD ihnen keine besonderen Vorteile bringen würde, so sind DTDs noch dort viel populärer. Eine XML Diagramm-Definition ist selbst ein XML Dokument, während ein DTD nicht ist.
  • ENTSPANNEN SIE NG, der auch ein Teil von DSDL ist, ist ein ISO internationaler Standard. Es ist ausdrucksvoller als XSD, während man eine einfachere Syntax zur Verfügung stellt, aber kommerzielle Softwareunterstützung ist in der Ankunft langsam gewesen.

Siehe auch

  • Dokumententyp-Behauptung
  • Semantisches Web
  • XML Diagramm-Sprachvergleich - Vergleich in andere XML Diagramm-Sprachen.
  • XML Diagramm (W3C)

Links


Differenzial cryptanalysis / Teufel
Impressum & Datenschutz