vishia - Querverweise in generierter Dokumentation

vishia - Querverweise in generierter Dokumentation

Inhalt


Topic:.orgVishiaXmlDocu.href.

pStyle=std tableStyle=stdTable

.


1 Motivation und Übersicht

Topic:.orgVishiaXmlDocu.href.overview.

pStyle=std tableStyle=stdTable

Die Möglichkeiten von Hyperlinks innerhalb der generierten Dokumentation und zu Nachbardokumenten stellen sich als eigenes Problem dar, einfach deshalb weil in einem Quelldatenbestand nicht bestimmt werden kann, ob ein bestimmtes Hyperlink-Ziel (Anker) in der generiertem Dokumentation oder in welchem Nachbardokument vorhanden sein wird. In den Quelldaten kann nur ein Identstring als Ziel angegeben werden. Aber nicht einmal dieser ist eindeutig. Mischt man Eingangsdaten aus verschiedenen Bereichen, dann sind gegebenenfalls keine Regeln für eindeutige Vergabe von Ident-Bezeichnern vorhanden. Die richtige Zuordnung der Hyperlinks kann daher nur auf der Ebene der Dokumentationsgenerierung selbst vorgenommen werden, gesteuert von Angaben in der Steuerdatei zur Generierung.

Es ist sinnvoll, Ident-Bezeichnern für Hyperlink-Anker aus verschiedenen Bereichen einen Präfix voranzustellen. Das kann geregelt werden mit entsprechender Gestaltung der XSL-Scripts für die Eingangsdatenkonvertierung. Idents für Hyperlink-Anker können auch erst bei der Generierung vergeben werden, insbesondere für ganze Kapitel.

Bei den Hyperlink-Zielangaben kann die Steuerdatei entsprechende Angaben für eine Zuordnung enthalten:

 HyperlinkAssociation
 { *MOD=modulDoc.html#*MOD;
   Type_A_*X2=../DocuTypeA/X2Docu.html#*XY;
 }

Diese Angaben bedeuten Folgendes: Alle Idents, die auf MOD enden, sind im Dokument modulDoc.html mit diesem Ident als Anker aufzufinden. Alle Idents, die mit Type_A_ beginnen und mit X2 enden, sind im angegebenen Dokument zu finden, mit einem Anker-Ident ohne den Präfix und mit Suffix XY. Bei allen nicht auf diese Weise zuordenbaren Idents wird getestet, ob diese im eigenem Dokument definiert sind. Ist das nicht der Fall, dann wird der Verweis weggelassen, und zwar entweder nur der Hyperlink selbst, oder auch der zugehörige Verweistext. Diese Nachbearbeitung erfolgt nicht mit dem XSL-Script, sondern in einem danach aufgerufenen Java-Programm zugehörig zur Erstellung des XhtmlPre.

(Quelle: Artikel SBNF - vom freien Textformat nach XML in Der Entwickler 2007-02)


2 Scheibweise bei der Angabe von Hyperlinks

Topic:.orgVishiaXmlDocu.href..

pStyle=std tableStyle=stdTable

Hyperlinks (Querverweise), die während der Dokumentengenerierung variabel zugeordnet werden sollen, werden in den Input-XML-Files als lokaler Hyperlink mit einem # vornweg angegeben, also in der Form <a href="#label>text</a>.

Wird eine Konvertierung laut WikiFormat verwendet, typisch in Flachtexten entweder in den TextTopics oder beispielsweise in textuellen Descriptionfeldern von Softwarequellen, dann schreibt man dort [[label]]. Das ist die selbe Schreibweise wie bei Wikipedia für Verweise auf andere Schlagworte. Damit wird ein lokaler Hyperlink erzeugt, der dann weiterverarbeitet wird. Die Schreibweise mit dem lokalem Label ist insoweit logisch, als dass ein Verweis auf etwas erfolgen soll, was lokal im Verantwortungsbereich der Dokumentengenerierung liegt, also nicht außerhalb im Internet.

