Bedingte Abschnitte sind Teile der externen Teilmenge der Dokumenttyp-Deklaration, die in Abhängigkeit von einem Schlüsselwort in die logische Struktur der DTD eingebunden oder von ihr ausgeschlossen sind.
Bedingte Abschnitte | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
So wie die internen und externen Teilmengen der DTD darf auch ein bedingter Abschnitt eine oder mehrere vollständige Deklarationen, Kommentare, Processing Instructions oder verschachtelte bedingte Abschnitte, vermischt mit Leerraum, enthalten.
Wenn das Schlüsselwort des bedingten Abschnitts INCLUDE heißt, dann wird der Inhalt des bedingten Abschnitts als Teil der DTD angesehen. Wenn das Schlüsselwort des bedingten Abschnitts IGNORE heißt, dann ist der Inhalt des bedingten Abschnitts kein logischer Teil der DTD. Beachten Sie, dass selbst der Inhalt von ignorierten bedingten Abschnitten für eine zuverlässige Analyse gelesen werden muss, um verschachtelte bedingte Abschnitte zu erkennen und um sicherzustellen, dass das Ende des äußeren (ignorierten) bedingten Abschnitts korrekt erkannt wird. Wenn ein bedingter Abschnitt mit dem Schlüsselwort INCLUDE innerhalb eines größeren bedingten Abschnitts mit dem Schlüsselwort IGNORE vorkommt, dann werden sowohl der innere als auch der äußere ignoriert.
Wenn das Schlüsselwort des bedingten Abschnitts ein Parameter-Entity ist, dann muss das Entity durch seinen Inhalt ersetzt werden, bevor der Prozessor entscheiden kann, ob er den bedingten Abschnitt ignoriert oder einbindet.
Ein Beispiel:
<!ENTITY % entwurf 'INCLUDE' > <!ENTITY % fertig 'IGNORE' > <![%entwurf;[ <!ELEMENT buch (kommentare*, titel, rumpf, anhaenge?)> ]]> <![%fertig;[ <!ELEMENT buch (titel, rumpf, anhaenge?)> ]]>