XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



XSL-FO / DITA

DITA

DITA

➪ Wie DocBook, ist auch DITA ein sehr leistungsfähiger Publishing-Standard; geboten werden Standardkonfigurationen für eclipse, tocjs, htmlhelp, javahelp, pdf, web, docbook. Im Unterschied zu DocBook konzentriert DITA sich auf die Erstellung und Auslieferung von "Topics".

Auf dieser Seite:

Stark vereinfacht gesagt, setzt DITA auf verteilte Quelldateien (topic, empfohlener Name: ".dita"), die durch map- oder bookmap-Dateien (".ditamap") zusammengeführt werden. Sämtliche hierfür benötigten Dateien sind XML-Dateien, deren Strukturen über DTD bzw. XML-Schema definiert werden.

DITA: <map>

<map> umfasst im Wesentlichen eine Anzahl von topic-Referenzen, die sich auf bestimmte Topic-Dateien beziehen.


<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
 "../dtd/technicalContent/dtd/map.dtd">
<map title="Titel">
  <topicref href="top1/tuwas.dita" type="concept">
    <topicref href="top1/tuwasanderes.dita" type="task"/>
  </topicref>
  <topicref href="top2/lassdas.dita" type="concept">
    <topicref href="top2/hatkeinenzweck.dita" type="concept"/>
  </topicref>
</map>

DITA: <bookmap>

Deutlich komplexer ist <bookmap>, eine Struktur, die beispielsweise so aufgebaut werden kann:


<!DOCTYPE bookmap PUBLIC "-//OASIS//DTD DITA BookMap//EN"
 "../dtd/bookmap/dtd/bookmap.dtd">
<bookmap id="XML_XSD_XSL_XQuery">
 <booktitle>
  <booklibrary>
   <ph>Wilfried Grupe</ph>
  </booklibrary>
  <mainbooktitle>XML-Technologien</mainbooktitle>
  <booktitlealt>XML-Grundlagen, Validierung, Auswertung</booktitlealt>
 </booktitle>
 <bookmeta>
  <authorinformation>
   <personinfo>
    <namedetails>
     <personname>
      <firstname>Wilfried</firstname>
      <lastname>Grupe</lastname>
     </personname>
    </namedetails>
   </personinfo>
   <organizationinfo>
    <namedetails>
     <organizationnamedetails>
      <organizationname>Wilfried Grupe</organizationname>
     </organizationnamedetails>
    </namedetails>
    <addressdetails>
     <thoroughfare>Klus 6</thoroughfare>
     <locality>
      <postalcode>37643</postalcode>
      <localityname>Negenborn</localityname>
     </locality>
     <country>Deutschland</country>
    </addressdetails>
    <contactnumbers>
     <contactnumber>Tel: 0151 750 360 61</contactnumber>
    </contactnumbers>
    <emailaddresses>
     <emailaddress>info10@wilfried-grupe.de</emailaddress>
    </emailaddresses>
    <urls>
     <url>www.wilfried-grupe.de</url>
    </urls>
   </organizationinfo>
  </authorinformation>
 </bookmeta>
 <frontmatter>
  <booklists>
   <toc/>
   <figurelist/>
   <tablelist/>
   <indexlist/>
  </booklists>
  <notices href="wg_xml/Anmerkungen.dita"/>
 </frontmatter>
 <chapter href="wg_xml/Validierung.dita">
  <topicref href="wg_xml/DTD.dita"/>
  <topicref href="wg_xml/XSD.dita">
   <topicref href="wg_xml/XSD2_.dita"/>
   <topicref href="wg_xml/XSD3_.dita">
    <topicref href="wg_xml/XSD3_1.dita"/>
   </topicref>
  </topicref>
 </chapter>
 <chapter href="wg_xml/CSV.dita">
  <topicref href="wg_xml/CSV_java.dita"/>
  <topicref href="wg_xml/CSV_validate_XSLT.dita"/>
 </chapter>
 <appendix href="wg_xml/appendix.dita"></appendix>
 <backmatter>
  <booklists>
   <figurelist/>
   <indexlist/>
   <toc/>
  </booklists>
 </backmatter>
</bookmap>

DITA <topic>

<topic>-Elemente definieren den Inhalt über eine Reihe klar definierter Childnodes. Der Aufbau ist beispielsweise:


<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" 
   "../dtd/technicalContent/dtd/topic.dtd">
<topic id="h0" xml:lang="de-de">
 <title>XPath: concat</title>
 <shortdesc>Die XPath-Funktion "concat" verkettet 
            mehrere Informationen zu einem String.</shortdesc>
 <prolog>
  <metadata>
   <keywords>
    <keyword>XSL</keyword>
    <keyword>XPath</keyword>
    <keyword>concat</keyword>
   </keywords>
  </metadata>
 </prolog>
 <body>
  <section>
   <title>XPath: concat</title>
   <p>Erwartet werden hierbei mindestens zwei einzelne String-Parameter. </p>
   <codeblock>
    &lt;xsl:value-of 
      select="//Ort[1]/Mensch[1]/name"/&gt;      
   </codeblock>
   <p>
    <image href="file:///C:/wg/concat.jpg"/>
   </p>
  </section>
 </body>
</topic>

Die Elemente <shortdesc> (Alternative: <abstract> für komplexere Darstellung), <prolog> oder <body> sind optional. Optionale weitere Elemente sind beispielsweise <related-links> mit einem oder mehreren Childnodes <link> und deren Childnode <linktext>.

