XML-Know How

Marked Sections

Eine Marked Section ist besonders gekennzeichneter und mit einem Schlüsselwort versehener Abschnitt der DTD, der je nach dem Schlüsselwort (INCLUDE oder IGNORE) verwendet oder ignoriert wird.

Ein solcher Abschnitt steht in folgenden Begrenzungszeichen: <![IGNORE/INCLUDE[ und ]]>:

Dieser DTD-Abschnitt würde verwendet:

<![INCLUDE [
(DTD-Abschnitt)
]]>

Der nachfolgende DTD-Abschnitt wird hingegen übergangen:

<![IGNORE[
(DTD-Abschnitt)
]]>

Wenn nun statt dem Wortlaut IGNORE oder INCLUDE eine Parameter Entity steht, kann die Marked Section »ferngesteuert« und so auch mehrere Marked Sections innerhalb einer DTD durch Änderung einer einzigen Entity gleichzeitig ein- oder ausgeschaltet werden:

<!ENTITY % schalter1 "IGNORE">
<![%schalter1;[

   (DTD-Abschnitt)
]]>
   (...)
<![%schalter1;[

   (weiterer DTD-Abschnitt)
]]>

Wieso sollte man aber Teile einer DTD ausschalten? Nehmen wir abermals ein Beispiel zu Hilfe: In einer DTD für ein Lexikon stünden in einer Marked Section Entity-Deklarationen, die auf Modul-Dateien in deutscher Version verweisen, und in einer anderen Marked Section dieselben Entity-Deklarationen mit Verweis auf andere Dateien, in denen die englische Textversion steht. Dann kann man zwischen deutscher und englischer Version hin- und herschalten, ohne an der DTD oder der XML-Instanz Änderungen vorzunehmen. Da Marked Sections zudem schachtelbar sind, werden sehr komplexe Szenarien möglich.