vishia - XML-Texttopics

vishia - XML-Texttopics

Inhalt


1 Dokumenteninhalte in Topics erfassen

Topic=.Topics.

ulStyle=list-closely

Ein Topic ist eine Aussage zu einem Thema. Der Unterschied zu einem Dokument ist darin zu sehen, dass ein Dokument eine geschlossene Aussagen-Repräsentation, einschließlich Titel, Einleitung, Inhaltsverzeichnis usw. darstellt, ein Topic dagegen nur eine Einzelaussage ohne Einordnung. Damit sind die Topics als Bausteine für verschiedene Dokumentationen verwendbar.

Der Standard XML Topic Maps (XTM), auch in http://de.wikipedia.org/wiki/Topic_Map hat wenig mit diesen Ausführungen zu tun. Die dort beschriebenen Topic Maps sind eine Möglichkeit zur Referenzierung von Wissensdatenbeständen.

1.1 Toplevel-Topics und Child-Topics

Topic=.Topics.TopicTree.

ulStyle=list-closely

Topics können geschachtelt sein. Damit sind Topics zu einem passenden Thema beieinandergehalten. Das erleichtert unter anderem auch die Inhaltspflege. Topics der obersten Ebene werden als Toplevel-Topics bezeichnet, darunter befinden sich Child-Topics. Damit entsteht eine baumartige Anordnung von Topics, ein Topic-Tree. Mit der Schachtelung wird erreicht, dass die Anzahl der Toplevel-Topics überschaubar bleibt und damit die Übersicht über Topics gewahrt werden kann.

Ein Topic soll eine einzelne Aussage zu einem Thema enthalten. Das scheint dem Topic-Tree-Konzept zu widersprechen. Dieser Widerspruch kann aber wie folgt aufgelöst werden: Ein Toplevel-Topic oder ein Topic einer zusammenfassenden Ebene enthält eine Komplexaussage zu einem Thema. Die Komplexaussage schließt alle Child-Topics ein. Die Aussagen in Child-Topics sollen dagegen immer auch für sich allein stehen können. Sie müssen in einem generierten Dokument in einen entsprechenden Kontext gestellt werden.

Folgende Kriterien können zur Entscheidung dienen, wann Toplevel-Topics gebildet werden und wann eher Child-Topics geeigneter sind:

  • Wenn bestimmte Aussagen eindeutig einem Gebiet zuordenbar sind, und es bei einem End-Dokument denkbar ist, dieses Aussagen hintereinander in einer Kapitelstrukturierung anzuordnen, dann sind diese Aussagen als Child-Topics unterhalb eines zu definierenden Toplevel-Topics anzuordnen.

  • Aussagen, die zwar einem Thema angehören, aber unterschiedliche Aspekte betrachten, sind gegebenenfalls nicht in einem gemeinsamen Toplevel-Topic zu führen. Hier sollte man zunächst verschiedene Toplevel-Topics definieren und damit das Gesamtthema gliedern. Danach ist die Einordnung zu finden.

  • Das Umschieben von Childs in der Baumhierarchie oder in andere Toplevel-Topics führt zu Nachpflegeaufwänden bei allen damit generierten Dokumenten und sollte daher vermieden werden. Damit ist eine Vorab-Planung = Gliederung der Aussagen wichtig.

Toplevel-Topics sollten in der gesamten Datenhaltung der Topics eines Bereiches eindeutige Bezeichnungen (Attribut ) führen. Nur so können beliebige Topic-Mischungen als Input für eine Dokumentengenerierung angegeben werden.

In welchen Files die Topics geführt werden, soll flexibel gehalten werden. Der Filezuschnitt ist weniger dem Inhaltsaspekt zuzuordnen sondern ist eher ein Verwaltungsaspekten wie Versionspflegesystem oder Zuordnung zu Bearbeitern. Die Verschiebung eines Toplevel-Topics in einen anderen File soll für die Adressierung des Topics keine Auswirkung haben. Lediglich die bei der Generierung anzugebenden Filenamen müssen angepasst werden.

1.2 Adressierung von Topics, Label

Topic=.Topics.Ident.

ulStyle=list-closely

Jedes Topic soll ein Attribut ident führen. Dieses Attribut ident muss bei Toplevel-Topics im gesamten Betrachtungsraum eindeutig sein um eine sonst gegebenenfalls notwendige Vorverarbeitung von Input-Topic-XML-Files zwecks Labelanpassung zu vermeiden. Daher sollte bei der Planung der Datenhaltung für Topics die Eindeutigkeit der Ident-Bezeichner bedacht werden. Günstig ist es, den Ident-Bezeichner mit einer unverwechselbaren Bezeichnung für das gesamte Thema beginnen zu lassen (Präfix) oder ein eindeutiges Postfix zu verwenden. Damit ist keine Gesamtplanung aller Idents notwendig sondern nur die Festlegung von Präfixes oder Postfixes für Bereiche.

