copyright (c)2003-2005   useGroup
XSLT

66151@usegroup.de

Einführung in XML/XSLT

Einführung in Docbook

nach untenWas ist DocBook?

nach untenWarum der Name?

nach untenWas ist XML:FO

nach untenEin Testsystem

nach untenEin Beispiel-Buch

nach untenBilder in Docbook

nach untenZeilenumbruch (Breaks) erzwingen

nach untenLinks

nach untenKursiver Text

nach untenFußnoten

nach untenMetadaten über Artikel

nach untenExport als XHTML

nach untenExport als PDF

Was ist DocBook?

nach obenWas ist DocBook? 

Docbook ist ein SGML-Format, das für Veröffentlichungen bestimmt wurde. Es gibt jedoch ein XML-Format, DocBook/XML. Wie Sie aus dem Vorwort wissen sollten, ist XML eine Teilmenge von SGML, Docbook/XSL ist jedoch nicht notwendigerweise eine Teilmenge von Docbook (Sie können alles machen, was Sie mit Docbook/SGML auch können, nur machen Sie einige Dinge anders). Zur Verdeutlichung der Beziehung von SGML und XML hier ein Diagramm Mengendiagramm SGML und HTML.



Warum der Name?

nach obenWarum der Name? 

Der Name Docbook ist aus folgenden Gründen sinnvoll:

nicht sinnvoll:



Was ist XML:FO

nach obenWas ist XML:FO 

XML:Formatting Objects ist ein vom W3C abgesegnetes XML-Dateiformat, das für Print-Medien optimiert wurde. Anders als in den meisten anderen XML-Formaten, deren Tags sagen, was ein Element ist, und nicht wie es dargestellt werden soll, befassen sich die Tags von XML:FO ausschlie�ich damit, wie die Elemente auf Print-Medien darzustellen sind. XML:FO-Prozessoren wie der Apache FOP generieren daraus dann Druckvorstufen, der Apache FOP beherrscht z.B. auch PDF. Wir werden die XSLT-Transformationen von Docbook auf XML:FO benutzen, um ein PDF zu erstellen, und die von Docbook auf XHTML um eine XHTML-Seite zu erstellen.



Ein Testsystem

nach obenEin Testsystem 

Um anständig mit Docbook/XML arbeiten zu können empfehle ich Ihnen folgende Dateien:



Ein Beispiel-Buch

nach obenEin Beispiel-Buch 

Wählen Sie in Ihrem XML-Editor "neues Dokument" basierend auf der Docbook DTD (je nachdem wohin Sie sie entpackt haben). In XML-Spy bevorzuge ich die Textansicht .

<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE set SYSTEM ".\dtds\docbookx.dtd">
  <set>
    <book>
    <chapter>
      <title>Mein erstes Kapitel</title>
      <para>Hier ist ein Absatz</para>
      <sect1>
        <title>Ein Abschnitt im Kapitel</title>
        <para>Mindestens ein Absatz im Aschnitt macht ihn DTD-Gerecht.</para>
      </sect1>
      </chapter>
    </book>
  </set>
Quelle: Mark Galassi's DocBook/SGML-Tutorial



Bilder in Docbook

nach obenBilder in Docbook 

Eine Möglichkeit, Bilder einzubetten, besteht in der Kombination aus inlinemediaobject, imageobject und imagedata. Wie der Name schon sagt, wird das Bild dann inline, also ohne Umlauf oder Ausrichtung eingebaut.

  <inlinemediaobject>
    <imageobject>
      <imagedata fileref="dateiname.jpg" format="JPG"/>
    </imageobject>
  </inlinemediaobject>



Zeilenumbruch (Breaks) erzwingen

nach obenZeilenumbruch (Breaks) erzwingen 

