3 Auf SGML und HTML

In diesem Abschnitt des Dokuments sind Sie vertraut mit SGML und über seine Beziehung zu HTML lernen. Ausführliche Beschreibung von SGML ist in dieser Norm nicht enthalten (siehe. [ISO8879] ).

3.1 Einführung in SGML

SGML - ein System für die Bestimmung der Markup - Sprachen . Autoren markieren ihre Dokumente, Informationen über die Struktur, Darstellung und Semantik in einem einzigen Dokument präsentiert. HTML ist eine Markup-Sprache Beispiele. Hier ist ein Beispiel eines Dokuments in der Sprache HTML:

  <DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.0 // EN"
  "Http://www.w3.org/TR/REC-html40/strict.dtd">
 <HTML>
  <HEAD>
  <Title> Ihr erstes Dokument in der Sprache HTML </ title>
  </ HEAD>
  <BODY>
  <P> Hallo!
  </ BODY>
 </ HTML>

Ein HTML-Dokument besteht aus einem Kopfteil (hier - zwischen den Tags <HEAD> und </ HEAD>) und dem Körper (hier - zwischen Titel <BODY> und </ BODY>). Dokumenttitel wird in dem Header (zusammen mit anderen Informationen über das Dokument) und dem Inhalt eines Dokuments im Körper gespeichert angezeigt. In diesem Beispiel enthält der Körper des Dokuments nur einen Absatz, die mit <P>.

Jede Markup - Sprache in SGML definiert, die so genannte SGML - Anwendung. SGML-Anwendung ist gekennzeichnet durch:

  1. Ankündigung von SGML . SGML Anzeige gibt an, welche Zeichen und Begrenzer in der Anwendung angezeigt werden.
  2. Document Type Definition (DTD) (DTD) . DTD definiert die Syntax von Markup - Konstrukte. DTD können zusätzliche Definitionen umfassen zum Beispiel Referenzsymbolkombination .
  3. Die Spezifikation beschreibt die in der Markup-Semantik. Diese Spezifikation legt auch Syntax Einschränkungen, die nicht die DTD ausgedrückt werden können.
  4. Kopien der Dokumentdaten (Inhalt) und Markup enthalten. Jede Instanz enthält einen Verweis auf die DTD, die für die Auslegung verwendet werden soll.

Die HTML 4.0 - Spezifikation enthält SGML klassifiziert drei Dokumenttypdefinitionen (siehe die Beschreibung von ihnen. Sehen Sie die Versionsinformationen ist die HTML ) und eine Liste von Zeichenreferenzen .

3.2 Aufbau SGML, HTML verwendet

In den folgenden Abschnitten finden Sie SGML-Konstrukte im HTML verwendet erfüllen.

Im Anhang sind einige SGML - Funktionen , die nicht von HTML - Tools und User - Agents und die Verwendung unterstützt werden , von denen vermieden werden sollte.

3.2.1 Elemente

Document Type Definition SGML erklärt Elementtypen , die Strukturen oder das gewünschte Verhalten darstellen. HTML enthält Elementtypen, die Absätze, Hypertext-Links, Listen darstellen, Tabellen, Bilder, etc.

Jeder Elementtyp - Deklaration umfasst in der Regel aus drei Teilen: ein Start - Tag, Inhalt und End - Tag.

Der Elementname wird in den angezeigten Start - Tag (geschrieben <element-name>) und End - Tag (geschrieben </ element-name>); vergessen Sie nicht, den Schrägstrich vor dem Elementnamen in dem End-Tag. Zum Beispiel kann die Start- und End - Tags Element UL bestimmen die Liste:

  <UL>
 <LI> <P> ... Eintrag in der Liste 1 ... <LI> <P> ... Liste Punkt 2 ... </ UL>

Einige HTML - Elementtypen erlauben den Autoren zu unterlassen End - Tags (zB Arten von Elementen der P und der LI ). Mehrere Arten von Elementen können Sie auch weglassen die ersten Tags ; zum Beispiel, der HEAD und BODY . HTML-DTD zeigt für jeden Elementtyp, ob die Start- und End-Tags erforderlich.

