Elektronisches Publizieren mit DocBook-XML

Transcrição

Elektronisches Publizieren mit DocBook-XML
Elektronisches Publizieren mit DocBook-XML
Vortrag Workshop Digitale Medien und elektronisches Publizieren, LIT '03
Michael Weiser
2003-09-26
.
Einführung
Gliederung
•
Ziel: wiederverwendbare, elektronisch verarbeitbare Dokumente
•
wiederverwendbar - Inhalt, Aussehen, Formate
•
elektronisch verarbeitbar - Strukturbeschreibung, Kompatibilität, Aggregation
•
propagierte Methode: DocBook in Kombination mit XML
•
kurze Einführung in DocBook
•
Vorstellung der Basistechnologien XML, Transformation und Formatierung
•
Veranschaulichung anhand kleiner Beispiele
•
Beleuchten der Möglichkeiten und Diskussion
DocBook
•
Satz von Beschreibungselementen für Dokumentenstrukturen
•
standardisiert und betreut durch OASIS (Organization for the Advancement
of Structured Information Standards) [OASIS]
•
sprach-/formatunabhängig
•
kontinuierlich entwickelt seit 1991, aktuell Version 4.2, ausgereift
•
verfügbar als Dokumenttypdefinitionen für SGML und XML
•
ursprünglich entwickelt als Datenaustauschformat für technische Dokumentationen
•
vielfältige Nutzungsmöglichkeiten (Bücher, Artikel, Websites, FAQs,
Präsentationen, Programmdokumentationen, ...)
•
eingesetzt bei zahllosen Firmen und Organisationen (TLDP, Softwarehäuser, Distributoren, ...)
XML
•
XML = eXtensible Markup Language
•
Markup - Strukturbeschreibung
•
extensible - freie Wahl der Tags, da keine Bedeutung zugeordnet
•
logische / physische Struktur (tags beschreiben entities - !  )
•
Trennung von Inhalt und Präsentation
•
rasante Entwicklung (XInclude, XPath, XML Schema, XML Query, XLink,
XPointer)
•
große Anzahl Applikationen (Editoren, Konverter, Rechtschreibprüfer, ...)
Beispiel DocBook-XML
<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book lang="de">
<bookinfo>
<title>Beispieldokument</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
</author>
</bookinfo>
<chapter>
<title>Kapitel</title>
<section>
<title>Abschnitt</title>
<para>Dieser <firstterm>Absatz</firstterm> demonstiert einige
einfache DocBook-Tags wie <sgmltag>sgmltag</sgmltag> und
<emphasis>emphasis</emphasis>.</para>
</section>
</chapter>
</book>
.
Darstellung
Einführung
•
Darstellung = Rendering
•
Tag-Namen sagen in XML nichts über deren Bedeutung aus
•
Belegung der Tags mit Formatierungsinformationen nötig, um sie
darstellen zu können
Implizite Interpretation
•
Annahme von Bedeutungen in Anzeigeprogramm (renderer)
•
klassisch: HTML, LaTeX, ...
•
vorstellbar: DocBook-Viewer
•
Nachteile:
•
•
Formatierungsintelligenz steckt in Renderer
•
Ausrichtung auf Ausgabemedium (Latex - Druck, HTML - graphische
Anzeige)
•
hart kodiert - unflexibel
wird nur mit gutem Grund angewandt, z.B. SVG, MathML
CSS
•
CSS in XML möglich, analog zu HTML
•
generischer Mechanismus zur Verknüpfung von Tags mit Formatierungsinformationen
•
nur Formatierungsparameter, keine Bedeutung
•
direkt im Anzeigeprogramm (user agent), insbesondere graphische
(visual user agent)
•
mit CSS2 auch andere Medien (Audio, Braille, Druck, ...)
CSS: Pro/Contra
•
•
Vorteile:
•
generischer Mechanismus
•
extrem einfach zu handhaben, intuitiv verständlich
•
etablierte Technik, Know-How vorhanden
•
Inhalt und Präsentation sauber getrennt
Nachteile:
•
starre Dokumentstruktur, Layout daran gebunden, Redundanzen
•
Browser muß XML+CSS unterstützen
•
kein Vorteil gegenüber HTML+CSS
Indirektes Rendern
•
Idee: Überführen von XML in bereits existierende Darstellungsformate
•
als Formatieren bezeichnet
•
Vorteile:
•
•
Weiterverwendbarkeit existierender Programme
•
Möglichkeiten der Ausgabeformate nutzbar
•
Anreicherung
Nachteile:
•
für jeden Dokumenttyp neu zu implementieren
•
deswegen Standardisierung der DTDs wichtig - DocBook
.
Transformieren
Einführung
•
mehr und mehr XML-basierte Dateiformate mit passendem Renderer (SVG,
MathML) oder Formatter (DocBook)
•
HTML fast XML-konform (<br/> vs. <br>)
•
oft ausreichend, diese ineinander transformieren zu können
•
deswegen Zerlegung der Formatierung in zwei Schritte
•
1.
Transformation von XML-Dokumenten ineinander
2.
tatsächliche Formatierung in Ausgabeformat oder Rendering
Transformation richtiger Ort zu Beeinflussung der Dokumentstruktur /
Anreicherung
XSLT
•
XSLT = eXtensible Stylesheet Language Transformations
•
eingeführt als Teil der Formatierung mittels XSL
•
templatebasierte Sprache zur Beschreibung von Transformationen beliebiger XML-Dokumente in neue XML-Dokumente
•
zusätzliche Ausgabeformate HTML und Text als Brücke zu anderen
Markupsprachen
XSLT: Werkzeuge
•
•
XSLT-Prozessoren:
•
libxml/libxslt xsltproc [libxml]
•
SAXON [SAXON]
•
Xalan/Xerces [apache-xml], Standard-XML-Parser/-XSLT-Prozessor in
J2SDK-1.4+
XSL Stylesheetpakete für DocBook:
•
DocBook XSL Stylesheets für HTML, XHTML und XSL:fo [DBOR]
•
DB2Latex für Latex Quelltext [DB2Latex]
XSLT: Beispiel XML
<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book lang="de">
<bookinfo>
<title>Beispieldokument</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
</author>
</bookinfo>
<chapter>
<title>Kapitel</title>
<section>
<title>Abschnitt</title>
<para>Dieser <firstterm>Absatz</firstterm> demonstiert einige
einfache DocBook-Tags wie <sgmltag>sgmltag</sgmltag> und
<emphasis>emphasis</emphasis>.</para>
</section>
</chapter>
</book>
XSLT: HTML-Ausgabe
$ java -jar saxon7.jar dbxex.xml \
> $DBXML/html/docbook.xsl >dbxex.html
XSLT: Textausgabe
$ xsltproc $DB2L/xsl/db2latex.xsl dbxex.xml >dbxex.tex
$ latex dbxex.tex
$ xdvi dbxex.dvi
XSLT: Pro/Contra
•
•
Vorteile:
•
generischer Mechanismus zur Transformation der ganzen Dokumentstruktur
•
wesentlich mächtiger als Formatierungswerkzeuge wie CSS
•
Aufbereitung desselben Inhalts auf verschiedenste Weise (Beispiel:
diese
Präsentation
Normal
[../default/index.html]
Frames
[../frames/frames.html] Tabellen [../html/foil16.html])
Nachteile:
•
zusätzliche Bearbeitungsschritte notwendig - XSLT in Browser?
•
hohe Komplexität in Entwicklung (Templates, XPath)
.
Formatieren
XSL
•
XSL = eXtensible Stylesheet Language
•
zweiteilig:
•
•
•
Sprache zur Formulierung von Stylesheets (XSLT)
•
Katalog von Formatierungsobjekten (formatting objects)
zweistufig:
•
XSL processor erzeugt durch Anwendung des Stylesheets eine Repräsentation als formatting objects
•
XSL formatter interpretiert fo's im Rahmen seiner Möglichkeiten
insbesondere Ausrichtung auf Druck und seitenorientierte Medien
XSL: Werkzeuge
•
•
frei
•
fop [apache-xml]
•
xmltex/PassiveTeX [pasvtex]
kommerziell
•
XEP [XEP]
•
viele mehr [W3XSL]
XSL: Beispiel XML
<?xml version='1.0'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book lang="de">
<bookinfo>
<title>Beispieldokument</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
</author>
</bookinfo>
<chapter>
<title>Kapitel</title>
<section>
<title>Abschnitt</title>
<para>Dieser <firstterm>Absatz</firstterm> demonstiert einige
einfache DocBook-Tags wie <sgmltag>sgmltag</sgmltag> und
<emphasis>emphasis</emphasis>.</para>
</section>
</chapter>
</book>
XSL: Transformations-Output
$ java org.apache.xalan.xslt.Process -in dbxex.xml \
> -xsl $DB/fo/docbook.xsl | tidy -xml -iq >dbxex.fo
$ head -16 xslex.fo
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
font-family="serif" font-size="10pt" text-align="justify"
line-height="normal"
font-selection-strategy="character-by-character" language="en">
<fo:layout-master-set>
<fo:simple-page-master margin-right="1in" margin-left="1in"
margin-bottom="0.5in" margin-top="0.5in" page-height="11in"
page-width="8.5in" master-name="blank">
<fo:region-body margin-top="0.5in" margin-bottom="0.5in"
display-align="center" region-name="blank-body" />
<fo:region-before display-align="before" extent="0.4in"
region-name="xsl-region-before-blank" />
<fo:region-after display-align="after" extent="0.4in"
region-name="xsl-region-after-blank" />
</fo:simple-page-master>
XSL: Formatierungs-Output
$ fop.sh -fo dbxex.fo -pdf dbxex.pdf
[INFO] FOP 0.20.4
[INFO] building formatting object tree
[INFO] [1]
$ acroread dbxex.pdf &
XSL: Pro/Contra
•
•
Vorteile:
•
grundlegender, durchdachter Standard
•
Abbildung auch kompliziertester Formatierungen möglich
Nachteile:
•
Mangel an (funktionierenden) freien Werkzeugen
•
HTML bereits durch XSLT vollständig abgedeckt
•
extrem hohe Komplexität in der Entwicklung
.
Zusammenfassung
Überblick
Fragen?
Michael Weiser <[email protected]>
http://fachschaft.imn.htwk-leipzig.de/~mweiser/
Referenzen
Resourcen zu XML, XSLT, XSL und DocBook
XML
World Wide Web Consortium (W3C). Extensible Markup Language (XML).
http://www.w3.org/XML/ (besucht 15.9.2003) .
CSS
World Wide Web Consortium (W3C). CSS2 Specification - A brief CSS2 tutorial
for XML. 12. Mai 1998. http://www.w3.org/TR/REC-CSS2/intro.html#q2
(besucht 15.9.2003) .
xml.com. On Display: XML Web Pages with Mozilla. 29. März 2000.
tp://www.xml.com/pub/a/2000/03/29/tutorial/ (besucht 15.9.2003) .
ht-
XSL/XSLT
[W3XSL] World Wide Web Consortium (W3C). The Extensible Stylesheet
Language (XSL). http://www.w3.org/Style/XSL/ (besucht 15.9.2003) .
[apache-xml] Apache Software Foundation. Apache XML Project - XML-, XSLund Publishing-Tools. http://xml.apache.org/ (besucht 15.9.2003) .
[libxml] Daniel Veillard. The XML C library for Gnome. libxml/libxslt. http://www.xmlsoft.org/ (besucht 15.9.2003) .
[SAXON] Michael H. Kay. SAXON. The XSLT and XQuery Processor. 18. August
2003. http://saxon.sourceforge.net/ (besucht 15.9.2003) .
[pasvtex] Sebastian Rahtz. PassiveTeX. 6. März 2003.
c.org.uk/Software/passivetex/ (besucht 16.9.2003) .
http://www.tei-
[XEP] RenderX. XEP XSL Rendering Engine. 2003. http://xep.xattic.com/
(besucht 15.9.2003) .
DocBook
[DBOR] Norman Walsh. DocBook Open Repository. http://docbook.sourceforge.net/ (besucht 15.9.2003) .
[DB2Latex] Ramon Casellas. DB2Latex. 1. Mai 2003. http://db2latex.sourceforge.net/ (besucht 15.9.2003) .
[OASIS] Organization for the Advancement of Structured Information Standards (OASIS). DocBook Technical Committee.
http://www.oasisopen.org/committees/docbook/ (besucht 15.9.2003) .
Norman Walsh and Leonard Muellner. DocBook: The Definitive Guide. Oktober
1999 / 17. Juni 2002. 1st Edition / Version 2.0.8. 1-56592-580-7. http://docbook.org/tdg/en/html/docbook.html (besucht 15.9.2003) .
DocBookDocumentation.
DocBook
Dokumentationen.
http://docbook.org/wiki/moin.cgi/DocBookDocumentation (besucht 15.9.2003) .