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) .