vishia - Das Format XhtmlPre

vishia - Das Format XhtmlPre

Inhalt


1 XhtmlPre

Topic=.XmlDocuGen.XhtmlPre.

.

1.1 Motivation und Entwicklung

Topic=.XmlDocuGen.XhtmlPre.motivation.

Am Anfang stand HTML als Outputformat. HTML enthält im Grunde alles, um ein Dokument zu erzeugen. Indirekte Formatierung ist mit CSS zu erledigen. Selbst die üblicherweise fehlende Seitenaufteilung kann mit intelligenten Seitenumbruchsverfahren wett gemacht werden.

Ein auffallender Mangel an HTML ist die Tatsache, dass eine Unterkapitelgliederung nicht als Baum erscheint, alle Kapitel sind im HTML-Baum auf gleicher Ebene. Die Gliederungsebene ist nur durch die Bezeichnungen <h1><h2> usw. gegeben. Das erschwert aber die Konvertierung nach Word-2003 (Word-ML).

Das XhtmlPre-Format beseitigt diesen Mangel, in dem die Kapitelgliederung in <pre:chapter> baumartig gefasst wird. Der Text eines Kapitels ist dagegen in XHTML jeweils als <xhtml:body> aufgeführt. XHTML bietet dabei alles, was für die Textdarstellung benötigt wird. XHTML ist als Ablösung zu HTML konzipiert ist, also für Web-Seiten. Daher umfasst XHTML wesentlich mehr als für reine Textspeicherung benötigt wird. Im Format XhtmlPre wird nur dasjenige von XHTML benutzt, was für reine Textgestaltung notwendig ist.

1.2 XSchema für XhtmlPre

Topic=.XmlDocuGen.XhtmlPre.XSchema.

Ein XSchema für das XhtmlPre-Format ist zwar versprochen, im Moment aber noch nicht vorhanden (TODO). Am XSchema kann man genau sehen, welche XHTML-Bestandteile unterstützt werden. Im Moment gibt es nur zwei Konvertierungen aus dem XhtmlPre heraus: XmlDocu_xsl/Pre2Xhtml.xsl und XmlDocu_xsl/Pre2Word.xsl. Beide Scripts sind parallel gepflegt. Alles was diese Scripts ins Zielformat konvertieren, ist quasi im XhtmlPre als gültig definiert. Für eine ordentliche Arbeit gehört es sich aber, das zuerst ein XSchema vorhanden ist, das verbindlich gilt dafür, was die Konvertierungsroutinen zu leisten haben. Da es aber auch ohne geht, ist das also ein wichiges TODO aber nice to have.

1.3 Grundaufbau einer Xhtml-Datei

Topic=.XmlDocuGen.XhtmlPre..

Wäre ein Xschema vorhanden, dann wäre dieser Teil der Dokumentation aus der XSchema-Datei generierbar. Dazu ist in jedem XSchema-Element ein Block <xs:annotation><xs:documentation> ... </ notwendig. Anstelle dessen ist hier formal der Aufbau notiert. Erwähnt sind auch mögliche Erweiterungen:

<pre:Chapters>

Das ist das Top-Element des XhtmlPre-Formates.

Attribute:

  • title= Das ist der Titel des Dokumentes. In der HTML-Ausgabe soll er im head-Bereich als title erscheinen (Kopfzeile im Browser).

Elemente:

  • <pre:chapter> Kapitel des Dokumentes.

Etwas anderes ist als Inhalt derzeit nicht vorhanden. Auf der obersten Ebene können aber weitere Eigenschaften des gesamten Dokumentes aufgeführt sein wie Autor, Dokumentennummer, Datum und ähnliches.

<pre:chapter>

Das ist ein Kapitel.

Attribute:

Elemente, als Sequenz

  • <pre:title> muss als erstes angegeben werden. Der Titel des Kapitels steht innerhalb des Elementes als text(). Er darf aber keine weiteren Auszeichnungen haben wie etwa kursive oder fette Bestandteile im Titel. Das ist nicht vorgesehen weil es meist auch nicht gut wirkt. Ein Kapiteltitel soll klar und einfach gesetzt sein. Es ist aber denkbar, dass man hier doch erweitern will und innerhalb des Titel XHTML-inzeilige Formatierungen vorsehen will.

  • <pre:TestOutput> Es ist möglich, pro Kapitel einen Testoutput anzugeben, der im Enddokument meist nicht dargestellt werden soll. Das kann die Quelle der Konvertierung sein, oder auch Text-Style-Angaben.

  • <xhtml:body> Falls ein Kapiteltext erscheinen soll, muss er in dieser Reihenfolge angegeben werden.

  • <pre:chapter> Unterkapitel innerhalb dieses Kapitels.

<xhtml:body>

Alle textuellen Bestandteile werden jeweils als ein solches Element angegeben. Innerhalb des <xhtml:body> dürfen wie folgend angegeben XHTML-Blockelemente stehen. Bei allen Elementen ist das Attribut id= und class= zulässig. id= ist ein Anker für Querverweise, class= dient hier ausschließlich der Bestimmung der indirekten Formatierung. Der Attributwert ist der Name einer Formatvorlage (Word) bzw. eines CSS-Styleelements.

  • <xhtml:p> Ein Absatz. Der Absatz enthält die inzeiligen XHTML-Elemente.

  • <xhtml:ul> Eine einfache Liste. Enthält Elemente <xhtml:li>, siehe gesonderte Erläuterung.

  • <xhtml:ol> Eine numerierte Liste. Enthält Elemente <xhtml:li>, siehe gesonderte Erläuterung.

  • <xhtml:dl> Eine Definitionsliste. Innerhalb sind zulässig in gegebener Reihenfolge:

    • <xhtml:dt> Definitionstext. Dieser enthält einen inzeiligen Inhalt.

    • <xhtml:dd> Definitionsdaten. Diese können alles enthalten, was auch innerhalb <xhtml:body> zulässig sind, Blockelemente.

  • <xhtml:table> Eine Tabelle, siehe gesonderte Erläuterung.

TODO... erläuterung table, li, weitere Elemente.

1.4 Vorformatierte Texte <xhtml:pre>

Topic=.XmlDocuGen.XhtmlPre..

Mit dem Element <xhtml:pre> werden wie in HTML mit <pre> vorformatierte Texte gekennzeichnet. Das wird oft verwendet für Abzüge aus Sourcecodes von Programmen, Listings und dergleichen. <pre> ist aus HTML-Sicht eine sehr einfache Sache. Nicht jedoch im gesamten Komplex der Dokumentengenerierung. Der Grund ist die Leerraum- (Whitespace)-Behandlung:

In allen anderen textuellen Bestandteilen kann man davon ausgehen, dass Zeilenumbrüche keine gesonderte Bedeutung haben und mehrere aufeinanderfolgende Leerzeichen zu einem Leerzeichen zusammengefasst werden. Nicht so aber innerhalb eines <xhtml:pre>-Textes. Hier müssen sowohl Leerzeichen als auch Zeilenumbrüche erhalten bleiben.

Styleangabe bei <xhtml:pre>

Einem <xhtml:pre class="style">-Element kann ein Absatzformat (Winword-Sicht) bzw. ein Style genauso zugewiesen werden wie allen anderen Formaten. Für die Benennung des Style ist der Anwender verantwortlich, der Style muss dann in den Formatvorlagen bzw. CSS auftauchen.