Obsah
rozsáhlý projekt - poskytnout jednotný komplexní značkovací jazyk pro „vešekerou“ programátorskou dokumentaci
nyní používáno k celé řadě jiných účelů - psaní článků (article), knih (book), jednotlivých kapitol (chapter), sekcí (section, sectX)
autorem je Norman Walsh (Sun Microsystems Inc.)
podrobnosti, DTD, help, software, styly k dispozici viz docbook.org
pravděpodobně nejrozsáhlejší existující značkování pro logický popis dokumentu
k DB existuje TDG (DocBook: The Definitive Guide) - také jako Windows Help
k vizualizaci (a převodu do tiskových formátů) z napsaného DocBookového dokumentu lze použít XSL styly
XSL styly jsou na http://docbook.sf.net
v rámci toho je i přizpůsobení DocBook Slides
styly formátují do HTML, XHTML, XSL:FO, ...
zpracování lze parametrizovat bez přepisování stylů
XML data jsou sice částečně „lidsky čitelná“, ale pro zpracování člověkem vyžadují transformaci do kvalitně zobrazitelné podoby - formátování.
Formátování je proces transformace primárních dat do lidsky čitelné „prezentovatelné“ podoby, určené k zobrazení, hlasové interpretaci, atd.
Rozlišujeme formátování na úrovni:
maximum sémantiky v datech je zachováno, je přidána formátovací sémantika - např. struktura publikace, členení na kapitoly, sekce; datový obsah je vyfiltrován pro účely zobrazení (např. metadata jsou redukována). Příklad formátu - DocBook.
původní sémantiku již nelze rekonstruovat, je přidána další formátovací sémantika - např. členění na nadpisy, tabulky, styly, přibývají instrukce pro volbu písma, barvu, odsazení, mezery mezi odstavci... Formátovaný dokument je stále relativně univerzálně zobrazitelný a přenositelný. Příklad formátu - HTML.
formátovaný dokument je v podstatě přesným popisem, jak vytisknout, zobrazit, hlasově přečíst dokument. Příklady formátu - PostScript, PDF.
Dokument na vyšších formátovacích úrovních (konceptuální) lze dále transformovat, zpracovávat...
Část sémantiky původních dat je však již ztracena a naopak formátovací sémantika je doplněna.
Viz např. formát DocBook - dokument v DocBooku už je článek, kniha, přednáška ve formě slidů... což původní zdrojová data nebyla.
Dokument formátovaný do formátů nižších úrovní (logický, fyzický) není obvykle určen k dalšímu zpracování vyjma přípravy pro tisk, zobrazení.
Viz např. HTML, PDF... (s jistými výjimkami)
Z primárních dat extrahujeme data potřebná. Vhodné nástroje:
poměrně nekomfortní, ale za běhu efektivní zpracování dat; pro pouhé filtrace elementů vyhoví; lze použít XMLFilter
DOM, dom4j a další reprezentace; náročnější na pamět i čas; dovoluje složitější manipulace
mocné, ale poněkud náročnější na zvládnutí
vhodné řešení, ale vyžaduje stroj na interpretaci
Příklad 1.1. Příklad XSLT extrakce
Ze všech programátorů v Devguru chceme zobrazit jen mladší 30 let:
<?xml version="1.0" encoding="Windows-1250"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:saxon="http://icl.com/saxon"
extension-element-prefixes="saxon">
<xsl:strip-space elements="*" />
<xsl:output method="xml" encoding="Windows-1250" indent="no" />
<xsl:template match="programmer[number(age) < 30]">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="programmer"/>
<xsl:template match="/">
<young_programmers>
<xsl:apply-templates/>
</young_programmers>
</xsl:template>
</xsl:stylesheet>
Příklad 1.2. XSLT transformace do DocBooku
O všech mladších programátorech z Devguru napiš souhrnnou zprávu (styl je zkrácen):
<xsl:output method="xml" encoding="Windows-1250" indent="no"
doctype-system="http://www.oasis-open.org/docbook/xml/simple/1.0/sdocbook.dtd"
doctype-public="-//OASIS//DTD Simplified DocBook XML V1.0//EN"/>
<xsl:template match="programmer">
<row>
<entry>
<xsl:value-of select="name"/>
</entry>
<entry>
<xsl:value-of select="age"/>
</entry>
</row>
</xsl:template>
<xsl:template match="/">
<article>
<title>Seznam pracovníků mladších 30 let</title>
<table>
<title>Tabulka pracovníků mladších 30 let</title>
<tgroup cols="2">
<tbody>
<row><entry>jméno</entry><entry>věk</entry></row>
<xsl:apply-templates/>
</tbody>
</tgroup>
</table>
</article>
</xsl:template>
...
Příklad 1.3. XSLT transformace do DocBooku
Zprávu o mladších programátorech formátuj do HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content= "text/html;charset=ISO-8859-1">
<title>Seznam pracovníků mladších 30 let</title>
<link rel="stylesheet" href="html.css" type="text/css">
<meta name="generator" content= "DocBook XSL Stylesheets V1.60.1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink= "#840084" alink="#0000FF">
<div class="article" lang="en">
<div class="titlepage">
<div><div>
<h2 class="title">
<a name="d0e1"></a>Seznam pracovníků mladších 30 let
</h2>
</div></div>
<hr>
</div>
<div class="table">
<a name="d0e4"></a>
<p class="title">
<b>Table 1. Tabulka pracovníků mladších 30 let</b>
</p>
<table summary="Tabulka pracovníků mladších 30 let" border="1">
<colgroup>
<col>
<col>
</colgroup>
<tbody>
<tr><td> jméno </td> <td> věk</td> </tr>
<tr> <td> Minnie Mouse</td> <td> 24 </td> </tr>
</tbody>
</table>
</div>
</div>
</body>
</html>
k transformaci pro tato média lze použít XSLT (do plaintextu, HTML, XHTML...), speciálních nástrojů (např. RTF FormattingKit, viz RTF FormattingKit web pro RTF)
pokud je formátování určeno k prohlížení na webu (prohlížečem), je možné pro specifikaci stylu použít konvenci (<?xml-stylesheet type="text/xsl" href="somestylesheet.xsl"?>)
totéž lze použít i pro CSS styly
pro XML je použitelná verze CSS2
k transformaci pro tato média lze použít XSLT (do plaintextu, HTML, XHTML...), speciálních nástrojů (např. RTF FormattingKit, viz RTF FormattingKit web pro RTF)
pokud je formátování určeno k prohlížení na webu (prohlížečem), je možné pro specifikaci stylu použít konvenci typu <?xml-stylesheet type="text/xsl" href="somestylesheet.xsl"?>.
totéž lze použít i pro styly CSS (pro XML je použitelná verze CSS2)
dobré informační zdroje k použití CSS pro XML:
Validace dokumentů s CSS styly:CSS Validátor na W3C: http://jigsaw.w3.org/css-validator/
obvyklý postup:
transformace XML -- XSL:FO pomocí XSLT
rendering XSL:FO do PDF/PS pomocí Apache FOP nebo jiného (komerčního) nástroje
nebo přes PassiveTex do TeXového zdroje a pak standardní TeXovou cestou (TeX -- DVI -- PS nebo TeX -- PDF s pomocí pdfTeXu)
jak může vypadat celý postup zpracování, ukazuje návod J. Pavloviče k modulu xslt2
pro mobilní telefony s WAP: v podstatě obdobné jako pro web, jazykem popisu WAP stránek je WML
použijí se typicky opět XSLT transformace
pro PDA: typicky nemají on-line spojení, připojují se "občas" přes stolní počítač zapojený do internetu
proto potřebují systém na stažení, kompresi a off-line prohlížení webových stránek
možným řešení je AvantGo.com: pro uživatele zdarma, pro poskytovatele obsahu je to komerční systém (omezené použití (málo uživatelů) zdarma)
AvantGo systém je rozdělen na serverovou část (na výše uvedené adrese) a klientskou část rozdělenou na desktop (menší část) a PDA počítač (větší část)
technicky je AvantGo schopno přizpůsobit a zobrazit "skoro normální HTML"
problémy jsou pochopitelně s interaktivními aplikacemi (formuláře) -- částečně lze řešit tzv. Form Managerem
bližší informace k technice tvorby webů pro AvantGo
VoiceXML je značkovací jazyk určený k popisu dialogu vedeného hlasovým rozhraním
Dave Raggett's Introduction to VoiceXML 2.0
...další informace spolu se systémem Elvira (vyvíjeným na FI) najdete na domovské stránce projektu
XSL:Formatting Objects (XSL:FO) je standard pro platformově neutrální, v XML zapsaný popis (tiskového) formátu publikací
dány standardem W3C - viz http://www.w3.org/Style/XSL/
k transformaci z XML do XSL:FO se typicky využívá XSLT (proto původně v jedné specifikaci)
dalším krokem bývá transformace XSL:FO do PDF/PS např. nástrojem Apache FOP.
obvykle kvalitnějšího výstupu dosáhneme použitím komerčního nástroje, který také podporuje širší škálu formátovacích objektů. Viz např. RenderX XEP .
dobrý úvodní článek What is XSL:FO (Ken Hollman, XML.COM)
kvalitní XSL FO Tutorial (firma RenderX)
Stylesheet Tutorial, Sample Files of Formatting Objects and Sample Stylesheets