Einige Arten von HTML-Elemente haben keinen Inhalt. Beispielsweise das Element der Übergang zur nächsten Zeile BR keinen Inhalt hat; seine Rolle - die Textzeichenfolge unterbrechen. Solche leeren Elemente haben nie End - Tags. Die Ermittlung der Art des Dokuments und den Text der Spezifikation angeben , ob ein Elementtyp leer ist (keinen Inhalt hat) oder, wenn es Inhalt haben kann, was akzeptabel Inhalt ist.

Elementnamen sind immer case-sensitive.

Weitere Informationen über Regeln Elemente regeln (zB können sie richtig verschachtelt werden, schließt sich das End-Tag alle ausgelassen Start-Tag, bis die entsprechenden Start-Tag (siehe Abschnitt 7.5.1), etc.). Um den SGML-Standard See.

Zum Beispiel wird folgender Absatz:

  <P> Dies ist der erste Absatz. </ P>
 ... Ein Blockelement ...
 

ohne End-Tag überschrieben werden:

  <P> Dies ist der erste Absatz.
 ... Ein Blockelement ...
 

seit dem Start-Tag <P> geschlossen Blockelement folgt. Und falls ein Absatzelement im Block enthalten, zum Beispiel:

  <Div>
 <P> Das ist ein Absatz.
 </ Div>

End-Tag enthält ein Blockelement (hier - </ DIV>) dient als End-Tag offen Start-Tag <P>.

Elements - das ist nicht die Tags. Manche Leute beziehen sich auf Elemente von Tags (zum Beispiel "Tag P"). Denken Sie daran , dass das Element - eine Sache, und das Tag ( am Anfang oder Ende, spielt keine Rolle) - andere. Zum Beispiel ist HEAD - Element immer vorhanden, auch wenn die Start- und End - Tags fehlen Kopf.

Alle Elementtypen in dieser Spezifikation deklariert sind in den angegebenen Indexeintrag .

3.2.2 Attribute

Mit Elementen zugeordnet Eigenschaften werden können, die so genannte Attribute , die Werte (Standard oder Set von Autoren oder Skripte) haben können. Attribut / Wert-Paare werden vor der schließenden Klammer platziert ">" Tag Anfangselement. Das Start-Tag Element kann eine beliebige Anzahl von (gültigen) Attribut / Wert-Paare, die durch Leerzeichen getrennt. Sie können in beliebiger Reihenfolge erscheinen.

In diesem Beispiel ist das Element H1 gesetzt Attribut - ID :

 <H1 id = "section1">
 Diese spezifische Titel, dank der id-Attribut
 </ H1> 