Normalerweise wird man Zeilenumbrüche in Docbook durch Absätze (<para>...</para>) herbeiführen. Diese werden in HTML jedoch sinnhafterweise mit <p>...</p> übersetzt, einen einfachen Zeilenumbruch, sprich etwas, was die Ausgabe eines <br/> in der HTML-Ausgabe erzeugt, ist nur durch die Verwendung von Literallayout möglich. Um Literallayout anwenden zu können, müssen zunächst alle Absätze beendet werden. Das Literallayout ist dabei in etwa vergleichbar mit dem HTML-Preformatted-Tag <pre>...</pre>: Ein Zeilenumbruch in der Quelldatei führt zur Erzeugung eines Zeilenumbruchs in der Ausgabe.

  <para>
    Ein Absatz ohne Zeilenumbruch
  </para>
  <literallayout>
    Ein Absatz mit Zeilen-
    umbruch
  </literallayout>
  <para>
    Ein weiterer Absatz ohne Zeilenumbruch
  </para>



Links

nach obenLinks 

Links werden in DocBook mit ulink realisiert.

  <ulink url=”http://www.google.de”> Linktext </ulink>



Kursiver Text

nach obenKursiver Text 

Text können Sie kursiv darstellen, wenn Sie das emphasis-Tag mit der kursiven "role" verwenden.

  <emphasis role="italic">italic emphasized</emphasis>



Fußnoten

nach obenFußnoten 

Verwenden Sie footnote im Text um an der entsprechenden Stelle eine Fußnote einzufügen. Darin sollten Sie Text als Absatz (para) formatieren.

<footnote id="fnid1"><para>A footnote</para></footnote>



Metadaten über Artikel

nach obenMetadaten über Artikel 

Als per <set>-<book> als ganzes Buch auszuzeichnen können Sie auch den leichtgewichtigeren article verwenden: Artikel können (oder sollten) mit Metadaten ausgezeichnet werden, vom Titel über Datum und Autor bis hin zu Stichwörtern, die in einer subjectset-subject-subjectterm-Konstellation angegeben werden können.

	
<article>
<articleinfo>
  <title>XYY</title>
  <corpauthor>usegroup</corpauthor>
  <date>2005-04-04</date>
  <subjectset>
    <subject>
      <subjectterm>
        Others
      </subjectterm>
    </subject>
  </subjectset>
</articleinfo>

<para>
Ein Abschnitt
</para>
</article>



Export als XHTML

nach obenExport als XHTML 

Wenn Sie diese Datei möhten z.B. als XHTML ins Netz stellen möchten, müssen Sie zuerst einmal einfgen, dass das entsprechende XSL-Stylesheet verwendet werden soll.
Mit dem Befehl

saxon -o index.html docbook.xml html/docbook.xsl
erstellen Sie dann aus der Docbook.xml mithilfe den Style Sheets in html/docbook.xsl die Index.html. Anstelle html/docbook.xsl können Sie natrlich auch IhrenPfadZuDenStyleSheets/html/docbook.xsl angeben, nur sollten Sie bei diesem Pfadnamen gnädigerweise auf Abstände verzichtet haben.



Export als PDF

nach obenExport als PDF 

PDFs bekommen Sie aus einem Docbook, indem Sie zuerst eine Ausgabe in XML:FO erstellen:

saxon -o index.fo docbook.xml fo\docbook.xsl
Und an die PDF-Datei kommen Sie dann ganz einfach mit einem FO-Prozessor dran:
fop index.fo index.pdf
Interessanterweise bringt ebendiese Zeile bei meinen 1.50ern Style Sheets die Meldung
[Error]: The id "toc...d47e3" already exists in this document
Was sich aber umgehen lässt indem man eine der beiden "toc...d47e3"s in einen anderen Wert, z.B. "toc...d47e4" ändert. Dann ist auch die PDF-Datei größer als 15 Bytes und lässt sich lesen. Das scheint nebenbei ein Problem im FOP-Prozessor und nicht in der Transformation zu sein. Lars Trieloff (http://trieloff.net/docbook/distfiles/XML-Flatener/superfop.jar, danke für den Hinweis) bietet eine gepatchte FOP-Version.



copyright (c)2003-2005   useGroup