Ein nicht als lokales Label notiertes Label wird nicht variabel umgesetzt. Nicht lokale Labels dürften typisch Internet-Links sein, aber auch Links absolut oder relativ im Filesystem. Bei der Konvertierung laut WikiFormat kann mann für ein festes Label entweder [[!Label]] schreiben, oder auch [[http....]]. Letzteres ist mit der Schreibweise in Wikipedia identisch, die erste Form nicht. Wikipedia kennt entweder nur Labels im eigenem Bereich oder Labels zu fremden Internetseiten, aber keine relativen Labels auf dem Wiki-Internetspace.


3 Zuordnung bei der Dokumentengenerierung

Topic:.orgVishiaXmlDocu.href.CrossReferences.

pStyle=std tableStyle=stdTable

Alle internen Labels (mit # am Anfang) werden bei der Dokumentengenerierung im Schritt CorrectHref (siehe Topic:.XmlDocuGenCtrl.DataFlow. getestet gegen die Angaben im Generier-Steuerfile. Entweder der Generier-Steuerfile oder ein zusätzlich angegebener Referenz-File muss folgende Angaben enthalten (Beispiel):

 HyperlinkAssociation
 { Ident_A_* = "../DocuA/X2Docu.html#*XY";
   Ident_B_*X2 = "../DocuB/X2Docu.html#*XY";
   method:_pkgZ.*:* = "../javadoc/pkgxy/pkgZ/*.html#*";
   *MOD = "modulDoc.html#*MOD";
 }

Wie auch einleitend im Zitat aus dem Zeitschriftenartikel erwähnt sind links vom Zuweisungszeichen = Labels mit Wildcards dargestellt. Hierbei sind zwei Wildcards zulässig. Die internen Labels werden auf Zuordenbarkeit getestet. Dabei erfolgt zunächst eine Aufsuche des linken Teils des Labels bis zum ersten '*', die intern alphabetisch sortiert vorliegen. Ist ein mittlerer oder rechter Teil vorhanden, wird dann in einer Schleife über alle mittleren oder rechten Teile iteriert und die Richtigkeit geprüft. Dabei werden die Bereiche, die durch das Wildcard (*) abgedeckt sind, erkannt und gemerkt. Der Ersatz erfolgt dann mit der Angabe im rechten Teil innnerhalb der "...". Dabei werden anstelle der Wildcards dort die gemerkte Zeichenfolge eingesetzt.

Also ein Label als Hyperlinksziel

 #method:_pkgZ.MyClass.innerClass:doit()

wird ersetzt durch

 ../javadoc/pkgxy/pkgZ/MyClass.innerClass.html#doit()

Das Beispiel passt auf ein Verweis in eine Javadoc hinein. Es erfolgt eine Angabe des Files und des Anchor innerhalb des Files.

Das rechts angegebene Ziel-Label (Anchor für Hyperlink) ist für diese Dokumentengenerierung gültig. Die Hyperlinks in den Ergebnissen der Generierung werden damit gesteuert, ohne in den Quellen der Generierung in dieser Form bekannt sein zu müssen.

Die Hyperlink-Anchors (Anker der Querverweise) können ...


4 Verwendung eines zentralen Hyperlink-Zuordnungsfiles und/oder Hyperlink-Zuordnungen pro Dokument

Topic:.orgVishiaXmlDocu.href.hrefCtrl.

pStyle=std tableStyle=stdTable

Der Block der

HyperlinkAssociation
{ ...
}

kann relativ umfangreich werden, die Einträge in diesem Block können für eine Vielzahl von Dokumenten an sich identisch sein. Andererseits gibt es pro Dokument wenige Hyperlinkzuordnungen, die für dieses Dokument anders gelten sollen als sonst. Insbesondere sind das die Hyperlinks, die in das eigene Dokument hineingehen.

Daher gibt es eine insgesamt 3-stufige Hyperlinkorganisation:

 hrefCtrl: ../../path/file.href;
Document "vishia - Querverweise in generierter Dokumentation" ident=Hyperlink
html="../html/Hyperlink.html"
{ input: ../tmp/Href.topic.xml;
  topictree(orgVishiaXmlDocu/href/*);
  HyperlinkAssociation  //the hyperlinks in the own document:
  { HrefInDocuGenCtrl = "#Topic.orgVishiaXmlDocu.";
    CorrectHref = "#CorrectHref";
    Hyperlink-Korrektur = "#CorrectHref";
    Topic:.orgVishiaXmlDocu.href.* = "#Topic.orgVishiaXmlDocu.href.*";
  }
}

5 Austausch des Anfangs einen Hyperlink-Anchors

Topic:.orgVishiaXmlDocu.href.hrefExchg.

pStyle=std tableStyle=stdTable

Im Block HyperlinkAssociation kann angegeben werden (Beispiel):

HyperlinkAssociation

Ident_A_* = "$DOCUPATH_A/DocuA/X2Docu.html#*XY";

 Ident_B_*X2 = "$DOCUPATH_A/DocuB/X2Docu.html#*XY";
 method:_pkgZ.*:* = "$JAVADOC/javadoc/pkgxy/pkgZ/*.html#*";
 *MOD = "modulDoc.html#*MOD";

}

Das Kriterium ist der Start der Anchor-Angabe mit einem $. Die darauf folgende Zeichenkette bis zum ersten Slash / wird als Name einer Umgebungsvariable benutzt. Üblicherweise werden Umgebungsvariable groß geschrieben und enthalten nur Buchstaben, Ziffern und _, was denn auch hier zutrifft. Der Wert der Umgebungsvariable wird benutzt und damit der Anfang des Hyperlink-Anchors bestimmt.

Die Umgebungsvariable kann beispielsweise eine Internetadresse enthalten, wenn die Files, auf die verwiesen werden, innerhalb dieses Webspaces auffindbar sind. Die Umgebungsvariable kann beim Aufruf der Dokumentengenerierung unmittelbar zuvor gesetzt werden, im Batchfile:

 set DOCUPATH_A=http://www.organisation.org/subdir

Hinweis: Es ist darauf zu achten, dass die Zeile keine nachfolgenden Leerzeichen enthält. Das ist immer wichtig wenn Umgebungsvariablen in Batchfiles setzt. Ein Setzen der Umgebungsvariable im System geht zwar auch, ist aber meist nicht zweckdienlich, da dann keine Flexibilität vorhanden ist. Umgebungsvariable sind inbesondere für das Setzen in Command-Scripts geschaffen worden. Sie werden nur bei Windows meist nicht in dieser Art verwendet.

Wird ein adäquater Satz der Dokumente dann beispielsweise für ein internes Filesystem generiert, dann wird die Umgebungsvariable entsprechend anders gesetzt:

 set DOCUPATH_A=file://D:/Documents/dir

Hierbei ist auch ein relativer Pfad sinnvoll. Das ist dann zweckmäßig, wenn andere Dokumente entweder in einem relativen Verband vorhanden sind oder im anderen Fall einzelne Dokumente wie ein readme.html zu einem Download dort herausgelöst wird und daher alle Querverweise nur noch über eine Internet-URL funktionieren können.


6 Korrektur des relativen Pfades entsprechend der Position des Outputfiles

Topic:.orgVishiaXmlDocu.href.AdjustRelPath.

pStyle=std tableStyle=stdTable

Wenn bei einem Hyperlink ein relativer Pfad angegeben wird, dann bezieht dieser sich auf die Position im Filesystem, in der das Dokument steht, dass diesen Hyperlink enthält. Wenn man relative Pfade in einer HyperlinkAssociation angibt, dann gilt diese aber gegebenenfalls für mehrere Dokumente oder sogar für sehr viele Dokumente. Letzteres ist der Fall, wenn eine allgemeiner Referenzfile (siehe 4 Verwendung eines zentralen Hyperlink-Zuordnungsfiles und/oder Hyperlink-Zuordnungen pro Dokument) angegeben wird. Sind alle relativen Positionen der Dokumente im Filesystem auf der gleichen Ebene, stimmt also die Anzahl der ../ zu einer gemeinsamen Wurzel überall überein, dann ist das kein Problem. Werden die Files jedoch auf verschiedenen Ebenen erzeugt (verteilt in einem Baum), dann ist die Korrektur der Anzahl ../ notwendig, damit der relative Pfad stimmt.

Die Korrektur erfolgt auf der Kenntnis der Lage des Output-Html-Dokumentes, dass ebenfalls mit einem relativen Pfad angegeben werden muss:

Document "vishia - Querverweise in generierter Dokumentation" ident=Hyperlink
html="../html/Hyperlink.html"
{ ....

In diesem Fall steht das Dokument auf der selben Ebene wie der Generierfile.

Document "readme - ZBNF" ident=readme_ZBNF
html="../../../readme_ZBNF.html"
{

Dieses Dokument steht 3 Verzeichnisebenen weiter links, ein relativer Pfad, der sich auf das Generierverzeichnis bezieht, muss also um ../../../ gekürzt werden.

Der relative Pfad von Hyperlink-Anchors im HyperlinkAssociation{...}-Block muss vom Generierverzeichnis aus angegeben werden. Wenn die Möglichkeit des Kapitel 5 Austausch des Anfangs einen Hyperlink-Anchors benutzt wird, dann erfolgt dies in einer Umgebungsvariable. Die allgemein angegbenen Pfade zu verschiedenen Dokumenten einer Filegruppe sollten sich auf das am weitestens links (unten, zur root) bezogene Verzeichnis beziehen.

Das Java-Programm javadoc:_org/vishia/xml/docuGen/CorrectHref übernimmt die notwendigen Parameter mit der -o:-Option: Angabe des Ausgabefile-Pathes, wobei von dieser nur die Position im Filesystem benötigt wird.


7 Möglichkeiten und Beispiele der Angaben

Topic:.orgVishiaXmlDocu.href.exampl.

pStyle=std tableStyle=stdTable

Folgende Beispiele aus dem eigenem Bereich dieses Dokumentes erläutern die Anwendung. Dargestellt ist immer


7.1 Links zu Schlagworten (Begriffen mit eigenständiger Bedeutung)

Topic:.orgVishiaXmlDocu.href.exampl.catchword.

pStyle=std tableStyle=stdTable

 ZBNF_on_Sourceforge = "http://www.sf.net/projects/ZBNF";
 Zmake = "../../Zmake/index.html";
 Xslt-WhiteSpaces = "../../Xml/XmlDocuGenerated/XmlDocuVishia.html#chapter_2.4";
 Hyperlink-Korrektur = "#CorrectHref";

Solche Labels sind eigene Begriffe in Dokumenten, mit denen in der Form [[ ZBNF_on_Sourceforge]] oder [[ Zmake]] in TextTopics hingewiesen werden kann. Dabei kann ein Link wie gezeigt auf eine URL im Internet geleitet werden, auf ein anderes HTML-Dokument oder auch auf einen Link innerhalb eines anderen Dokumentes oder einen Link im eigenen Dokument, wie die 4 Beispiele zeigen. Von der Möglichkeit der Änderung nur in den HyperlinkAssociation gegebenenfalls nur in wenigen Files wird man dann profitieren, wenn andere Dokumente überarbeitet worden sind und daher an anderer Stelle stehen. Wesentlich schwieriger in solchen Fällen sind verteilte Links in vielen HTML-Dokumenten. Wird beispielsweise ein abgeschlossenes Word- bzw. pdf-Dokument erstellt, dass keine Querverweise nach außen haben soll (gedruckte Form), dann können die Hyperlinks auch ersetzt werden durch Hyperlinks innerhalb des Dokumentes zu einer Liste mit Literaturangaben, wie es weiter unten erläutert ist.


7.2 Links zu Text-Topics

Topic:.orgVishiaXmlDocu.href.exampl.topic.

pStyle=std tableStyle=stdTable

Topic:.orgVishiaXmlDocu.href.* = "../../XmlDocu/html/Hyperlink.html#Topic.orgVishiaXmlDocu.href.*";
Topic:.orgVishiaSwEng.SourceCodeGen.* = "../../SwEng/html/SourceCodeGen.html#Topic.SourceCodeGen.*";
Topic:.orgVishiaXml.Xslt.* = "#lit.vishia-Xslt"

Wie in TextTopics beschrieben sollen Topics jeweils eindeutig in einem Gesamtprojekt identifiziert sein oder besser über Projektgrenzen eindeutig, in dem man das Toplevel-Topic der zuständigen URL folgend benennt. Text-Topics können in mehreren Dokumenten Eingang finden. In einem Text-Topic kann daher eigentlich nur mittels direkter Angabe des Topic-Pfades verlinkt werden, in dem dort beispielsweise angegeben wird: [[ Chapter: 7.1 Links zu Schlagworten (Begriffen mit eigenständiger Bedeutung)]] oder [[ Topic:.orgVishiaSwEng.SourceCodeGen.]]. Wo dieses Topic präsent ist, soll aus dem Kontext des generierten Dokumentes bestimmbar sein. Nur für ein generiertes und in einem Kontext abgespeichertes Dokument ist definiert, wo fremde Topics auffindbar sind. Ein Dokument ohne Kontext (frei kopierbares pdf-File) sollte anstatt eines Links nach außen eine Querverweistabelle enthalten, an denen Literaturstellen aufgeführt sind.

In der oben beschriebenen Form sind die Topics mit ihren Anfangs-Pathes einzelnen Dokumenten oder wie im dritten File auf eine Querverweisliste innerhalb des eigenen Dokumentes zugewiesen. Der Pfad muss tief genug angegeben werden, wenn Topics eines Baumes in verschiedenen Dokumenten verstreut aufgefunden werden sollen.

Link zur Kapitelüberschrift der Text-Topics:

Mit einer Schreibweise [[Topic:.orgVishiaXmlDocu.href.exampl.catchword.|$chapter]] in einem WikiFormat-Flachtext oder einer Schreibweise <xhtml:a ref="#Topic:.orgVishiaXmlDocu.href.exampl.catchword.">$chapter</xhtml:a> in einem XML-Text wird angegeben, dass einerseits der Hyperlink auf die Kapitelüberschrift zeigen soll, in der das Topic steht, andererseits dass diese Kapitelüberschrift auch als Link-Text benutzt werden soll. Das ist oft angenehm, der Leser möchte eher nicht die Bezeichnung eines Topic-Pfades als Link sehen sondern einen lesbaren Text dessen, was dort beschrieben ist.

Die Realisierung dessen geht aber (derzeit) nur für Topics im eigenem Dokument. Die Zuordnung wird von javadoc:_org/vishia/xml/docuGen/CorrectHref ausgeführt. Wenn dieser Mechanismus auch für andere Dokumente gelten soll, dann muss bei der CorrectHref das andere Dokument vorliegen, mindestens als eine ältere Version, die aber das Topic an der selben Stelle enthält wie eine ggf. eben noch nicht generierte neue Version. Dann ist es möglich, innerhalb von CorrectHref dieses Dokument aufzuschlagen, das Topic dort drin zu suchen und die entsprechende Kapitelüberschrift zu ermitteln. Dann muss auch der Name des Dokumentes mit aufgeführt werden. Diese Vorgehensweise ist noch nicht relalisiert (TODO).


8 Nicht erfüllte Hyperlinks in Verweisliste leiten

Topic:.orgVishiaXmlDocu.href.nonresolved.

pStyle=std tableStyle=stdTable

Nicht erfüllbare Hyperlinks werden gelöscht. Damit entsteht beim Leser keine Unruhe, wenn Hyperlinks nicht funktionieren. Es gibt aber den Fall, dass kein Ziel für ein Hyperlink vorhanden ist, aber dennoch ein Hyperlink erscheinen soll, beispielsweise um auf eine Literaturliste zu zeigen. Die Literaturliste enthält dann den manuellen Hinweis, wie die entsprechende Dokumentation bezeichnet ist bzw. wo diese aufzufinden ist.

Für Literaturangaben kann es beispielsweise einen umfangreichen XML-File geben, der alle notwendigen Angaben für alle möglichen Literaturstellen enthält. In der Anwenderdokumentation soll aber nur dienigen Angaben erscheinen, auf die auch wirklich referenziert wird. Die Auswahl welche dies sind, kann aber erst nach Zusammenstellung des fertigen Dokumentes erfolgen da erst dann dessen Inhalt bestimmt ist.

Dem End-Anwender soll nun nicht eine zusätzlich programmierte Auswahl aufgebürdet werden, etwa ein spezielles XSL-Script, sondern die Dokumentengenerierung erledigt das selbst. Jedoch soll die Form dieser Angaben einschließlich der Entscheidung, welche Zusatzinformationen verwendet werden, in der freien Gestaltung der Anwender-Aufbereitung liegen.

Nachfolgend ist von Querverweislisten (en: cross reference lists) im allgemeinerem Sinn die Rede, da das Prinzip sich nicht nur auf Literaturangaben beziehen kann. Ein anderes Beispiel wäre eine Bauteilbezeichnung, die in gleichartiger Weise zu einer Liste mit kurztextueller Beschreibung von Bauteilen führen kann, auf die im Dokument referenziert wird.


8.1 Bestimmung, welche Labels auf Querverweislisten aufgeführt werden sollen

Topic:.orgVishiaXmlDocu.href.nonresolved..

pStyle=std tableStyle=stdTable

Diese Bestimmung führt der End-Anwender in gleicher Weise aus wie die Bestimmung aller Labelzuordnungen innerhalb der Dokumentengenerierung. Und zwar im Abschnitt

 HyperlinkAssociation
 { xyz*     ="xxx*";
   Lit*     ="#Lit*":Literaturangaben;
   Bauteil* ="#Comp_*":ComponentList;
 }

Entscheidend ist hier die Angabe eines Bezeichners nach dem Doppelpunkt, auf das Ziel-Label folgend. Beim Ziel-Label ist ein führendes Doppelkreuz anzugeben, weil es sich um ein internes Label handelt. Gibt es keine einheitliche Festlegung von Präfixes oder Postfixes für solche Dinge, dann kann die Angabe an dieser Stelle auch sehr umfangreich werden weil womöglich für jedes einzelne Label anzugeben. Das stört die Dokumentengenerierung aber nicht, problemlos verarbeitbar.


8.2 Bestimmung der Stelle, an der Querverweislisten erscheinen sollen

Topic:.orgVishiaXmlDocu.href.nonresolved..

pStyle=std tableStyle=stdTable

Häufig ist das ein bestimmter Abschnitt in der Dokumentation. Es kann aber auch innerhalb eines mit XSL anwenderaufbereiteten Blockes liegen. Im Vor-vor-generierten Dokument (name.pre1.xml) kann an beliebiger Stelle ein XML-Element mit dem Attribut

<Tag crossRefContent="IDENT">

gekennzeichnet sein. IDENT sollte der Bezeichner sein, der auch nach dem Doppelpunkt bei den HyperlinkAssociation angebeben ist. (Das muss nicht unbedingt sein, im XSL kann auch etwas anderes berücksichtigt werden.) Über diese Bezeichnung erfolgt die Auswahl der Kovertierung erfolgt, wie im weiter unten dargestellten XSL-Script gezeigt. Dieses Attribut kann entweder über ein XSL-Script generiert werden, oder es wird im textuellem Dokumentengenerierscript DocuGenCtrl angegeben. Dort in folgender Form:

  crossRef(IDENT);

Damit wird im name.pre1.xml ein leeres <xhtml:body crossRefContent="IDENT" /> erzeugt.


8.3 Füllen der Querverweisliste mit Inhalt

Topic:.orgVishiaXmlDocu.href.nonresolved..

pStyle=std tableStyle=stdTable

Die Steuerung, was zu tun ist für das Füllen, obliegt der Anwenderaufbereitung.

Das Generieren von Inhalt für Querverweislisten erfolgt nach Abschluß der Vor-vor-Generierung (name.pre1.xml) mit dem Schritt der Labelzuweisung (CorrectHref). Dabei wird ein XSL-Script angegeben, dass ein Block mit beispielhaft folgendem Inhalt haben soll:

 <xsl:template match="/">
   <xsl:variable name="content" select="/root/@crossRefContent" />
   <xsl:choose><xsl:when test="starts-with($content,'Literaturangaben')" >
     <pre:CrossRefContent><!-- the root element of this transformation. -->
       <xhtml:dt><xsl:value-of select="$content" />
       </xhtml:dt>
       <xhtml:dd>
         <xhtml:p><xsl:value-of select="/root/Literaturlisten/item[xxx] />
       </xhtml:dd>
     </pre:CrossRefContent>
   </xsl:when><xsl:otherwise>
     <pre:noCrossRefContent />
   </xsl:otherwise></xsl:choose>
 </xsl:template>

Es wird im Wurzel-Template entsprechend eines Attributes @crossRefContent verzweigt, was zu tun ist. Dieses Attribut wurde im Java-Programm javadoc:_vishia/xml/CorrectHref zuvor gesetzt aus der Information im Attribut crossrefContent im name.pre1.xml-Dokument. Das Attribut ist wichtig, um in den entsprechenden Zweig zu verzweigen. Dort wird entweder ein Element <pre:CrossRefContent> mit Inhalt oder <pre:noCrossRefContent /> als Wurzelelement im Ausgabebaum erzeugt. Der Inhalt innerhalb des Elementes wird dann als Inhalt in das entsprechende Element in der generierten Dokumentation eingefügt.


9 Rückwärtsreferenzen: Von woher wurde auf das Ziel verlinkt?

Topic:.orgVishiaXmlDocu.href.BackHref.

pStyle=std tableStyle=stdTable

Eine Übersicht, von welchen Stellen im eigenen Dokument auf ein bestimmtes Ziel verlinkt wurde, kann eine wünschenswerte Ergänzung sein. Eine Dokumentengenerierung kann hier automatisch diese Arbeit erledigen, manuell wäre es aufwändig. Aber die Art der Gestaltung der Rückwärtsreferenz muss anwendersteuerbar sein, also in einem XSL-Script enthalten sein.

Es stellen sich zwei folgende Fragen, die der Anwender für seine Dokumentenart / sein Dokument individuell beantworten können muss:

Die zweite Frage ist in etwa beantwortbar mit folgenden Überlegungen:

Die erste Frage ist nicht allgemein beantwortbar. Es liegt frei in der Hand des Anwenders, wo er Rückwärtsreferenzen plazieren möchte. Das kann sein an derjenigen Stelle, an der die Referenz definiert ist. Das kann aber auch eine extra Übersichtsliste sein, im Anhang oder dergleichen. Damit ergibt sich die Notwendigkeit, für jede Referenz eine eigene Position im Dokument für Rückwärtsreferenzen anzugeben. Das kann einfach in einem speziellen Xsl-Script etwa für UML-Softwaredokumentation erfolgen, oder mit dem Schlüsselwort

 BackRef(<$?label>);

innerhalb eines Kapitels angegeben werden.