Einfügen eines Inline-Elements

(Auszug aus "DocBook-XML: Medienneutrales und plattformunabhängiges Publizieren" von Thomas Schraitle)

Angenommen, Sie schreiben eine umfangreiche Dokumentation zu Netzwerken und benötigen ein Element, um eine IP-Adresse auszuzeichnen. Ziel dieses Abschnittes ist es, das neue Element ipaddress innerhalb von para einzufügen. Um das Beispiel einfach zu halten, darf ipaddress nur Text enthalten.

DocBook 4 anpassen

Für DocBook 4 gehen Sie wie folgt vor:

Prozedur: Einfügen von ipaddress in para für DocBook 4

  1. Suchen Sie das passende Parameter-Entity für Inline-Element
    Bestimmen Sie zunächst, zu welchem Bereich Ihr neues Element passt. Dies ist häufig der schwierigste Teil, da Sie etwas in der DocBook-DTD stöbern müssen. Alle Inline-Elemente für para werden im Parameter-Entity %para.char.mix; (Datei dbpoolx.mod) angegeben. Dort finden Sie Verweise zu anderen Parameter-Entities, die gleichartige Elemente zusammenfassen, wie %xref.char.class;, %gen.char.class;, %tech.char.class;. Das einzufügende Element ipaddress passt gut in den technischen Bereich, daher wählen Sie das letzte.
  2. Anpassen von %tech.char.class;
    Erstellen Sie eine neue Datei, beispielsweise db-ipaddress.dtd. Um eine Anpassung für %tech.char.class; einzufügen, benötigen Sie %local.tech.char.class;:
<!ENTITY % local.tech.char.class "|ipaddress">
  1. Laden der DocBook-DTD
    Fügen Sie folgende Zeilen in Ihre Anpassungsdatei, 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;
  1. Definieren von ipaddress
    Definieren Sie Ihr neues Element ipaddress mit den folgenden Zeilen. Das neue Attribute enthält die Standardattribute, definiert in %common.attrib;:
<!ELEMENT ipaddress (#PCDATA)>
<!ATTLIST ipaddress %common.attrib;>
  1. 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 ipaddress in para für DocBook 5

  1. Suchen Sie das passende Definitionsmuster
    Das Suchen eines geeigneten Definitionsmusters ist der schwierigste Teil der Anpassung. Überprüfen Sie, zu welchen der vielen db.*.inlines-Muster Ihr Element am besten passt (vgl. Tabelle Namenskonventionen für DocBook 5). Je nach Intention kann es mehrere Möglichkeiten geben, beispielsweise db.technical.inlines, db.extension.inlines oder andere. Für dieses Beispiel wird das Definitionsmuster db.technial.inlines angenommen.
  2. 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.technical.inlines" combine="choice"> 
    <ref name="db.ipaddress"/> 
  </define> 
  <!-- Definieren des ipaddress Elements: --> 
</grammar>
default namespace db = "http://docbook.org/ns/docbook" 

include "docbook.rnc" 

db.technical.inlines |= db.ipaddress 

# Definieren des ipaddress Elements:
  1. Definieren von ipaddress
    Fügen Sie als letzten Schritt Ihr neues Element nach dem vorigen Kommentar ein. Hierbei ist es empfehlenswert, die selbe Benennung und Vorgehensweise zu verwenden wie das DocBook 5-Schema. Dadurch ermöglichen Sie, darauf aufbauende Anpassungen entsprechende Änderungen vorzunehmen:
<define name="db.ipaddress.role.attribute"> 
    <attribute name="role"/> 
</define> 
<define name="db.ipaddress.attlist"> 
    <interleave> 
        <optional> 
            <ref name="db.ipaddress.role.attribute"/> 
        </optional> 
        <ref name="db.common.attributes"/> 
        <ref name="db.common.linking.attributes"/> 
    </interleave> 
</define> 
<define name="db.ipaddress"> 
    <element name="ipaddress"> 
        <ref name="db.ipaddress.attlist"> 
            <a:documentation>An IP adress</a:documentation> 
        </ref> 
        <text/> 
    </element> 
</define>
db.ipaddress.role.attribute = attribute role { text } 
db.ipaddress.attlist = 
   db.ipaddress.role.attribute? 
 & db.common.attributes 
 & db.common.linking.attributes

db.ipaddress = 
   element ipaddress { 
     ## An IP adress 
     db.ipaddress.attlist, 
     text 
  } 
  1. Verwenden der Anpassungsdatei
    Verwenden Sie die Anpassungsdatei an Stelle der Originaldatei von DocBook (vgl. Validieren mit einer DocBook 5-Anpassungsdatei).

  

<< zurück vor >>
Tipp der data2type-Redaktion:
Zum Thema DocBook bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

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