Die Ident-Bezeichner von Child-Topics sind immer im Namensraum der übergeordneten (Parent-) Topics gültig. Das wird sowohl bei der Bildung von Hyperlink-Labels beachtet als auch bei der Adressierung der Topics. Die Topics werden bei der XPATH-Auswahl als Kette von Ident-Bezeichnern gebildet, und zwar als XPATH-Ausdruck wie

Topics/topics:topic[@ident='parent']/topics:topic[@ident='child']/topics:topic[@ident='child']

oder sie werden im Steuerfile der Dokumentengenerierung als Basis für das XSL-Generierscript in der Form

topic(parent/child/child)

geschrieben. Die Bildung der Hyperlink-Labels erfolgt mit Aneinanderhängen der Idents mit einem Punkt getrennt und sind auf diese Weise ebenfalls eindeutig:

parent.child.child

notiert.

2 Aufbau eines XML-Files mit Topics

Topic=.TopicsXml.

ulStyle=list-closely tableStyle=table-standard

Ein XML-File mit Topics muss das Toplevel-Element <Topics> enthalten. Unterhalb dieses Elements sind beliebige viele Elemente <topics:topic> anordenbar, das sind Toplevel-Topics.

Die <topics:topic> enthalten einen Text als <xhtml:body>-Element im xhtml-Namespace nach den xhtml-Konventionen. Aus Sicht der Topicdefinition gibt es dabei keine Inhaltsbeschränkung bezüglich der Formulierungsmöglichkeiten im <xhtml:body>-Element, allerdings werden von der Dokumentengenerierung nicht alle Elemente verarbeiten. Details dazu befinden sich in der Dokumentation zur Dokumentengenerierung. <topics:topic> dürfen weitere Elemente <topics:topic> enthalten, das sind die Child-Topics.

3 Topics pflegen in reinen Textfiles

Topic=.TextTopicsPOT.

ulStyle=list-closely tableStyle=table-standard

Die Idee, Topics in einfachen flachen Texten zu pflegen erscheint abwegig im Zeitalter von Winword & co, MindManager und Wysiwig. Der Vorteil ist folgender:

  • Ein flacher Text lässt sich mit jedem einfachen Texteditor jederzeit langzeitstabil versionsunabhängig systemunabhängig pflegen.

  • In einem Source-Versionsmanagement-System erfolgt eine Differenzsspeicherung der eigentlichen Inhalte - das ist speichereffektiv und man kann jederzeit genau die Differenzen zwischen Versionen genau erkennen.

  • Die Formatierung des Textes wird in einer Art erledigt, wie Wikipedia-Seiten editiert werden. Es gibt weniger Formatierungsmöglichkeiten, nur die zulässigen indirekten Formatierungen. Es geht viel schneller, eine Formatierung mit Hochkommata kursiv zu setzen oder Listenpunkte mit einem Sternchen am Zeilenanfang zu schreiben, zwei Sternchen bei Listen in Listen, als mit der Maus die richtige Formatierung auszufischen.

  • Man weiß ganz genau, was gespeichert ist.

  • In den Quellfiles kann man mit grep und adäquaten Mitteln eine Zeichenkette oder Spezialformatierung suchen, man benötigt kein Spezialwerkzeug.

Das gilt freilich nur, wenn man diesen Stil möchte. Die Art, Texte ganz flach wie zu Zeiten von Wordstar (wer kennt das noch?) zu editieren, soll nicht als das große neue NonPlusUltra gepriesen werden. Doch die Vorteile sollte man auch akzeptieren. Ein guter Texteditor ermöglicht das wahlweise Umbrechen von Absätzen, Spaltenbearbeitungen, gute Such/Ersetzmöglichkeiten usw. Wahrscheinlich liegt die direkte Texteditierung einem Programmierer, der ansonsten auch Programmzeilen im formatierten Textformat pflegt, ein Stückweit näher als einer Büro-Sachbearbeiterin.

Folgender Link führt zu diesem Text, der als flacher Text in Topics gehalten is t: Xml/docuSrc/Topics.topic.txt.

3.1 Regeln zur Erstellung der Texte

Topic=.TextTopicsPOT..

ulStyle=list-closely tableStyle=table-standard

TODO

4 Styleangaben zur Formatierung von Topics

ERROR: not found ---/root//topics:topic[@ident='XmlDocuGen-Style']---