Standardmäßig erfordert SGML , dass alle Attributwerte werden getrennt durch einen Doppel (ASCII dezimal 34) oder einfache Anführungszeichen (ASCII - Dezimalcode 39). Einfache Anführungszeichen können in den Wert des Attributs aufgenommen werden, wenn der Wert durch doppelte Anführungszeichen getrennt ist, und umgekehrt. Autoren können auch verwenden numerischen Zeichenreferenzen auf double (& # 34;) darstellen und einfache Anführungszeichen (& # 39;). Autoren Für doppelte Anführungszeichen können auch verwenden eine Kombination von Verweisen auf Symbole & quot;.

In bestimmten Fällen kann der Wert eines Attributs Autoren können ohne Anführungszeichen angeben. Der Attributwert darf nur Buchstaben (az und AZ), Zahlen (0-9), Bindestriche (ASCII dezimal 45) und Punkte (ASCII dezimal 46). Es wird empfohlen, immer Anführungszeichen verwenden.

Attributnamen sind immer case-sensitive

Attributwerte sind in der Regel zwischen Groß- und Kleinschreibung unterschieden . Die Definition der einzelnen Attribute in der Attributliste zeigt an, ob der Wert Groß- und Kleinschreibung.

Listen Sie alle definierten Attribute in dieser Beschreibung aufgeführt sind in dem Attribut Index .

3.2.3 Zeichenreferenzen

Zeichenreferenzen - sind numerische oder symbolische Namen der Zeichen , die im HTML - Dokument enthalten sein können. Sie sind praktisch selten verwendeten Zeichen zu beziehen, oder Zeichen, die schwer oder gar nicht in die Entwicklungstools Dokumente einzugeben. Sie werden Zeichenreferenzen in diesem Dokument; sie beginnen mit einem "&" und enden mit einem Semikolon (;). Hier sind einige Beispiele:

  • "& Lt;" ist ein Zeichen <.
  • "& Gt;" Es stellt die> Zeichen.
  • "& Rdquo;" Es ist ein Zeichen. "
  • "& # 229;" (Dezimal) steht für den Buchstaben "a" mit einem Kreis an der Spitze.
  • "& # 1048;" (Dezimal) repräsentiert die kyrillischen Buchstaben "I".
  • "& # X6C34;" (Hexadezimal) stellt das chinesische Zeichen des Wassers.

Zeichenreferenzen in HTML werden im Detail später in diesem Abschnitt unter der Überschrift Zeichensatz HTML - Dokument . Die Spezifikation enthält auch eine Liste von Zeichenreferenzen , die in den Dokumenten in HTML 4.0 verwendet werden.

3.2.4 Kommentare

Kommentare in HTML haben die folgende Syntax:

 <! - Dies ist ein Kommentar ->
 <! - Dies ist auch ein Kommentar,
  es dauert ein paar Zeilen ->

Probleme zwischen dem Eröffnungszeichen-Zeichen ( "<!") Und die Eröffnungszeichen Kommentar ( "-") sind nicht erlaubt, aber sie können zwischen dem Schließen Kommentartrennzeichen ( "-") verwendet werden, und dem Schließen Markup Begrenzer ( ">"). Ein häufiger Fehler ist Übertragung von Zeichenketten enthalten ( "---") in den Kommentar. Sollte in den Kommentaren von zwei oder mehr Bindestriche vermieden werden.

Die Informationen in den Kommentaren hat keine spezielle Bedeutung (zB Zeichenreferenzen werden nicht interpretiert).

3.3 Wie die HTML - DTD zu lesen

Jedes Element - Deklaration und ein Attribut in dieser Beschreibung wird durch ein Fragment seiner begleitet Dokumenttypdefinition . Wir beschlossen, die DTD-Fragmente in der Spezifikation enthalten, anstatt versuchen, ein erschwinglicher, aber länger und weniger präzise Mittel, um die Eigenschaften der Elemente zu beschreiben. Mit den folgenden Tutorial Leser, die von SGML nicht vertraut sind, lernen die DTD zu lesen und die technischen Details der HTML - Spezifikation zu verstehen.

3.3.1 Kommentare DTD

In einer DTD, Kommentare können mehrere Zeilen erstrecken. In einer DTD, Kommentare durch ein Paar von Tags getrennt sind "-" zum Beispiel,

 <! ELEMENT PARAM - O LEER - benannte Eigenschaft Wert ->
Hier ist der Kommentar "benannte Eigenschaft Wert" , erklärt die Verwendung von der Art des Elements der PARAM . Kommentare in der DTD sind informativ.

3.3.2 Definitionen der Parameter - Kombinationen

HTML DTD beginnt mit einer Reihe von Definitionen von Parameterkombinationen. Bestimmte Kombinationen von Parametern definiert ein Makro , das überall in der DTD verwiesen werden kann. Diese Makros werden nicht in HTML-Dokumente angezeigt, erscheinen sie nur in der DTD. Andere Arten von Makros, die so genannte Zeichenreferenzen , können im Text eines HTML - Dokuments oder in Attributwerten verwendet werden.

Wenn eine Kombination der Parameter mit Namen in der DTD bezeichnet, wendet sie sich in einer Reihe.

Die Definition der Parameter der Kombination mit dem Schlüsselwort beginnt <! ENTITY% vom Unternehmen Name folgt, in dem die Zeichenfolge in Anführungszeichen das Unternehmen eingestellt wird , und schließlich ein Schließen>. Kopiert Parameter-Kombinationen mit einem Zeichen "%" in der DTD beginnen, dann gibt es eine Kombination aus dem Namen und endet mit einem optionalen Zeichen ";".

Das folgende Beispiel legt fest, welche Linie entfalten wird "% Schriftstil;".

 <! ENTITY% Schriftstil "TT | I | B | BIG | SMALL"!>

Linie, die eine Kombination von Parametern stattfindet, können die Namen der anderen Kombinationen von Parametern enthalten. Diese Namen werden rekursiv eingesetzt. In diesem Beispiel ist "% inline;" die Kombination umfasst eine Kombination der Parameter "% Schriftstil;", "% Phrase,", "% Sonder;" und "% formctrl;".

 <! ENTITY% inline "#PCDATA |% Schriftstil; |% Phrase; |% Sonder; |% formctrl;"!>

Sie werden oft in der siehe HTML - DTD zwei Entitäten der DTD: "% block;" "% Inline;". Sie werden eingesetzt, wenn der Content - Modell beinhaltet Elemente auf Blockebene und Inline - Elemente , bzw. (definiert in der Sektion der globalen Struktur des Dokuments die HTML ).

3.3.3 Werbeelemente

HTML - DTD besteht aus der Anzeige Elementtypen und deren Attribute. Ad beginnt mit dem Schlüsselwort <! ELEMENT und endet mit a>. Zwischen ihnen muss folgende Angaben enthalten:

  1. Elementname.
  2. Erforderlich , wenn der End - Tag für das Element. Zwei Transfersymbol nach dem Elementnamen bedeuten, dass die Start- und End-Tags sind zwingend erforderlich. Ein Bindestrich, gefolgt von dem Buchstaben "O", zeigt an, dass das End-Tag weggelassen werden kann. Zwei Buchstaben "O" zeigt an, dass es möglich ist, sowohl die Start- und End-Tags zu verzichten.
  3. Der Inhalt des Elements, falls vorhanden. Der zulässige Gehalt des Elements wird seine genannte Content - Modell. Die Typen von Elementen , die keinen Inhalt haben werden als leere Elemente . Das Inhaltsmodell für eine solche Elementtypen deklariert das Stichwort "LEER" verwenden.

In diesem Beispiel:

  <! ELEMENT UL - - (LI) +>
  • Deklarieren Typ UL - Element.
  • Zwei Bindestrich gibt an, dass das Start-Tag <UL> und dem End-Tag </ UL> für dieses Element ist obligatorisch.
  • Das Content-Modell für diese Art von Element - "mindestens ein LI-Element". Im Folgenden wird erläutert, wie das Content-Modell angeben.

Dieses Beispiel zeigt die Deklaration eines leeren Elementtyp:

  <! ELEMENT IMG - O LEER>
  • Deklariert den Typ IMG Element.
  • Hyphen, gefolgt von dem Buchstaben "O", zeigt an, dass das End - Tag weggelassen werden kann, aber wenn der Content - Modell - "LEER", diese Regel wird verbessert, und die End - Tag weggelassen werden müssen.
  • Stichwort "LEER" zeigt an, dass Kopien dieser Art sollte keinen Inhalt haben.

Definitionen des Content-Modell  

Das Inhaltsmodell beschreibt, was in einer Instanz des Elementtyp enthalten sein können. Definitionen der Modellinhalte können gehören:

  • Die Namen erlaubt oder verboten Elementtypen (zB Element UL enthält Instanzen des Elementtyps der LI und das Element Typs P enthalten kann nicht andere Elemente P ).
  • DTD - Kombinationen (zB das Element LABEL umfassen Kombinationen von Kopien Einstellungen "% inline;").
  • Der Text des Dokuments (Angabe der SGML-design "#PCDATA"). Der Text kann umfassen Zeichenreferenzen . Denken Sie daran, dass sie beginnen mit & und enden mit einem Semikolon (zB "Herg & eacute; s Abenteuer von Tim und Struppi" enthält einen Verweis auf eine Kombination von Zeichen "mit Akzent e" das Zeichen angezeigt werden).

Element-Content-Modell wird mit folgender Syntax angegeben:

(...)
Teilt Gruppe.
A | B
Tritt A oder B, aber nicht beide.
A, B
Dort haben A und B in dieser Reihenfolge.
A & B
A und B auftreten, in beliebiger Reihenfolge.
A?
A tritt auf Null oder eine Zeit.
A *
A auftritt, null oder mehrere Male.
A +
A tritt ein oder mehrere Male.

Hier sind einige Beispiele für die HTML-DTD:

  <! ELEMENT UL - - (LI) +>

Element UL müssen ein oder mehrere Elemente enthalten , die LI .

  <! ELEMENT DL - - (DT | DD)! +>

Element DL sollte ein oder mehrere Elemente enthalten , DT oder DD in beliebiger Reihenfolge.

  <! ELEMENT OPTION - O (#PCDATA)>

Element OPTION kann nur Text und Einrichtungen enthalten, wie zum Beispiel die & amp; - Es ist von der Art des SGML #PCDATA Daten bestimmt.

Einige HTML-Elementtypen verwenden, um eine zusätzliche SGML Feature Elemente von Content-Modell auszuschließen. Ausschließen von Elementen Bindestrich vorangestellt. Explizite Ausschlüsse haben Vorrang vor den gültigen Elemente.

In diesem Beispiel ist die - Mittel (A) , dass das Element A nicht in dem anderen Element sein kann , A (das heißt, Links nicht verschachtelt werden können).

  <! ELEMENT A - - (% inline;)! * - (A)>

Denken Sie daran , dass die Art des Elements A Teil der DTD Parameter - Kombinationen ist "% inline;" aber ausdrücklich ausgeschlossen den Ausdruck - (A).

Auch die folgende Elementdeklaration des Typs FORM verbietet verschachtelte Formen:

  <! ELEMENT FORM - - (% Block; | SCRIPT) + - (FORM)>

3.3.4 Anzeigen Attribute

Ad Attribute , die ein Element haben beginnt mit dem Schlüsselwort <! ATTLIST. Dies wird durch die Elementnamen mit einem Fragezeichen, eine Liste von Attributdefinitionen und einem Schluss> Symbol gefolgt. Jedes Attribut Definition - ein Dreibettzimmer, die bestimmt:

  • Der Attributname.
  • Geben Sie den Attributwert oder einen expliziten Satz gültiger Werte. Werte definiert mit explizit die DTD, unempfindlich. Erfahren Sie mehr über die Arten von Attributwerten finden. Abschnitt die grundlegenden Datentypen der HTML .
  • Ist das Standardattribut implizite (Stichwort "#IMPLIED"), ist , dass, wird der Standardwert durch den User - Agent (in einigen Fällen mit der Vererbung von übergeordneten Elemente) gesetzt; immer erforderlich (Stichwort "#REQUIRED"); oder einen festen vorgegebenen Wert (Stichwort "#FIXED"). Einige Attributdefinitionen explizit einen Standardwert des Attributs angeben.

In diesem Beispiel wird das Attribut Name angegeben für das Element der MAP . Attribut an für dieses Element ist obligatorisch.

 <! ATTLIST MAP
  Name CDATA #IMPLIED
  >

Geben Sie die Werte, die erlaubt sind für dieses Attribut als CDATA, SGML-Datentyp angegeben. Ein CDATA - dies ist der Text, enthalten Zeichenreferenzen .

Weitere Informationen zu Datentypen "CDATA", "Name", "ID" und andere. Cm. Abschnitt von Datentypen der HTML .

Die folgenden Beispiele veranschaulichen mehrere Attributdefinitionen:

 rowspan NUMBER 1 - Anzahl der Zeilen, die von einer Zelle bedeckt -
 http-equiv Name #IMPLIED - HTTP-Response-Header-Name -
 id ID #IMPLIED - eindeutige ID innerhalb eines Dokuments - 
 valign (oben | Mitte | bottom | baseline) #IMPLIED

Rowspan - Attribut auf den gewünschten Wert des Typs NUMBER. Der Standardwert ist explizit angegeben - "1". Für die optionale http-equiv Attributwerte notwendig Typ Name. Für eine optionale ID sind Attributwerte erforderlich wie ID. Das optionale valign - Attribut wird auf die Werte des Satzes beschränkt {oben, Mitte, unten, Baseline }.

Kombinationen DTD die Attributdefinitionen  

Attributdefinitionen auch Verweise auf den Kombinationsparameter enthalten kann.

In diesem Beispiel sehen wir , dass die Liste der Definitionen für das Element Attribute LINK mit einer Kombination von Parametern beginnt "% attrs;".

 <Die ELEMENT! Das LINK <ATTLIST die LINK - Über LEER Die - - Link unabhängig von dem Gerät>! % Attrs;
  - % Coreattrs , % i18n , % events - die charset % Charset;
  #IMPLIED - Die Codierung des verknüpften Dokuments - href % der URI;
  #IMPLIED - URI für verknüpfte Dokument - das hreflang % Language;
  #IMPLIED - Die Codesprache - des Typs % der Content;
  #IMPLIED - Die empfohlene Art von Inhalten - die rel % Linktypes;
  #IMPLIED - Link - Typen , vorwärts zu gehen - die rev % Linktypes;
  #IMPLIED - Verbindungstypen zurück zu gehen - Medien % MediaDesc;
  #IMPLIED - Für die Erzeugung dieses Gerät -> 

Start - Tag: erforderlich, End - Tag: verboten

Die Kombination der Parameter "% attrs;" wie folgt definiert:

  <Die ENTITY% attrs "! % Coreattrs; % der i18n; % events; ">

Die Kombination von "% coreattrs;" in der Bestimmung "% attrs;" Es entfaltet sich wie folgt dar:

  <! ENTITY% coreattrs
  " Id ID #IMPLIED - eindeutige ID innerhalb eines Dokuments -
  Klasse ein CDATA #IMPLIED - Liste der Klassen durch Leerzeichen getrennt -
  Stil % der Stylesheet;
  #IMPLIED - Die Art der Information -
  Titel % der Text;
  #IMPLIED - Der empfohlene Kopf / Verbreitung - "
  >

Die Kombination der Parameter "% attrs;" Es wird der Einfachheit halber festgelegt, da diese Attribute für die meisten Arten von HTML-Elemente definiert sind.

Ebenso definiert Kombination DTD die Parameter "% URI;" als Erweiterung der Zeichenfolge "CDATA".

  <! Die ENTITY% der URI " ein CDATA "
  -. Universal Resource Identifier, siehe [URI]

  ->

Wie in diesem Beispiel gezeigt, ist die Kombination der Parameter "% URI;" DTD bietet dem Leser mehr Informationen als den Datentyp für dieses Attribut erwartet. Ähnliche Einrichtungen sind für definierte "% Farbe;", "% Charset;", "% Länge;", "% Pixel;" usw.

Die logischen Attribute  

Einige Attribute spielen die Rolle von Booleschen Variablen (zB das Attribut ausgewählt für das Element der OPTION ). Ihre Anwesenheit in dem Start-Tag eines Elements beinhaltet, dass der Attributwert "wahr" ist. Ihr Fehlen bedeutet "eine Lüge."

Die logischen Attribute können nur einen Wert annehmen: den tatsächlichen Namen des Attributs (zB selected = "selected").

In diesem Beispiel ist das Attribut ausgewählt wird als boolean definiert.

 ausgewählt (ausgewählt) #IMPLIED - reduzierte Abstand zwischen den einzelnen Posten -

Um Attribut auf "true", wie er in dem Start-Tag des Elements:

  <OPTION selected = "selected">
 ... Inhalt ...

 <OPTION>

Die logische HTML - Attribute werden können Formular minimiert - im Element - Start - Tag ist nur ein Attributwert. Somit ausgewählt kann eingestellt werden durch Schreiben:

 <OPTION selected>

Statt:

 <OPTION selected = "selected">

Autoren sollten sich bewusst sein , dass viele Benutzer nur die minimierte Form logischer Attribute erkennen und nicht erkennen , die voll ist .