Bisher hatte ich für jede Frage der FAQ-Liste eine eigene Concept-Datei erstellt. Dies war jedoch zu viel Arbeit. Es sollte eine Ein-Datei-Lösung her. Oben die Fragen als Link, weiter unten dann die Frage/Antwort-Einträge. Was lag näher, als die Demo-FAQ-Spezialsierung im DITA-OT\demo-Ordner anzuschauen? Jedoch nach einem Tag gab ich es auf. Die Pfade in der build_demo.xml und der faq2html_shell.xsl zum DTD-Verzeichnis stimmten nicht, da die Verzeichnisse im DITA OT 1.5 neu geordnet wurden. Auch glaube ich, dass mit jeder neuen FAQ-Datei, die man erstellen möchten, man diese im build-Script erwähnen muss.
Nun weiß ich, warum ich keine Beispiele zu dieser FAQ-Spezialisierung gefunden habe: sie ist nicht dokumentiert und in der Handhabung etwas umständlich.
Natürlich habe ich versucht, selbst XSL-Stylesheet-Anpassungen zu kreieren. Das Ergebnis: keine Fehlermeldung und kein Inhaltsverzeichnis. Bis ich in der Datei DITA-OT\xsl\xslhtml\dita2htmlImpl.xsl auf den Eintrag
<xsl:template name="gen-user-sidetoc">
stieß. Schnell danach gegoogelt und hier die Rettung in der neuen Toolkit-Dokumentation und einem XSL-Tutorial gefunden. Hier das Beispielskript vom DITA-OT:
<!-- override for main stub -->
<xsl:template name="gen-user-sidetoc">
<!-- if there are nested topics... -->
<xsl:if test="descendant::*[contains(@class,' topic/topic ')]">
<p><table width="150" align="right" border="1" frame="box" rules="none">
<tr><td height="5" bgcolor="#0033CC" align="center">
<b><font color="#FFFFFF">Contents:</font></b></td></tr>
<xsl:for-each select="descendant::*[contains(@class,' topic/topic ')]">
<xsl:variable name="ttext"><xsl:value-of select="*[contains(@class,' topic/title ')]"/>
</xsl:variable> <tr><td class="toc">
- <a href="#{generate-id()}"><xsl:value-of select="$ttext"/></a>
<!--recursive call for subtopics here"/--> </td></tr>
</xsl:for-each></table></p></xsl:if>
</xsl:template>
Durch trial and error habe ich das Template derart angepaßt, dass immer nur in Concepts rechts oben ein Seiteninhaltsverzeichnis erscheint, welches die section titles – sprich die Überschriften zu jeder Sektion – auflistet.
<xsl:template name="gen-user-sidetoc"> <xsl:if test="descendant::*[contains(@class,' topic/section ')]/*[contains(@class,' topic/title ')]"> <p><table class="table" width="200" align="right" border="0"> <tr><td class="tablehead" align="center">Seitenübersicht</td></tr> <xsl:for-each select="descendant::*[contains(@class,' topic/section ')]/*[contains(@class,' topic/title ')]"> <xsl:value-of select="*[contains(@class,' topic/title ')]"/> <tr><td><a href="#{generate-id()}"><xsl:value-of select="text()"/></a></td></tr> </xsl:for-each> </table></p> </xsl:if> </xsl:template>
Es mußte noch ein Template her, um Namensanker zu erstellen.
<xsl:template name="id">
<a name="{generate-id()}"/>
</xsl:template>
Dieses Anker-Template muss nun innerhalb des Template für die section-titles aufgerufen werden, damit in jeder section ein Namensanker generiert wird:
<xsl:call-template name="id"/>
Damit die geänderte Datei dita2htmlImpl.xsl nicht beim nächsten DITA-OT-Update verloren geht, ist es ratsam, das
gen-user-sidetoc
-Template in ein Plugin auszulagern. Sie können das Plugin tocofsections auf der Startseite www.ditalog.com downloaden.
Bei der Generation von ePUB-Dateien wirkt jedoch die Section-Übersicht am rechten Rand als störend. Dann ist es besser, einfach den Plugin-Ordner herauszunehmen bzw. umzubenennten.
| Titel des Downloads: | Ideen für Dokumentationen und Online-Hilfen |
| Art der Publikation: | Kapitel |
| Beschreibung: | Das gesamte Kapitel als PDF-Datei. Ohne Leerseiten für die A4-Ausgabe optimiert. |
| Aktualisiert am: | 10.03.2011 |
| Anzahl der Downloads: | 457 |