Einfügen eines Block-Elements
(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)
Das Ziel dieses Abschnittes ist es, ein (Block-)Element einzufügen, mit dem Sie Übungsaufgaben auszeichnen. Hierfür wird der Name exercise gewählt mit folgendem Inhaltsmodell:
exercise ::= title, question, answer
Dadurch enthält jede Übungsaufgabe einen Titel (title) mit Frage (question) und einer dazugehörigen Antwort (answer). Glücklicherweise existieren bereits alle drei Elemente in DocBook, sodass Sie nur auf deren Definition verweisen brauchen.
DocBook 4 anpassen
Für DocBook 4 gehen Sie wie folgt vor:
Prozedur: Einfügen von exercise als Block-Element für DocBook 4
- Suchen Sie das passende Parameter-Entity für Block-Elemente
Bestimmen Sie zunächst, zu welchem Bereich Ihr neues Element passt. Dies ist der schwierigste Teil. Ihr Element exercise passt gut zu Gleichungen, Beispielen, Abbildungen usw. Diese sind alle im Parameter-Entity %formal.class; (Datei dbpoolx.mod) gruppiert. Entsprechende Anpassungen werden in %local.formal.class; vorgenommen. Orientieren Sie sich daher am Aufbau dieser Elemente aus dieser Klasse. - Anpassen von %local.formal.class;
Erstellen Sie eine neue Datei und fügen Sie Ihr Element exercise zum Parameter-Entity %local.formal.class; hinzu:
<!ENTITY % local.formal.class "|exercise">
- Laden der DocBook-DTD
Fügen Sie folgenden Zeilen in Ihre Anpassungsdatei ein, um die DocBook-DTD zu laden:
<!ENTITY % DocBookDTD PUBLIC
"-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.docbook.org/xml/4.5/docbookx.dtd">
%DocBookDTD;
- Definieren von exercise
Fügen Sie im letzten Schritt Ihr neues Element nach den vorigen Zeilen ein. Verwenden Sie einen ähnlichen Aufbau wie beispielsweise example, um spätere Anpassungen an Ihrer Datei zu vereinfachen:
<!ENTITY % exercise.module "INCLUDE">
<![%exercise.module;[
<!ENTITY % local.exercise.attrib "">
<!ENTITY % exercise.role.attrib "%role.attrib;">
<!ENTITY % exercise.element "INCLUDE">
<![%exercise.element;[
<!ELEMENT exercise ((%formalobject.title.content;),
question, answer)>
<!--end of exercise.element-->]]>
<!ENTITY % exercise.attlist "INCLUDE">
<![%exercise.attlist;[
<!ATTLIST exercise
%common.attrib;
%label.attrib;
%exercise.role.attrib;
%local.exercise.attrib;>
<!--end of exercise.attlist-->]]>
<!--end of exercise.module-->]]>
Durch die Parameter-Entities %exercise.module;, %exercise.element; und %exercise.attlist; lässt sich Ihre komplette Zusammenstellung zu exercise, nur das Element oder nur die Attribute nachträglich ausblenden und damit anpassen. Der Titel wurde aus dem Parameter-Entity %formalobject.title.content; entnommen.
- Verwenden der Anpassungsdatei
Verwenden Sie die Anpassungsdatei an Stelle der Originaldatei von DocBook (vgl. Validieren mit einer DocBook 4-Anpassungsdatei).
DocBook 5 anpassen
Für DocBook 5 gehen Sie wie folgt vor:
Prozedur: Einfügen von exercise als Block-Element für DocBook 5
- Suchen des passenden Definitionsmusters
Das Suchen eines geeigneten Definitionsmusters ist der schwierigste Teil der Anpassung (vgl. Tabelle Namenskonventionen für DocBook 5). Überprüfen Sie, zu welchen der vielen db.*.blocks-Muster Ihr Element am besten passt. Je nach Intention kann es mehrere Möglichkeiten geben. Für exercise gibt es beispielsweise db.formal.blocks, db.para.blocks oder db.technical.blocks. Für dieses Beispiel wird das Muster db.formal.blocks angenommen. - Anlegen der Anpassungsdatei
Erzeugen Sie eine Anpassungsdatei mit folgendem Inhalt:
<grammar ns="http://docbook.org/ns/docbook" xmlns:db="http://docbook.org/ns/docbook" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
<include href="docbook.rng"/>
<define name="db.formal.blocks" combine="choice">
<ref name="db.exercise"/>
</define>
<!-- Definieren des exercise Elements: -->
</grammar>
default namespace db = "http://docbook.org/ns/docbook"
include "docbook.rnc"
db.formal.blocks |= db.exercise
# Definieren von exercis
- Definieren von exercise
Fügen Sie als letzten Schritt Ihr neues Element nach dem vorigen Kommentar ein.
<define name="db.exercise.role.attribute">
<attribute name="role"/>
</define>
<define name="db.exercise.attlist">
<interleave>
<optional>
<ref name="db.exercise.role.attribute"/>
</optional>
<ref name="db.common.attributes"/>
<ref name="db.common.linking.attributes"/>
</interleave>
</define>
<define name="db.exercise.info">
<ref name="db._info.title.onlyreq"/>
</define>
<define name="db.exercise">
<!-- Schematron-Regeln ausgeblendet -->
<element name="exercise">
<ref name="db.exercise.attlist">
<a:documentation>An exercise</a:documentation>
</ref>
<ref name="db.exercise.info"/>
<oneOrMore>
<ref name="db.para.blocks"/>
</oneOrMore>
<ref name="db.answer"/>
</element>
</define>
db.exercise.role.attribute = attribute role { text }
db.exercise.attlist =
db.exercise.role.attribute?
& db.common.attributes
& db.common.linking.attributes
db.exercise.info = db._info.title.onlyreq
db.exercise =
# Schematron-Regeln ausgeblendet
element exercise {
## An exercise
db.exercise.attlist,
db.exercise.info,
db.question,
db.answer
}
- Verwenden der Anpassungsdatei
Verwenden Sie die Anpassungsdatei an Stelle der Originaldatei von DocBook (vgl. Validieren mit einer DocBook 5-Anpassungsdatei).
<< zurück | vor >> |
Copyright © 2009 Millin Verlag
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Millin Verlag, Siebengebirgsring 36, 53797 Lohmar, info(at)millin.de