<simpletable>

Ebenfalls ein möglicher Childnode von <section> ist <simpletable>, die eine einfache Tabellenstruktur vorgibt.


<simpletable>
 <sthead>
  <stentry>Name</stentry>
  <stentry>Beschreibung</stentry>
 </sthead>
 <strow>
  <stentry>//element[1] </stentry>
  <stentry>Das erste Element mit dem Namen element.</stentry>
 </strow>
</simpletable>

Aufzählungen mit <ul>

Mit <ul> und <li> (ebenfalls Childnodes von <section>) lassen sich Aufzählungen darstellen


<ul>
 <li>Daten-Consumer </li>
 <li>Datenlieferant </li>
</ul>

... oder, verbunden mit einer Nummerierung


<ul>
 <li>Daten-Consumer </li>
 <li>Datenlieferant sendet via
  <ol>
   <li>FTP</li>
   <li>Mail</li>
  </ol>
 </li>
</ul>

Sonderformatierungen

HTML vergleichbar, bietet auch DITA eine Reihe von Standardformatierungen an, hier nur eine kleine Auswahl:

DITA <task>


<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
 "../../dtd/technicalContent/dtd/task.dtd">
<task id="tuwas" xml:lang="de-de">
 <title>To-Do-Liste</title>
 <shortdesc>Unglaublich wichtig!!</shortdesc>
 <taskbody>
  <context>
   <p>Es gibt noch was zu tun.</p>
  </context>
  <steps>
   <stepsection>XML konvertieren</stepsection>
   <step>
    <cmd>Validiere das XML-Input-Dokument gegen ein XML-Schema.</cmd>
   </step>
   <step>
    <cmd>Starte den Konvertierungsprozess mit ANT.</cmd>
   </step>
   <step>
    <cmd>Prüfe das Resultat mit XML-Schema.</cmd>
   </step>
   <step>
    <cmd>Starte eine Detailkontrolle mit Schematron.</cmd>
   </step>
   <step>
    <cmd>Wenn alles ok ist: übernimm das XSL in das Live-System.</cmd>
   </step>
  </steps>
 </taskbody>
</task>

Der DITA-Konvertierungsprozess

Aufgerufen wird die DITA-Transformation durch ein ANT-Script, das nacheinander die ditamap-Datei, das Zielverzeichnis, das Zielformat sowie das Start-OK abfragt:


C:\DITA-OT1.8.5>ant -f build_demo.xml
Buildfile: C:\DITA-OT1.8.5\build_demo.xml
prompt.init:
prompt:
 [echo] Please enter the filename for the DITA map that you
 [echo] want to build including the directory path (if any).
 [echo] The filename must have the .ditamap extension.
 [echo] Note that relative paths that climb (..) are not supported yet.
 [echo] To build the sample, press return without entering anything.
 [input] The DITA map filename:  [C:\DITA-OT1.8.5\samples\hierarchy.ditamap]
mychapter.ditamap
 [echo]
 [echo] Please enter the name of the output directory or press return
 [echo] to accept the default.
 [input] The output directory (out):  [out]
output20180923
 [echo]
 [echo] Please enter the type of output to generate.
 [echo] Options include: eclipse, tocjs, htmlhelp, javahelp, pdf, or web
 [echo] Use lowercase letters.
 [echo]
 [input] The output type:  (eclipse, tocjs, htmlhelp, javahelp, pdf, [web], docbook)
pdf
 [echo]
 [echo] Ready to build wg_xmlseminar_chapter.ditamap
 [echo] for pdf in output20180923
 [echo]
 [input] Continue?  (Y, [y], N, n)
y

Bei Aufruf beispielsweise von htmlhelp startet das ANT-Script, das im ersten Schritt ein temp - Verzeichnis generiert und anschließend eine nicht unbeträchtliche Konvertierungsstrecke in Gang setzt, unter Aufruf folgender XSL-Stylesheets:

bevor zum Schluß eine generierte .chm-Datei kompiliert wird. Der Prozess startet nur unter der Voraussetzung, dass die jeweils betreffenden DTD-Dateien vorhanden und die XML-Dateien valide sind.

DITA - XSDs

Ziemlich komplex und ohne einen leistungsfähigen Editor mühsam nachvollziehbar sind die DITA-DTD- bzw. XML-Schema-Dateien, die intensiv über gegenseitige includes arbeiten.Als Beispiel für zahlreiche weitere XML-Schema-Definitionen, die andere XSDs einbinden, möchte ich hier nur bookmap.xsd betrachten:

DITA-OT1.8.5/schema/bookmap/xsd/bookmap.xsd

Ebenso verteilt auf zahlreiche Einzeldateien sind die zahlreichen XSL-Stylesheets, die sich über include und import gegenseitig einbinden. Als Beispiel für zahlreiche weitere XSL-Dateien sei hier nur dita2html.xsl genannt, das dita2html-base.xsl einbindet; diese bezieht sich ihrerseits auf ein Dutzend weiterer XSL-Stylesheets.

DITA-OT1.8.5/plugins/org.dita.xhtml/xsl/dita2html.xsl

DITA-OT1.8.5/plugins/org.dita.xhtml/xsl/dita2html-base.xsl

wg / 23. September 2018



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.




XSL-FO

DocBook



Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/DITA.html