<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="excerpt/excerpt.browser.xsl"?>
<!DOCTYPE Excerpt SYSTEM "../../../dtd/notice.dtd">
 
<Notice>
<Abstract
	authorsfirst="Peter"
	author="Heilbronn"
	title="Beschreibung des internen XML-Formates"
	description="Dieses Dokument beschreibt den technischen Kontext der
automatischen Erstellung der gesamten Website.
Insbesondere werden die grundlegenden XML-Tags 
unseres internen Dokumentformates erkl&auml;hrt, um eigene Dateien bei uns
einbinden zu k&ouml;nnen."
	date="06/2006"
/>

                                                                
<Section  title="Allgemein">

<Subsection title="Warum XML?">
<P>
Um die Webseiten und alle möglichen anderen Dokumente automatisch erstellen zu
können, haben wir uns entschieden, alle Informationen, Texte und Beschreibungen
in XML zu machen. Das hat den entscheidenden Vorteil, dass man mit einer Unmenge
von schon hoch standardisierten Werkzeugen auf der gesamten Datenmenge operieren
kann. Alle Dokumente werden als eine Art Datenbank benutzt.
</P>
<P>
Viele abhängige Dokumente, wie z.B. Newsletter oder verschiedene Gruppierungen
auf unterschiedlichen Navigationsseiten der gleichen Daten, kann man mit einem
Mindestmaß an Redundanz erzeugen. So steht z.B. die Kurzbeschreibung eines
Textes nur in diesem Text selbst (so es ein XML-File nach unserer Beschreibung
ist). 
</P>
<P>
Überall nun, wo diese Beschreibung benötigt wird, sie anzuzeigen, wird sie aus
dem Dokument selbst genommen. Ändere ich diese, so muss ich nicht überlegen, wo
ich überall diese Änderungen noch machen muss, sondern ich übersetze einfach
alles neu. <b>Einmal schreiben, überall sehen.</b>
</P>
<P>
Da mir alle vorhandenen Formate zu kompliziert oder auch zu
allgemein schienen, habe ich mich entschieden, eigene
Minimal-DTD's zu erstellen. Sie sind so einfach gehalten, dass man im
Zweifelsfall
sehr schnell eine Umsetzung in ein anderes Format vornehmen kann.
</P>

<P>
Allgemeines zu XML/XSL findet man beim
<a href="http://www.w3c.org" style="color:blue"><b>W3C</b></a> bzw. eine
hervorragende
Einf&uuml;hrung mit Beispielen und verst&auml;ndlicher Beschreibung bei
<a href="http://selfaktuell.teamone.de/" style="color:blue">
<b>Selfhtml</b></a>, dass ich an
dieser
Stelle nicht darauf eingehen m&ouml;chte. Jeder, der sich mit HTML auskennt,
kann sehr
schnell zurecht kommen. XML ist, <b>was du beschreiben willst, mach eckige
Klammern drum.</b>
</P>

<P>
Hier wird der grunds&auml;tzliche Vorgang beim &Uuml;bersetzen mittels XSL
gezeigt.
<img src="xsl.gif" />
</P>
<P>
Gro&szlig; und Kleinschreibweise wird beachtet!
</P>


<P>
Das Format und seine Anwendungen unterliegen einer st&auml;ndigen Ver&auml;nderung und 
sind so zusagen als <b>Baustelle</b> zu betrachten.
</P>

<P>
Als Beispiel dieses Dokument in seiner <Ref
link="files/web/xml.format.xml" style="color:blue">XML-Form</Ref>. Das sieht
sehr schrecklich aus,
aber wenn man es sich in seinem browser als Quelltext ansieht, dann wird die 
Struktur ersichtlich.
</P>
</Subsection>


<Subsection title="Technischer Kontext - XSL, ANT und Java">
<P>
Haben wir die Daten, die Beschreibungen und die Definition der Struktur der
ganzen Webseite nun in der gleichen(!) Form - XML - gemacht. Dann wollen wir
natürlich unsere Webseiten daraus erstellen. Hier haben wir uns für die
Grundtechnologie XSL entschieden.
</P>
<P>
Die XSL-Stylesheets, die die Umsetzung von XML zu z.B. HTML vornehmen, sind
selbst in XML geschrieben und könnten so sich selbst modifizieren. (Machen wir
im Augenblick nicht.) Aber sie sind flexibel genug, um das zu tun, was wir
wollen.
</P>
<P>
Jetzt kennen wir die Datenbeschreibung (XML), die Übersetzungssprache (XSL) und
nun brauchen wir noch eine Software-Maschine, die die Umsetzung auch vollzieht.
Die Entscheidung fiel zu Gunsten des Werkzeugs ANT. ANT wird an Hand von
sogenannten Build-Files gesteuert, die selbst wieder in XML geschrieben sind.
</P>
<P>
Das wird massiv benutzt, indem wir automatisch neue Build-Files erzeugen um
automatisiert abhängige Webseiten von Webseiten zu erzeugen. In den Build-Files
selbst kann man ANT wieder neu anstarten und fertig ist eine Kaskadierung von
Übersetzungsvorgängen.
</P>
<P>
Es ist also einerseits, dass ANT über XML-Dateien gesteuert wird. Andererseits
ist es ein kleines kompaktes Werkzeug, was aber eine Unzahl von schon
vorhandenen Schnittstellen und Prozessen bietet, die wir also nicht extern noch
anfügen müssen. Als Wichtigstes für uns ist der XSL-Prozessor schon mit dabei!
</P>
<P>
Wir können also XSL compilieren, als auch Dateioperationen vornehmen, z.B.
kopieren, packen oder löschen. Damit haben wir nun alles, um automatisch eine
ganze Webseite erzeugen zu können mit minimalstem technischen Aufwand. Was
natürlich damit erkauft wird, dass man sich mit den Technologien XML/XSL/ANT
relativ gut auskennen muss. 
</P>
<P>
Konkret baucht man im Wesentlichen eine relativ neue <a
href="java.sun.com" style="color:blue">Java-Runtime</a>, weil ANT in Java
programmiert ist und das Werkzeug <a href="http://ant.apache.org"
style="color:blue">ANT</a> selbst. Das wäre auch schon alles.
</P>
<P>
Aktuell wird zum Übersetzen der Seiten ANT mit verschiedenen Parametern 
(eigentlich nur der Name des ANT-Targets)
direkt über die Kommandozeile aufgerufen.
</P>
</Subsection>











<Subsection title="Dateien im Netz">

<P>
Im Netz befinden sich folgende Dateien, die man ben&ouml;tigen wird
<ul>
<li>Die DTD's f&uuml;r unsere Seiten sind hier &ouml;ffentlich zug&auml;nglich:
http://www.mxks.de/dtd/XXXXX.dtd.</li>
<li>Das Paket, um sich eigene XML-Exzerpte zu Hause anzusehen, ist hier <Ref
link="files/web/xml.zip"><b>XML-Paket</b> zu finden.</Ref></li>
</ul>
</P>
</Subsection>

<Subsection title="Verschl&uuml;sselung im Netz">
<P>
Man braucht erstens ein Programm wie <a href="http://www.pgp.org">PGP</a>,
<a href="http://www.gnupg.org">GnuPG</a> oder
ein anderes public key privacy Programm. Damit geht es schon, ist aber
umst&auml;ndlich.
</P><P>
Zweitens ist ein Mailprogramm gut, in welches man dieses PGP fest einbinden
kann. Unter Linux nehme ich KMail + GnuPG.
</P><P>
Damit kann man
<ul>
<li>Mails verschl&uuml;sseln</li>
<li>Mail unterzeichnen, damit ihr Inhalt nicht ver&auml;ndert werden kann und
der Absender relativ sicher ist.</li>
</ul>
</P><P>
Das Vorgehen ist in den Hilfefiles der einzelnen Programme meist sehr gut
beschrieben. Auch kann man eine Menge mehr n&uuml;tzliche Dinge damit treiben.
</P><P>
Jeder Nutzer hat ein Schl&uuml;sselpaar, einen &ouml;ffentlichen und einen geheimen
Schlssel genannt public und secret key. Diese sind in den jeweiligen Files
genannt Schl&uuml;sselbund oder key ring zusammengefasst.
</P><P>
Ihr verschl&uuml;sselt eine Nachricht mit EUREM secret key und dem public key des
oder der EMPF&Auml;NGER[S].
</P><P>
Er entschl&uuml;sselt mit EUREM public key und SEINEM/IHREM secret key.
</P><P>
Deshalb h&auml;ngt an meiner Mail mein public key. Wenn ihr mir euren schickt,
dann k&ouml;nnen wir PGP so zusammen nutzen und den Schlapph&uuml;ten die Arbeit
etwas erschweren. Diese Mail ist außerdem unterschrieben, um den wahren
Absender und den Inhalt zu sch&uuml;tzen.
</P>
</Subsection>

</Section>

<Section title="Die XML-Dokumentbeschreibung">
<P>
In diesem Kapitel wird beschrieben, wie eine Datei in XML geschrieben werden
muss, damit mit unserem System als XML-Dokument automatisch in die gesamte
Übersetzung eingepasst wird. Natürlich ist es auch möglich Dokumente jeder Art
einfach über einen Link von jeder Seite aus erreichbar zu machen. Aber damit
verliert man gerade den Vorteil des Automatismus.
</P>

<Subsection title="Ausgangspunkt - das Exzerpt">
<P>
Ausgangspunkt des ganzen Projektes waren Exzerpte, also wissenschaftliche
Texte, die wir in verschiedenen Weise unter verschiedenen Gesichtspunkten
dargestellt und verlinkt haben wollten. Z.B. eine HTML-Seite für den normalen
Text (Exzerpt), eine für die Zusammenfassung (Konspekt), einen für die Struktur
der Bearbeitung (Struktur) und die Möglichkeit das Ausgangsmaterial mit
anzuhängen (Original) oder Zusatzpakete (Info).
</P>
<P>
Dabei wollten wir möglichst jede Information nur <em>einmal</em> schreiben und
verschiedene Sichten auf die selben Daten generieren, bzw. diese Exzerpte von
verschieden gruppierten Indexseiten aus erreichen können. Jedesmal den
HTML-Code von Hand zu schreiben und bei Designänderungen, die nicht nur z.B.
über CSS zu behandeln sind, alle betroffenen Seiten zu bearbeiten und keine zu
vergessen, dass schien irgendwann zu öde und fehleranfällig.
</P>
</Subsection>

<Subsection title="Was das Format nicht ist!">
<P>
Unser Format ersetzt nicht die übermächtigen Textformatierungen von moderner
Textverarbeitung, aus der man im Allgemeinen auch nach HTML exportieren kann.
Schon gar nicht ersetzt es naturwissenschaftliche Dokumentformatierung wie
LaTEX. Darum geht es auch gar nicht.
</P>
<P>
Es ist gerade ein Vorteil, das man hier nur sehr wenige Tags lernen muss, die
im Wesentlichen den Tags von HTML selbst entsprechen. Es ging um
(wissenschaftliche) Fließtexte ohne Formeln, die eben genau mit der Formatierung
auskommen, die hier umgesetzt worden ist (Obwohl man ja einfach z.B. MATHML
benutzen kann.) Es ist aber auch kein Problem, weitere Tags zu definieren und in
DTD und XSL einzubauen.
</P>
</Subsection>

<Subsection title="Was ist ein Tag?">
<P>
Ein Tag ist eine Beschreibung, bzw. Markierung, seines Inhaltes.
Der 'Cite'-Tag sagt an, dass alles, was in ihm steht, ein Zitat ist und als
Zitat  dargestellt werden soll. XML-Dokumente sind so gesehen nichts anderes
als verschachtelte Tags, in welche man den eigentlichen Inhalt plaziert. Das
ist das Gleiche wie bei HTML, wenn auch flexibler und strenger.
</P>

<P>
Technisch gesehen ist ein Tag von der Form:
</P>
<P>
&lt;TAGNAME&gt;<br />
Inhalt des Tags, das k&ouml;nnen Text oder weitere Tags sein.<br />
&lt;/TAGNAME&gt;<br />
</P>
<P>
Also was ich sagen will, das kommt in spitzte Klammern. Der zweite Tag-Teil
sagt an, wann
der Inhalt, der z.B. als Zitat beschrieben wurde, zu Ende ist. Fehlt dieser
Abschlussteil, so ist das Dokument nicht <b>wohlgeformt</b> und wird nicht
verarbeitet.
</P>

<P>
Tags k&ouml;nnen nur vollst&auml;ndig in einander geschachtelt werden und
d&uuml;rfen sich nicht
&uuml;berlappen! Es gibt auch leere Tags, d. h. solche, die keinen Inhalt
haben. Das
sind dann meistens reine Formatierungs-Tags wie z.B. 'Zeilenumbruch'
&lt;br /&gt;. Diese haben eine zweite spezielle Kurzschreibweise &lt;TAGNAME
/&gt; und besitzen keinen Abschluss-Tag. Diese Kurzschreibweise ist das gleiche 
wie &lt;TAGNAME&gt;&lt;/TAGNAME&gt; - also ohne Inhalt.
</P> 

<P>
Tags haben auch sogenannte <b>Attribute</b> oder Eigenschaften, wie zum Beispiel
vom
Zitat die Seitennnummer und die Quelle des Zitats. Eigenschaften k&ouml;nnen
notwendig oder auch optional (nicht notwendig) sein. Im Folgenden bezeichnet
'<b>*</b>' ein Stern hinter dem Namen ein notwendiges
Attribut. Dieser Stern ist dann aber <u>nicht</u> als Attributname anzugeben!
</P>
<P>
Die Attribute eines Tags werden formal im Text angegeben in der Art
TAGNAME/@ATTRIBUTNAME. Untertags werden formal angegeben
OBERTAGNAME/UNTERTAGNAME. Ein 
Untertag ist ein Tag, der in einem anderen Tag, Obertag genannt wird, 
eingeschlossen ist. Die heißt auch er ist verschachtelt.
</P>
<P>
&lt;Obertag&gt;
<blockquote>
&lt;Untertag attribut1="value1" &gt;
<br />...<br />
&lt;/Untertag&gt;
</blockquote>
&lt;/Obertag&gt;
</P>
<P>
Das Attribut wird somit angegeben:
<code>Obertag/Untertag/@attribut1="value1"</code>. Diese Art der Beschreibung
nennt sich auch <b>XPath</b> und kann als Bestandteil von XML angesehen werden.
Mit Hilfe dieses Formalismus lassen sich alle m&ouml;glichen Tags und ihre
Attribute
in einem Dokument adressieren, wobei noch viele andere Mechanismen hierf&uuml;r
benutzt werden.
</P>

</Subsection>

<Subsection title="Das Zitat - Cite">

<P>
Der erste Tag, den wir uns ansehen, ist Cite - ein Zitat. Der Inhalt, also
alles das, was zwischen Anfangstag &lt;Cite&gt; und Endtag &lt;/Cite&gt; steht,
wird als Text des Zitats betrachtet. 
</P>
<P>
Dann gibt es noch diverse Nebeninformationen, die am Zitat hängen, wie die
Quellenangabe (z.B. Werkstitel und Seite) oder eine zugehörige Fußnote.
Auslassungen müssen gekennzeichnet werden, sowie eigene Hervorhebungen. Das
werden wir uns nun ansehen in seiner technischen Umsetzung.
</P>

<Subsection title="Feste Nummerierung der Fu&szlig;note">
<P>
Betrachten wir zuerst das Zitieren mit jeweiliger textueller Angabe der Quelle
&uuml;ber das Attribut <code>@src</code> und der Z&auml;hlen Nummerierung der
zugeh&ouml;rigen Fu&szlig;noten.
</P>

<P>
&lt;Cite src="die Quelle" page="die Seitennummer"  footnote="Nummer der
Fu&szlig;note"&gt;<br/>
<br />
das Zitat<br />
<br />
 &lt;/Cite&gt;<br />
<br />
Also sind 'src','page' und 'footnote' optionale Attribute, da sie nicht mit
einem Stern * gekennzeichnet sind.
</P>

<P>
So sieht es dann aus:
<Cite src="Quelle" page="23" footnote="1">
Dies ist ein Zitat.
Dies ist ein Zitat.
Dies ist ein Zitat.
Dies ist ein Zitat.
</Cite>
</P>

<P>
Es ist zu beachten, dass die angegebene Nummer der Fu&szlig;note f&uuml;r den Modus des
Z&auml;hlens von Fu&szlig;noten benutzt wird. Beim automatischen Z&auml;hlen
wird mittels des Zitatkataloges automatisch eine entsprechende Fu&szlig;note
kreiert, die als Zitatnachweis im Anhang aufgeführt werden kann.
</P>
</Subsection>

<Subsection title="Auslassungen im Zitat - CBr und CDot">
<P>
Wenn man in einem Zitat Auslassungen hat, sollte man, anstatt die Punkte
im Code zu machen, den <b><code>CBr</code></b>-Tag oder
<b><code>CDot</code></b> verwenden. Oftmals
gibt es verschiedene Vorgaben f&uuml;r die Formalien und so ist es besser,
einem zentralen angepassten XSL-Stylesheet die Darstellung zu &uuml;berlassen.
</P>

<Cite>
Hier machen wir jetzt eine Auslassung mit &lt;CDot /&gt; und das sieht <CDot />
aus. Oder wir haben eine l&auml;ngere Auslassung <CBr />
machen daf&uuml;r den Cite Break &lt;CBr /&gt; und fahren fort zu zitieren.
</Cite>
</Subsection>

<Subsection title="Hervorhebung im Zitat - Cite/@em">
<P>
Oftmals sind in Zitaten Hervorhebungen des Autors selbst, und man will aber auch
eigene Hervorhebungen machen. Im Augenblick sind die des Autors als
&lt;i&gt;<i>kursiv</i>&lt;/i&gt;
gekennzeichnet und damit nicht sichtbar, da das Zitat selbst in HTML in G&auml;nze
kursiv gesetzt ist. Der Tag f&uuml;r das Kursivsetzen ist in HTML der
Italic-Tag, daher das 'i'.
Eigene Hervorhebungen sollten mit dem Bold-Tag, d. h.
&lt;b&gt;<b>Fettschrift</b>&lt;/b&gt; gekennzeichnet sein, mit dem Hinweis
'[Herv. v. XXX]'.
</P>

<P>
Das Zitat hat ein weiteres Attribut bekommen <b><code>@em</code></b>. Damit wird
gesagt, dass im Zitat eigene Hervorhebungen sind. Da dies auch verschiedenen
Formalien unterliegt, wurde die Darstellung dieser Angabe auch dem zentralen
Stylesheet &uuml;berlassen.
</P>
<Cite em="XXXX">
In diesem Zitat hat das em-Attribut den Wert 'XXXX' und dieser ist der Name
oder das K&uuml;rzel desjenigen, welcher die <b>Hervorhebung</b> oder auch
Emphase genannt macht.
</Cite>

</Subsection>


<Subsection  title="Verwendung des Zitatkataloges - CiteCatalog(Ref)">

<P>
Den Zitatkatalog kann man einfach als komfortable Aufz&auml;hlung der zitierten
Werke verwenden. 
Die zweite M&ouml;glichkeit ist, pro Zitat oder automatischer Fu&szlig;note
eine Fu&szlig;note in der Reihenfolge wie im Quelltext fortaufend erzeugen zu
lassen.
</P>


<P>
Der Zitatkatalog <code>CiteCatalog</code> enth&auml;lt die Beschreibung
f&uuml;r in Zitaten verwendete
Literatur. Pro Werk existiert genau ein <code>CiteCatalogItem</code>,
welches ein <code>Abstract</code> enth&auml;lt, mit der vollst&auml;ndigen
Beschreibung. Jeder dieser Eintr&auml;ge enth&auuml;lt notwendigerweise eine
im Zitatkatalog eindeutige Zeichenkette als Identifikation und Referenz, das
Attribut <code>@cid</code>.
<ul>
<li>CiteCatalog

<ul>
<li>CiteCatalogItem cid="Referenzzeichenkette"
<ul>
<li>Abstract author="Nachname" title="Titel" ...</li>
</ul>
</li>
<li>...</li>
<li>CiteCatalogItem</li>
</ul>
</li>
</ul>
Der Katalog sollte m&ouml;glichst am Anfang oder am Ende in das XML-Dokument
eingef&uuml;gt werden. Ebenso darf nur <b>ein einziger</b> Katalog-Tag existieren
pro XML-Dokument.
</P>

<P>
Hier nun unser Testkatalog.<br />
&lt;CiteCatalog"&gt;<br /><br />

&lt;CiteCatalogItem cid="nudel""&gt;<br />
&lt;Abstract<br />
	authorsfirst="First"<br />
	author="Name"<br />
	title="Der Titel des Werkes"<br />
	edition="2.Aufl."<br />
	date="1840"<br />
	location="Zumbelstadt"<br />
	volume="Band 2"<br />
/"&gt;<br />
&lt;/CiteCatalogItem"&gt;<br /><br />

&lt;CiteCatalogItem cid="popo""&gt;<br />
&lt;Abstract<br />
	authorsfirst="First"<br />
	author="Name"<br />
	title="Der Titel des zweiten Werkes"<br />
/"&gt;<br />
&lt;/CiteCatalogItem"&gt;<br />



&lt;/CiteCatalog"&gt;<br />


</P>

<P>
Infolge sind ein paar Zitate definiert, mit welchem die Wirkungsweise deutlich
gemacht werden soll. Die Zitate benutzen anstatt dem Attribut @src, in welchem
die Quelle textuell angegeben wird einen Verweis in den Zitatkatalog, um die
Quelle zu bestimmen. Dieses Attribut heißt <b>@cref</b> und korrespondiert dem
<code>@cid</code> der ausgew&auml;hlten Zitatquelle.
</P>

<P>
&lt;Cite cref="Verweisk&uuml;rzel"  page="Nummer der
Seite"&gt;<br/>
<br />
das Zitat<br />
<br />
 &lt;/Cite&gt;<br />
</P>
<Comment>
Im Gegensatz zum festen Nummerieren gibt es noch keine M&ouml;glichkein, einen 
weiteren Fu&szlig;notentext au&szlig;er  der Quellenangabe zu kreieren.
</Comment>

<P>
Ein <code>@cref</code>-Eintrag muss im Katalog <i>eindeutig</i> sein. In
unserem Falle
verwenden wir die K&uuml;rzel "nudel" und "popo" als die Eintr&auml;ge.
</P>
<P>
&lt;Cite cref="nudel" em="P.H." page="5f"&gt;<br />
Der Inhalt des Zitates mit Hervorhebung '@em="P.H."' und Seitenangabe
'@page="5f"'
&lt;/Cite&gt;<br /><br />

&lt;Cite cref="popo"&gt;<br />
Der Inhalt des Zitates<br />
&lt;/Cite&gt;<br /><br />

&lt;Cite cref="nudel"&gt;<br />
Der Inhalt des Zitates<br />
&lt;Cite&gt;<br />

</P>
<P>
Und das sieht nun so aus:
</P>


<Cite cref="nudel" em="P.H." page="5f">
Der Inhalt des Zitates mit Hervorhebung '@em="P.H."' und Seitenangabe
'@page="5f"'
</Cite>

<P>

</P>

<Cite cref="popo">
Der Inhalt des Zitates
</Cite>

<Cite cref="nudel">
Der Inhalt des Zitates
</Cite>


<P>
Es gibt also zwei Versionen, wie mit dem Katalog gearbeitet werden kann.
Daf&uuml;r gibt es den Hilfstag <b><code>CiteCatalogRef</code></b>, welcher
den Ort und die Art der Ausgabe bestimmt.
<ul>
<li>CiteCatalogRef style="strict|compact"</li>
</ul>
</P>

<Subsection title="Fortlaufende Fu&szlig;noten - @style=''strict''">
<P>
In der ersten Version wird wird pro Zitat eine Fu&szlig;note
als Verweis auf den Originaltext am Ende des
Dokumentes angehangen. Dies geschieht mit dem Einf&uuml;gen des
<b><code>CiteCatalogRef</code></b>-Tags an der entsprechenden
Stelle. Dies sollte am Besten ein <code>Pagefoot</code> sein,
den wir hier nun auch verwenden. Da dies eine sehr strikte Variante
des Zitierens ist, wird das 'style'-Attribut von <code>CiteCatalogRef</code>
auch so gesetzt: '@style="strict"'.
</P>
<P>
Gleichzeitig werden in diese Nummerierung alle Fu&szlig;noten mit automatischer
Z&auml;hlung einbezogen und dargestellt. Das sind die Fu&szlig;noten mit
<code>Footnote/@class="auto"</code>.
</P>

<Pagefoot>

<CiteCatalogRef style="strict" />

</Pagefoot>
</Subsection>

<Subsection title="Nur Quellenauflistung - @style=''compact''">
<P>
Bei der zweiten Version wird einfach nur der Katalog in der
Standardform ausgegeben. Daf&uuml;r wird '@style="compact"' gesetzt.
Da hier <b>keine</b> Verlinkung zwischen Zitat und dem Werk, aus
welchem zitiert wurde, stattfindet, sollte man die Attribute
'Cite/@page' und 'Cite/@src' bem&uuml;hen, um die Seite (page) und die
Quelle (src) kenntlich zu machen. Diese Attribute werden in Version
1 <b>nicht</b> ausgewertet, d. h. visualisiert.
</P>

<Pagefoot>
<CiteCatalogRef style="compact" />
</Pagefoot>

</Subsection>

<CiteCatalog initials="P.H.">

<CiteCatalogItem cid="nudel">
<Abstract
	authorsfirst="First"
	author="Name"
	title="Der Titel des Werkes"
	edition="2.Aufl."
	location="Zumbelstadt"
	date="1840"
	volume="Band 2"
/>
</CiteCatalogItem>

<CiteCatalogItem cid="popo">
<Abstract
	authorsfirst="First"
	author="Name"
	title="Der Titel des zweiten Werkes"
/>
</CiteCatalogItem>



</CiteCatalog>
</Subsection>

</Subsection>

<Subsection title="Internes Zitat - cite">
<P>
Nun will ich zitieren &lt;cite&gt;und das zitierte&lt;/cite&gt; f&uuml;gt sich
einfach ein. Das sieht dann so aus:
</P>
<P>
Nun will ich zitieren <cite>und das zitierte</cite> f&uuml;gt sich
einfach ein.
</P>


<P>
Will man innerhalb <cite>eines Textabschnittes zitieren</cite>, so benutzt man
den &uuml;blichen HTML-cite-Tag, der aber nun als XML interpretiert wird. Diese
inline Zitat macht <b>keinen</b> eigenen Absatz, sondern f&uuml;gt sich in den
Textflu&szlig; ein und umfasst alles automatisch mit Quoten "...".
</P>
<P>
Man beachte, dass hier die Gro&szlig;- und Kleinschreibung in XML beachtet wird.
Klein
geschriebenes 'cite' ist ein inline Zitat und <b>ohne</b> Attribute, ein
gro&szlig;es
'Cite' ist eines mit eigenem Absatz.
</P>
</Subsection>


<Subsection title="Absatz - P und PP">

<P>
&lt;P&gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/P&gt;<br />
<br />
</P>

<P>
<code><b>P</b></code> bezeichnet einen Absatz oder Paragraph.
Dabei geht der Absatz wegen m&ouml;glicher Seitenbemerkungen nur auf 75% der
Seitenbreite. Will man &uuml;ber die gesamte Seite schreiben, dann muss man den
Tag
<code><b>PP</b></code> verwenden.
</P>

<P>
So sieht es dann aus:
</P>

<P>
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
Dies ist ein Absatz.
</P>

<PP>
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
Dies ist ein Absatz &uuml;ber die volle Breite.
</PP>

</Subsection>

<Subsection title="Seitenbemerkung - CommentHead">
<P>
Die Seiten- oder Randbemerkung sollte m&ouml;glichst <b>kurz</b> und
pr&auml;gnant sein,
da sie auch f&uuml;r die Struktur&uuml;bersicht Verwendung findet. Man sollte
sie
<b>nicht</b>
als Konspekt benutzen, da dies wieder eine ganz andere Form ist.
</P>

<P>
&lt;CommentHead title*="Inhalt der Bemerkung" &gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/CommentHead&gt;<br />
<br />
</P>

<CommentHead title="Inhalt der Bemerkung">
<P>
Dies ist ein Absatz, an dessen Seite eine Bemerkung platziert werden soll.
Dies ist ein Absatz, an dessen Seite eine Bemerkung platziert werden soll.
Dies ist ein Absatz, an dessen Seite eine Bemerkung platziert werden soll.
Dies ist ein Absatz, an dessen Seite eine Bemerkung platziert werden soll.
</P>
</CommentHead>

</Subsection>


<Subsection title="Kommentar - Comment">

<P>
&lt;Comment&gt;<br/>
<br />
der Inhalt des Kommentars<br />
<br />
 &lt;/Comment&gt;<br />
<br />
</P>

<Comment>
<P>
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
Dies ist ein Kommentar.
</P>
</Comment>

</Subsection>





<Subsection title="Fu&szlig;note - Footnote">

<Subsection title="Feste Nummerierung - vorgegebenes Dokument">
<P>
Feste Nummerierung ist vorgesehen, wenn man z.B. Originale in XML-Form
&uuml;bertr&auml;gt
und die Nummerierung der Fu&szlig;noten beibehalten will. Dann ist man selbst
verantwortlich, wo die Fu&szlig;noten erscheinen werden. So macht man zuerst
einen
Link, auch Refernz gennannt, und dann die eigentliche Fu&szlig;note, wo man sie
hinhaben m&ouml;chte. Eine Fu&szlig;note allgemein hat folgende Form:
</P>
<P>
&lt;Footnote number="Nummer der Fu&szlig;note" class="Klasse der Fu&szlig;note"
&gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/Footnote&gt;<br />
<br />
</P>
<P>
Eine Fu&szlig;note ist keine Endnote, jedenfalls muss sie es nicht sein. D. h.,
dass
man
den Inhalt der Fu&szlig;note dorthin setzen kann, wo man ihn haben will, und
nicht nur
an das Ende des HTML-Files. Dazu ben&ouml;tigt man 2 Fu&szlig;noten Tags.
<ol>
<li><b>Referenzfu&szlig;note</b>
ist ein Tag zum Festlegen der Verlinkungsstelle. Hier muss die 'class' nicht
angegeben  werden, sie ist automatisch 'class="ref"', welches bedeutet, dass
dieser Fu&szlig;noten Tag nur die Referenz auf den eigentlichen Inhalt
darstellt.
Der Inhalt dieses Tags kann das letzte Wort des mit der Fu&szlig;note
versehenden
Textes sein.
</li>
<li><b>Inhaltsfu&szlig;note</b> Der Tag zum Darstellen des Inhaltes der
Fu&szlig;note
selbst. Dieser
Tag hat die 'class="noref"' und er umschlie&szlig;t den darzustellenden
Inhalt.</li>
</ol>
</P>
<P>
Die <b>Nummer</b> der Fu&szlig;note sollte fest gegeben werden, oder man
verl&auml;sst sich
auf eine interne Z&auml;hlung. Beide Z&auml;hlungen sollten sich nicht
&uuml;berschneiden.
Intern  gez&auml;hlten wird ein Unterstrich nachgestellt.
</P>

<P>
Wird keine <b>Klasse</b> angegeben, dann ist die Fu&szlig;note automatisch ein
Verweis und das ist gleichbedeutend mit der Angabe <code>@class="ref"</code>.
Soll hingegen der Inhalt der Fu&szlig;note beschrieben werden, so hat
der Tag die Angabe <code>@class="noref"</code>. 
</P>
<P>
Die Referenzfu&szlig;note selbst muss keinen Inhalt
haben, man kann sie all einen einzigen Tag in verkürzter Form darstellen.
</P>
<P>
Dies ist die Referenzfu&szlig;note mit fester Nummerierung<br /><br />

&lt;Footnote number="255"&gt;<br />
<Footnote number="255">
Das Ende dieses Texte wird mit der Fu&szlig;notenreferenz
versehen.
</Footnote><br />
&lt;Footnote&gt;.<br />
Und nun
eine mit <Footnote>automatischer Nummerierung</Footnote>.
</P>
<P>
Hier habe wir einen Text mit einem einfachen Fu&szlig;notentag als Referenz.
&lt;Footnote class="ref" number="88" /&gt;<Footnote class="ref" number="88" />
Das heißt, eine Referenzfu&szlig;note muss selbst nicht noch Text als Tag mit
&ouml;ffnendem
und schlie&szlig;endem Tag einfasse.
</P>
<P>
Dies ist die 2. oder eigentliche Fu&szlig;note.<br /><br />
<Footnote number="255" class="noref">
&lt;Footnote number="255" class="noref"&gt;<br /> Das ist nun der Inhalt oder
Text der Fu&szlig;note selbst.<br />
&lt;Footnote&gt;</Footnote>
</P>
<P>
Aber nat&uuml;rlich kann man die Fu&szlig;noten auch gerne im Pagefoot Tag
sammeln am Ende
einer <Footnote number="256">Seite.</Footnote>
</P>
</Subsection>

<Subsection title="Automatische Nummerierung - eigenes Dokument">

<P>
Bei dieser Art der Fu&szlig;noten erspart man sich das Nummerieren und
umst&auml;ndliche
Auseinanderziehen der Fu&szlig;note in zwei separable Tags. Wir brauchen also
nur 
einen Tag pro Fu&szlig;note, welcher durch die 'class="auto"' gekennzeichnet
ist.
</P>
<P>
&lt;Footnote class="auto" &gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/Footnote&gt;<br />
<br />
</P>

<P>
<b>Aber</b> die Fu&szlig;noten werden gesammelt am Ende des Dokumentes,
bzw. wo <code>CiteCatalogRef</code> mit @style="strict",
in der vorkommenden Reihenfolge dargestellt und an dieser Stelle ihr Inhalt mit
der fortlaufenden Nummer indiziert.
</P>
<P>
Weiterer Vorteil ist, diese Nummerierung f&uuml;gt sich in die der Zitate ein,
welche
auf den Zitatkatalog verweisen, falls es solche gibt. D. h. dort, wo der Tag
<code>CiteCatalogRef</code> im Seitenquelltext steht, das sollte das Ende des
Dokumentes sein, dort werden auch die automatischen Fu&szlig;noten dargestellt.
</P>
</Subsection>

</Subsection>

<Subsection title="Seitenfu&szlig; - Pagefoot">
<P>
&lt;Pagefoot&gt;<br /><br />
&lt;Footnote number="Nummer der Fu&szlig;note" class="noref" &gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/Footnote&gt;<br />
<br />
&lt;/Pagefoot&gt;<br />
</P>
<P>
Insbesondere im Zusammenhang mit den Fu&szlig;noten existiert ein Tag, welcher
das 
Ende
einer Seite bez&uuml;glich des normalen Flie&szlig;textes kennzeichnet. Wie
oftmals ist
dieser Abschnitt mit einer horizontalen Linie gekennzeichnet und hier sollte man
die Fu&szlig;noten mit ihren eigentlichen Inhalten platzieren.
Es ist auch sinnvoll diesen Abschnitt mit der Seitenangabe zu verbinden. Ein 
Seitenfu&szlig; sieht
dann wie folgt aus:
</P>
<Pagefoot>
<Footnote class="noref" number="1">
Dies ist der eigentliche Inhalt der Fu&szlig;note 1 eines Zitates im
entsprechenden Abschnitt dieses Dokumentes.
</Footnote>

<Footnote class="noref" number="256">
Dies ist der eigentliche Inhalt der Fu&szlig;note 256.
</Footnote>
</Pagefoot>
</Subsection>




<Subsection title="Wichtiger Punkt - CardinalPoint">
<P>
Dieser Tag sollte wirklich <b>nur</b> f&uuml;r ganz wichtige Sachen verwendet
werden
und auch nicht zuviel Inhalt bekommen. Im Wesentlichen stellt er eine rote
Umrahmung zur Verf&uuml;gung und wird auch in die Struktur&uuml;bersicht
&uuml;bernommen.
</P>

<P>
Man kann in ihm Zitate und auch Paragraphen platzieren.
</P>

<CardinalPoint>
Hier sollten wirklich nur wichtige Sachen rein und zuviele rote K&auml;sten sind
nicht sch&ouml;n.
</CardinalPoint>

</Subsection>

<Subsection title="Dokumentbeschreibung - Abstract">
<P>
Der <code>Abstract</code>-Tag enth&auml;lt die Informationen &uuml;ber die ihn
enthaltene
Datei.
Hier der entsprechende Ausschnitt aus der entsprechenden DTD.
</P>
<P>
&lt;!ELEMENT Abstract (#PCDATA|p|Abstract)*&gt;<br />
&lt;!ATTLIST Abstract<br />
  authorshort 	CDATA #IMPLIED<br />
  authorsfirst 	CDATA #IMPLIED<br />
  author  	CDATA #IMPLIED<br />
  coauthors    	CDATA #IMPLIED<br />
  email		CDATA #IMPLIED<br /><br />

  title   	CDATA #REQUIRED<br />
  subtitle  	CDATA #IMPLIED<br />
  description   CDATA #IMPLIED<br />
  date    	CDATA #IMPLIED<br /><br />

  type		(original|excerpt)		"original"<br />
  class		(classified|innercircle|official|open) 	"open"<br />
  origin  	CDATA #IMPLIED<br />
  publisher  	CDATA #IMPLIED<br />
  isbn		CDATA #IMPLIED<br />
  volume  	CDATA #IMPLIED<br /><br />

  storage 	CDATA #IMPLIED<br />
  src     	CDATA #IMPLIED<br />
  state   	CDATA #IMPLIED<br />
  version 	CDATA #IMPLIED<br />
  keywords      CDATA #IMPLIED<br />
&gt;
</P>
<P>
Hierbei entsprechen die einzelnen Attribute in der Attributeliste 'ATTRLIST' des
Tags <code>Abstract</code>
den m&ouml;glichen Attributen in der XML-Datei. Die wichtigsten sind Autor
Nachname
'author',
Vorname 'authorsfirst', Titel 'title',
Kurzbeschreibung 'description', sowie Stichworte 'keywords'. In 'storage'
wird die Art der Speicherung eingetragen, z.B. "15KB, rtf, gz".
Der Status 'state' versteht sich von selbst, z.B. "in Arbeit".
</P>

<P>
Manche Attribute wie <code>@title</code> werden einfach nur angezeigt, aber
manche beeinflussen die Darstellung selbst.
</P>

<Subsection title="Abstract/@type=''excerpt''">
<P>
Manchmal gibt es geschachtelte <code>Abstract</code>.
Weshalb der 2. <code>Abstract</code>-Tag? Wenn man als Typ 'excerpt'
eintr&auml;gt, so geht
der
Prozessor davon aus, dass es einen zweiten <code>Abstract</code>-Tag gibt. Im
ersten
<code>Abstract</code> stehen die Daten vom Exzerpt selbst, d. h. sein eigener
Titel usw.
</P>
<P>
Im inneren <code>Abstract</code>, dem 2. stehen dagegen die Daten des
Originalfiles, sein
Titel und Autor usw. Man hat in den seltensten F&auml;llen das Original
selbst in unserer XML-Form, wo soll man sonst die Daten &uuml;ber das Original
herbekommen. Liegt das doch mal in unserer Form vor und hat somit einen
eigenen <code>Abstract</code>, dann wird der Prozessor mit einem Schalter
bei seinem Aufruf darauf aufmerksam gemacht und er holt sich die Daten dann
aus dem Originalfile selbst.
</P>
<P>
Die Originalfiledaten verwende ich &uuml;brigens auch f&uuml;r die Anzeige in
der &Uuml;bersicht-HTML-Seite, der so genannten Indexseite.<br />

&lt;Abstract ...&gt;<br />
Daten f&uuml;r das Exzerpt<br />
<blockquote>
&lt;Abstract ...&gt;
Daten des Originals
&lt;/Abstract&gt;
</blockquote>
&lt;/Abstract&gt;
</P>
</Subsection>

<Subsection title="Abstract/@type=''original''">

<P>
Der andere Typ ist im Moment 'original', wobei nur ein <code>Abstract</code>
erwartet wird.
Wenn ihr <b>kein</b> 'type' Attribut im <code>Abstract</code> angebt, wird
automatisch davon
ausgegangen, dass ihr 'original' gew&auml;hlt habt.
</P>
<P>
Diese File hat folgenden alleinigen <code>Abstract</code>, da es ein Original
ist:<br /><br
/>

&lt;Abstract
<blockquote>
	authorsfirst="Peter"<br />
	author="Heilbronn"<br />
	title="Beschreibung des internen XML-Formates"<br />
	description="Dieses Dokument beschreibt die grundlegenden Tags unseres
internen Exzerpt-Formates um eigene Dateien einbinden zu k&ouml;nnen."<br />
	date="07/2003"<br />
</blockquote>
/&gt;

</P>
</Subsection>

<Subsection title="Langer Zusatz- oder Informationstext - Abstract/P|Cite">
<P>
Eine Beschreibung ist grunds&auml;tzlich im <code>Abstract</code> untergebracht.
Falls eine Beschreibung zu einem Dokument gegeben werden
soll, die länger ist und strukturiert ist, z.B. mit Listen, f&uuml;gt man diese
als Fließtext mit eigenen Paragraphen ein.
<br />
&lt;Abstract<br />
	title="Das Lalala"<br />
	author="Originalautorname"<br />
	authorsfirst="Originalautorvorname"<br />
><br />
&lt;P&gt;
<P>
Hier kommt die Beschreibung hin.
</P>
&lt;/P&gt;
&lt;P&gt;
<P>
Sie kann auch aus mehreren <code>P</code> und <code>Cite</code>-Tags bestehen.
</P>
&lt;/P&gt;
&lt;/Abstract&gt;.
Natrlich kann man beim Exzerpt dem inneren, also dem Original-Abstract-Tag,
und auch dem aeusseren <code>Abstract</code> eine Beschreibung geben.
</P>
<P>
Die Kurzbeschreibung ist der eigentliche <b>Abstract</b>, wie er bei 
Fachver&ouml;ffentlichungen als Begriff verwendet wird. Sie wird im Dokument
selbst 
als <code>Section</code> allem anderen vorangestellt und statisch als 
<code>Section/@title="Kurzbeschreibung"</code> gekennzeichnet.
</P>
<P>
Diese Beschreibung ist &uuml;brigens dass, was in den Indexfiles, d. h. den
&Uuml;bersichtsseiten, als Informationstext zum Link erscheint und in der
Sitemap mit einer Klappbox versehen angesehen werden kann.
</P>
</Subsection>

<Subsection title="Kurzer Zusatz- oder Informationstext -
Abstract/@desctiption">
<P>
Der Text in <code>Abstract/@description</code> ist als Kurzbeschreibung gedacht,
die ohne Schn&ouml;rkel in den Indexseiten dargestellt wird.
Sie wird als Text in der Sitemap
einfach so dargestellt, _ohne_ Klappbox. D. h., wenn er eingetragen wird, dann
bitte sehr kurz.
</P>
</Subsection>

</Subsection>


<Subsection title="Dokument">
<P>
Ein Dokument meint, wenn nicht anders bezeichnet, eine XML-Datei. Diese wird in
eine oder mehrere HTML-Dateien mittels eines oder mehrerer XSL-Stylesheets
&uuml;bersetzt. Jede entstandene HTML-Datei kann man als Sicht auf die
zugrunde liegende XML-Datei auffassen. Die XML-Datei wird auch als Quelldatei
(source) bezeichnet und eine aus ihr resultierende HTML-Datei als Zieldatei
(target). Es wird auch stillschweigend davon ausgegangen, dass diese XML-Datei
unsere DTD benutzt, d. h. die oben erkl&auml;rten Tags in ihrem Zusammenhang.
</P>

<P>
Werden aus einer XML-Datei mehrere Zieldateien, auch HTML-Repr&auml;sentanten
genannt, erzeugt, so ist es oft so, dass bestimmte Tags nur f&uuml;r die eine
Sicht
oder einen Repr&auml;sentanten ausgewertet werden und andere nur f&uuml;r den
anderen.
Zumeist bleibt aber z.B. die Kapitelstruktur unber&uuml;hrt, d. h., die
<code>Section</code>
oder
<code>Subsection</code>-Tags werden in fast jeder Sicht benutzt und ausgewertet.
</P>

<P>
Werden bestimmte Tags fast ausschlie&szlig;lich von einer bestimmten Sicht
benutzt, so
formen sie quasi ein extra Dokument innerhalb des Dokumentes. Dies nennt man
auch inneres Dokument. Davon kann es beliebig (endlich) viele geben. Ein solches
ist z.B. der <span style="color:blue">Konspekt</span> oder die <b>Struktur</b>.
Streng genommen ist die am meisten verwendete Form der Darstellung, das
<span style="color:orange">Exzerpt</span>, auch eine Sicht, wenn auch die
Hauptsicht.
</P>

<Subsection title="Sichten - Struktur">
<P>
Die einzigen bisher
erstellten Sichten sind also <span style="color:orange">Exzerpt</span>, <span
style="color:blue">Konspekt</span> und
<b>Struktur</b>. Eine Sicht
bedeutet technisch, dass die gleiche Datei mit einem anderen Stylesheet
&uuml;bersetzt wird und dabei eine andere Datei, eine andere Sicht auf die selbe
Quelldatei erzeugt.
</P>
<P>
&Uuml;ersetzt man ein
Exzerpt-XML-File, also eines, welches mit der <code>notice.dtd</code> konform
geht, mit dem <code>excerpt.structure.xsl</code> Stylesheet. Dann werden nur die
f&uuml;r die Struktur wichtigen Tags wie z.B. 'CommentHead' dargestellt. Es
entsteht
ein Strukturfile als HTML-Repr&auml;sentant.
</P>
<P>
&Uuml;bersetzt man
das gleiche File mit dem Konspekt-Stylesheet <code>conspectus.xsl</code>, so
wird eine neue Datei erzeugt, in welcher nur die Bestandteile angezeigt werden,
welche im Konspekt-Tag stehen.
</P>
</Subsection>



<Subsection title="Conspectus - Konspekt als ''innere'' oder eigene Datei">
<P>
&lt;Conspectus style="exclusive|inclusive"&gt;<br />
<br />
&lt;/Conspectus&gt;
</P>
<P>
Ein Konspekt ist eine inhaltliche Zusammenfassung eines Textes gegen&uuml;ber
einem
Exzerpt, welches quasi eine zitatorientierte Zusammenfassung ist und auch meist
viel umf&auml;nglicher als ein Konspekt daherkommt. Man sollte sich also kurz
fassen.
</P>
<P>
Ein Konspekt kann eine andere Datei als das Exzerpt sein, muss es aber nicht.
Das Wichtige ist, dass man alles, was im Konspekt erscheinen soll, im
Konspekt-Tag einschlie&szlig;t.
</P>
<P>
Dieser Tag sollte <b>innerhalb</b> von Abschnitten oder Unterabschnitten stehen,
diese nicht umfassen. Ansonsten kann man innerhalb des <b>&lt;Conspectus&gt;</b>
Tags alle anderen Tags au&szlig;er  <code>Section</code>,
<code>Subsection</code> und Fu&szlig;noten
verwenden.
</P>
<P>
Also kann man den Konspekt auch aus dem Exzerpt-file generieren. Dabei wird die
gleiche Kapitel- oder Abschnittseinteilung genommen wie beim Exzerpt <b>und</b>
es gibt automatisch eine Verlinkung zwischen den &Uuml;berschriften mit den
kleinen
'>>E' oder '>>K' gekennzeichnet. Alles, was in der Exzerptdatei innerhalb von
Konspekt-Tags steht, wird in den Konspekt &uuml;bernommen und erscheint
im Allgemeinen <b>nicht</b>
im umgesetzten Exzerpthypertextfile. Also werden zwei separate HTML-Dateien
erstellt, eines f&uuml;r das Exzerpt und eines f&uuml;r den Konspekt.
</P>
<P>
Das 'style' Attribute sagt nun, ob der Inhalt des Konspekt-Tags ausschließlich
'style="exclusive"' nur im Konspektfile dargestellt werden soll, oder, ob er
ebenso im Exzerptfile zu sehen sein soll. Dies betrifft nat&uuml;rlich z.B. auch
ein
zugeh&ouml;riges Strukturfile. Das 'style' Attribut macht nat&uuml;rlich nur
Sinn, wenn
der Konspekt als <i>innere</i> Datei, also als Tag-Folge innerhalb des
Exzerptfiles definiert wird.
</P>
<P>
Hier nun ein live Beispiel von einem Exzerpt, welches als innere Dokumente einen
Konspekt und eine Struktur definiert hat. Dazu gibt es noch mehrere
Originalfiles, welche in HTML-Form vorliegen und also nur kopiert werden. Der 
folgende Abschnitt befindet sich im entsprechenden <b>Indexfile</b>, welches 
auf unser Dokument als &Uuml;bersichtsseite verweist (dazu sp&auml;ter mehr).
</P>

<P>
&lt;<b>IndexItem</b>
src="mxks/excerpt/peter2Postone.ZeitArbeitUndGesellHerr.xml"<br 

/>
<blockquote>
           dest="files/other/peter2Postone.ZeitArbeitUndGesellHerr.html"<br />
	   base="../.."<br />
	   stylesheet="excerpt/excerpt.xsl"<br />
	   origsrc="mxks/excerpt/orig/Postone.vorwort.htm"<br />
	   origdest="files/other/Postone.vorwort.htm"<br />
	   style="actual"<br />
</blockquote>
&gt;<br />
<blockquote>
&lt;<b>DocInfo</b> name="structure"<br />
<blockquote>
	 src="mxks/excerpt/peter2Postone.ZeitArbeitUndGesellHerr.xml"<br />
	
dest="files/other/peter2Postone.ZeitArbeitUndGesellHerr.structure.html"<br />
	 base="../.."<br />
	 stylesheet="structure/excerpt.structure.xsl"<br />
	 buildmode="build"<br />
</blockquote>
/&gt;<br />
&lt;<b>DocInfo</b> name="conspectus"<br />
<blockquote>
	 src="mxks/excerpt/peter2Postone.ZeitArbeitUndGesellHerr.xml"<br />
	
dest="files/other/peter2Postone.ZeitArbeitUndGesellHerr.conspectus.html"<br />
	 base="../.."<br />
	 stylesheet="conspectus/excerpt.conspectus.xsl"<br />
	 buildmode="build"<br />
</blockquote>
/&gt;<br />
&lt;<b>DocInfo</b> name="original"<br />
<blockquote>
	 src="mxks/excerpt/orig/Postone.kap8.htm"<br />
	 dest="files/other/Postone.kap8.htm"<br />
	 base="../.."<br />
	 buildmode="copy"<br />
</blockquote>
/&gt;<br />
&lt;<b>DocInfo</b> name="original1"<br />
<blockquote>
	 src="mxks/excerpt/orig/Postone.prol.htm"<br />
	 dest="files/other/Postone.prol.htm"<br />
	 base="../.."<br />
	 buildmode="copy"<br />
</blockquote>
/&gt;<br />
</blockquote>
&lt;/<b>IndexItem</b>&gt;<br />
</P>

</Subsection>

<Subsection title="Originale und innere Verlinkung">
<P>
Einem Exzerpt kann &uuml;ber den <code>IndexItem</code>-Tag auch ein
Originalfile
zugeordnet werden. Ein Original ist immer eine eigene Datei, nicht wie der
Konspekt.
Ist dies ein Fremdformat, so wird es nur kopiert
(<code>IndexItem/@origbuildmode="nobuild"</code>). Ist es hingegen in unserem
XML-Format, so kann es mit <code>IndexItem/@origbuildmode="build"</code>
&uuml;bersetzt werden. Mit dem Schalter
<code>IndexItem/@origlinkmode="on"</code> wird es automatisch
mit Exzerpt oder Konspekt &uuml;ber die &Uuml;berschriften intern verlinkt.
Ansonsten erreicht man dieses File nur &uuml;ber den Link im Dokumentenkopf des
Exzerpts oder Konspekts.
</P>
</Subsection>



<Subsection title="Baumstruktur eines Dokuments">
<P>
Alle XML-Dokumente haben einen Wurzel-Tag, das heißt, dass dieses der
&auml;u&szlig;erste Tag
ist, der <b>alle</b> anderen enth&auml;lt. Er sagt an, welcher Art das Dokument
ist.
Richtigerweise passiert dies technisch gesehen in der 'DOCTYPE'-Anweisung, sei
hier aber nicht weiter beachtet. Hier nun die echte <a
href="http://www.mxks.de/dtd/notice.dtd" style="color:blue;">DocTypeDefinition
</a>(DTD),die
XML-Formatbeschreibung.
</P>
<P>
Im wesentlichen gibt es im Moment nur die Typen 'Excerpt' und 'Notice'. Dieses
Dokument ist eine Notiz. Der Typ eines Dokumentes bestimmt, wie der Inhalt
dargestellt wird, z.B. den Kopf. Die eigentliche Darstellung von der technischen
Seite her wird mit XSL-Stylesheets generiert, worauf ich aber hier auch nicht
weiter eingehen will.
</P>

<P>
Der am meisten verwendete Dokumenttyp ist das Exzerpt. So ist in unserem
Beispiel dies auch der Wurzel-Tag.
</P>

<P>
&lt;Excerpt &gt;<br/>
<br/>
<br/>
&lt;Section title*="Titel des Kapitels" index="feste Nummerierung" &gt;<br/>
<br />
 &lt;/Section&gt;<br />
<br />
&lt;Section title*="Titel des Kapitels" index="feste Nummerierung" &gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/Section&gt;<br />
<br />
<br />
 &lt;/Excerpt&gt;<br />
<br />
</P>

</Subsection>
</Subsection>

<Subsection title="Kapitel und Unterkapitel - Section, Subsection">

 <P>
&lt;Section title*="Titel des Kapitels" index="feste Nummerierung" &gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/Section&gt;<br />
<br />
Dies ist ein Kapitel. Es kann Unterkapitel aber keine Kapitel enthalten. Es wird
einmal im Inhaltsverzeichnis dargestellt (siehe diese Seite ganz oben) und dann
noch einmal in der Reihenfolge mit seinem Inhalt. Das Kapitel 'Die Tags' ist ein
Beispiel.
</P>

 <P>
&lt;Subsection title*="Titel des Unterkapitels" index="feste Nummerierung"
&gt;<br/>
<br />
der Inhalt<br />
<br />
 &lt;/Subsection&gt;<br />
<br />
Dies ist ein Unterkapitel. Es kann weitere Unterkapitel aber keine Kapitel
enthalten. Unterkapitel m&uuml;ssen sich in einem Kapitel befinden, k&ouml;nnen
aber auch
verschachtelt werden.
</P>
<P>
Es wird einmal im Inhaltsverzeichnis dargestellt (siehe diese Seite ganz oben)
und
dann noch einmal in der Reihenfolge mit seinem Inhalt. Das Unterkapitel 'Kapitel
und Unterkapitel' ist selbst ein Beispiel. Zur Verschachtelung als Beispiel
folgendes Unterunterkapitel 'Nummerierung'.
</P>

<Subsection title="Nummerierung" index="a.)">
<P>
Normalerweise geschieht die Nummerierung automatisch mit arabischen Zahlen. Will
man aber eine besondere angeben, dann benutzt man bei 'Section' und 'Subsection'
das 'index'-Attribut, z.B. <code>@index="a.)"</code>. Es gibt auch die
M&ouml;glichk einen Anfangswert
zu setzen, mit dem 'count'-Attribut.
</P>
<P>
Hier der notwendige "Trick":
&lt;Subsection title="III" index=""&gt; so ist _kein_ Titel und nur die
Nummerierung definiert. Da nur <code>@title</code> ein Link wird und
<code>@index=""</code> die automatische Nummerierung verhindert.
</P>
<P>
&lt;Subsection title="Herder" index="III"&gt;, falls ein Titel gegeben ist und
eine feste Numerierung, also ganz normal angeben.
</P>

</Subsection>
</Subsection>


<Subsection title="Seitenangabe - Page">
<P>
Dieser Tag mit Namen 'Page' ist eine Seitenangabe und kann auch z.B. in Zitaten 
verwendet werden, wenn
man wissen will, wo der Seitenumbruch im Zitat ist. Das einzige Attribut ist 
'number'
und gibt die Seitennummer an. Implizit wird ein HTML-Anker (anchor) angelegt und
dieser hat die Referenz 'pageXXX', 
wobei XXX die Seitennummer repr&auml;sentiert. In unserem Fall ist dies
'page55'. Es wird sowohl 
das Attribut f&uuml;r XHTML <code>a.id="pageXXX"</code> also auch f&uuml;r HTML
<code>a.name="pageXXX"</code> im HTML-Code gesetzt. 
</P>
<P>
&lt;Page number="55" /&gt;
</P>

<P>
Und so sieht das Ganze dann aus:
<Page number="55" />
</P>


</Subsection>



<Subsection title="HTML-Tags">
<P>
Innerhalb z.B. eines Paragraphs kann man <b>alle</b> g&auml;ngigen html-Tags
verwenden,
z.B. 'table', 'br', 'ol', 'b', 'a' ... Man sollte sich aber auf die wichtigsten
beschr&auml;nken, damit eine Konvertierung nicht allzu schwierig wird. Man kann
auch
<b>css-Styles</b> verwenden, welche dann aber eben auch bei der &Uuml;bertragung
halt
schwieriger werden. Man sollte z.B. auf absolute Positionierung verzichten.
Ebenso
ist es nicht ratsam Hypertext-Links zu benutzen, sofern sie keine absoluten
Pfade verwenden, oder man genau wei&szlig; wo das Target-Dokument zu finden ist.
</P>
</Subsection>

<Subsection title="Bild - img">
<P>
Will man ein Bild in ein XML-File unserer Art einf&uuml;gen, so kann man einfach
den normalen HTML-Tag img benutzen.
</P>

<P>
&lt;img src="wo ist es" alt="bildkuerzel" /&gt;
</P>
<P>
F&uuml;r <code>img/@src</code> sollte man einen Ordner vorsehen, der den
gleichen Namen besitzt,
wie das XML-File selbst. Dort sollten alle Bilder oder sonstige zus&auml;tzlich
verlinkte Dateien hineinkommen. Dann kann ich ganz einfach mit einer
Ordnerkopie die Daten in das Webserververzeichnis kopieren.
</P>
<P>
Das Attribut <code>img/@alt</code> beinhaltet die Zeichenkette, die angezeigt
wird, falls
jemand seinen Browser so eingestellt hat, dass Bilder nicht angezeigt werden.
Es ist zwar ein optionales Attribut, sollte aber wegen guten Stiles angegeben
werden und ist auch vom W3C als notwendig angesehen.
</P>
</Subsection>


<Subsection title="Entities">
<P>
Eine Entity ist ein Platzhalter. Mit ihr kann man quasi eine Textersetzung 
durchf&uuml;hren. Sie wird auch benutzt, um Zeichen darzustellen, die sonst von
XML 
als Strukturmerkmal interpretiert wrden. Will man ein
pures Gr&ouml;&szlig;er-Zeichen einf&uuml;gen, 
so ergibt dies einen Fehler, da XML hier glaubt, man will einen Tag &ouml;ffnen.
Daf&uuml;r benutzt man dann die Schreibweise <b>&amp;gt;</b> und 'gt' steht
f&uuml;r 
greater.
</P>
<P>
Jede Entity ist so aufgebaut: &amp;CODE;. Die verschiedenen Codes und 
Abk&uuml;rzungen lassen sich z.B. bei <a 
href="http://selfaktuell.teamone.de/" style="color:blue;">Selfhtml</a>
nachschlagen. So ist das 
Zeichen &amp;, was den Beginn einer Entity definiert, selbst darstellbar als
Entity in der Form: &amp;amp; mit 'amp' f&uuml;r ampersand.
</P>
</Subsection>


<Subsection title="Links - Ref">
<P>
&lt;Ref link*="relativer Zielpfad" anchor="dokumentinterner Anker" title="Name"
&gt;<br/>
<br />
der Inhalt, falls kein Name gegeben ist<br />
<br />
 &lt;/Subsection&gt;<br />
<br />
</P>
<P>
Der 'Ref'-Link arbeitet im Gegensatz zum reinen HTML-Link mit unserer umgebenden
Struktur zusammen. Der letztendliche
absolute Pfad wird &uuml;ber das dem Dokument entsprechenden 'IndexItem' im
zugeh&ouml;rigen Index-File bestimmt. Dieses 'IndexItem' enth&auml;lt eine
'base'-Attribut, welches den relativen Zielpfad zu einem absoluten erg&auml;nzt.
Damit soll ein bisschen Hilfe f&uuml;r den Linksalat gegeben werden.
</P>
<P>
Hat man einen externen oder sonstwie absoluten Link, dann sollte man im
Augenblick den normalen HTML-Link verwenden.
</P>
<P>
Hier nun nocheinmal den Link zu unserer
<Ref
link="files/web/xml.format.xml" anchor="link1" title="NAME">XML-Form</Ref>.
</P>
<P>
Todo:<br />
Es ist geplant, dies noch weiter zu vereinfachen, indem f&uuml;r bestimmte
Dokumente
eindeutige Namen vergeben werden, mit deren Hilfe selbst die relative Pfadangabe


automatisch herausgefunden werden kann. Dies ist aber noch zu tun.
</P>

<P>
<Footnote class="noref">Der Inhalt der internen Nummerierung</Footnote>
<Footnote number="255" class="noref">Der Inhalt der festen
Nummerierung.</Footnote>
</P>

</Subsection>

</Section>

<Section title="Ansehen von XML ohne Compiler" anchor="ohnecompiler">
<P>
Da nun einige mit dem XML-Format arbeiten m&ouml;chten, ergibt sich die
Schwierigkeit, sich sein File vern&uuml;nftigen anzusehen. Dies sollte f&uuml;r
moderne
Browser zu l&ouml;sen sein.
</P>
<P>
Anbei ist ein <Ref link="files/web/xml.zip">XML-Paket</Ref> file mit den
n&ouml;tigen
Zutaten. Es enth&auml;lt die
entsprechenden Stylesheets (XSL) und Dokumentbeschreibungen (DTD), sowie ein
Test XML-File mit Namen <code>xml.format.xml</code>.
</P>
<P>
Also:
</P>
<Subsection title="Entpacken und Test">
<P>
1. Entpacken des gepackten Paketes in einen am besten neuen Ordner.<br />
2. &Ouml;ffnen des Files <code>xml.format.xml</code> im Browser.
</P>
<P>
Nun sollte man das File in unserer bekannten Form sehen k&ouml;nnen. Bei mir
mit dem
Mozilla 0.9.8 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.8)
Gecko/20020204) funktioniert das.
</P>

<P>
Wenn man das Servicepack(!) f&uuml;r XML von Micors*ft installiert, dann kann
man 
sich
im IE 5 die Files am besten von den mir probierten Browsern darstellen. Vorher
ist da nichts zu machen, aber auch gar nichts.
</P>

<Comment>
Bei der rasanten technischen Entwicklung ist eben gesagtes sicherlich schon
lange &uuml;berfl&uuml;ssig.
</Comment>

</Subsection>

<Subsection title="Eigene Datei vorbereiten">
<P>
Wie man nun ein eigenes File so ansehen kann, kann man sich am Beispiel
unseres <code>xml.format.xml</code> ansehen. &Ouml;ffnet man es in einem
Editor(!), dann kann
man sich den Quelltext ansehen. &Ouml;ffnet man das File im Browser und
l&auml;sst
sich den Quelltext anzeigen, so sieht man meistens auch den XML-Quelltext.
</P>
<P>
1. das eigene File in den Ordner mit den DTD- und XSL-Dateien kopieren<br />
2. folgende 3 Zeilen sollten als erste(!) Zeilen im File eingetragen werden.
</P>
<P>
&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />
&lt;!-- DOCTYPE Excerpt SYSTEM "notice.dtd" --&gt;<br />
&lt;?xml-stylesheet type="text/xsl" href="excerpt/excerpt.browser.xsl"?&gt;
<br />
</P>
<P>
3. speichern und sich das File im Browser ansehen.
</P>
</Subsection>
<Subsection title="Erkl&auml;rung">
<P>
Ok, nun noch eine kurze Erkl&auml;rung:
1. Zeile ist ein Muss als erste Zeile in jedem XML-File, sie beschreibt, dass
dieses File ein XML-File (?xml) ist, von welcher version (1.0) und mit
welchem Zeichensatz (ISO-8859-1, mit deutschen Umlauten).
</P>
<P>
2. Zeile beschreibt den Dokumententyp. Hier wird der Name das Wurzelknotens,
das ist der erste und &auml;u&szlig;erste Tag (z.B. Exzerpt) bekannt gemacht und
gesagt, wo
sich die Dokumentbeschreibung findet (SYSTEM "notice.dtd"). Im Augenblick
macht das Validieren gegen unsere DTD noch solche Probleme, dass die
Zeile erst einmal nicht benutzt wird.
</P>
<P>
3. Zeile nun sagt, welchen Stylesheet man automatisch benutzen will
(?xml-stylesheet) und wo sich der Stylesheet in Textform findet
(excerpt.browser.xsl). Diese Zeile benutzt der Browser um nun seine
Konvertierungsmaschine von XML nach HTML anzuwerfen, sie mit dem Stylesheet
zu f&uuml;ttern und dann das File darzustellen.
</P>
<P>
Allgemein kann diese Vorschrift als Schablone dienen. Einfach die entsprechende 
DTD und den Stylesheet
eintragen, wenn man anders geartete Dokumente angezeigt haben m&ouml;chte.
</P>

<P>
Wenn ihr Schwierigkeiten mit den Browsern habt, dann m&uuml;ssen wir uns im
einzelnen darum k&uuml;mmern und den Stylesheet anpassen. Der Browser f&uuml;hrt
zum
Teil nicht alle Anweisungen richtig aus. So werden Nummerierungen ver&auml;ndert
oder manche andere Kleinigkeit. Daran kann ich allerdings wenig &auml;ndern.
Jedenfalls hat das KEINE Auswirkungen darauf, wie es auf der Webseite
dargestellt wird. Da benutze ich direkt einen speziellen XSL-Interpreter.
</P>
<P>
Viel Spaß</P>
</Subsection>
</Section>

<Section title="Die interne Struktur">

<Subsection title="&Uuml;bersicht und Technisches">
<P>
Alle Informationen, sowohl die reinen Inhalte, als auch die f&uuml;r die
&Uuml;bersetzung
notwendigen sind fast ausschließlich in XML-Dateien angelegt. Ausnahmen sind
z.B.
Originaldateien (pdf,...) und Bilder.
</P>

<P>
Zur Erstellung der Seiten wird das Werkzeug
<a href="http://ant.apache.org/index.html"><b>ANT</b></a> verwendet und dessen
XML-Prozessor nach der Definition 'trax' benutzt. Die f&uuml;r die automatische
Prozessierung notwendigen Build-Dateien werden speziell f&uuml;r dieses Tool
erzeugt.
Ausgangspunkt der &Uuml;bersetzung ist ein von Hand erstelltes
Grund-Ant-Build-File
'build.xml'.
Der Rest an Build-Files wird automatisch erzeugt.
</P>

<P>
Viele Informationen &uuml;ber die Struktur erschlie&szlig;en sich durch das
Lesen der
entsprechenden DTD-Dateien, z.B. der <a
href="http://www.mxks.de/dtd/index.dtd"
style="color:blue;">Indexbeschreibung</a>.
</P>

<P>
Die &Uuml;bersetzung wird von der Kommandozeile angestossen. Bis jetzt wurde
noch kein
entsprechendes grafisches Werkzeug entwickelt.
</P>

</Subsection>

<Subsection title="Das XML-Projekt">

<P>
Der 'xml' Unterordner im Projekt enth&auml;lt folgende Ordner und Dateien:
<ul>
<li><b>xml = src.home</b></li>
	<ul>
	<li><b>dtd</b>, alle Document Type Definitions</li>
	<li><b>xsl</b>, alle XSL-Stylesheets und dazugeh&ouml;rige Dateien</li>
	<li><b>mxks</b>, die XML-Hauptseiten, z.B. alle Exzerpte und Indexseiten
und
	auch das Strukturfile</li>
	<li><b>misc</b>, weiter XML-Seiten, wie Termine und Links</li>
	<li><b>script</b>, enth&auml;lt verschiedene 'shell' und 'sed'
Skripte</li>
	<li><b>tmp</b></li>
	<li>...</li>
	<li>build.xml, ist das HauptBuild-File des Projektes.</li>
	<li>Readme.xml</li>
	</ul>
</ul>
<b>Dieser Ordner ist der Quellordner und Bezugspunkt f&uuml;r alle Pfade im
Quellbereich.</b> In diesem Order als 'working directory' wird auch 'ant'
auf der Kommandozeile aufgerufen.
</P>

</Subsection>

<Subsection title="ANT-Buildfiles">


<Subsection title="Environement - Umgebungsvariable">

</Subsection>

<Subsection title="Pfade">

</Subsection>

<Subsection title="xmlcatalog">

</Subsection>


</Subsection>


<Subsection title="Strukturfile oder Navigationsfile - mxks/main.navbar.xml">
<P>
<ul>
	<li>Nav base=".." site="www.mxks.de"</li>
	<ul>
	<li>Abstract</li>
	<li>NavParam</li>
	<li>...</li>
	<li>BuildArgs</li>
	<li>NavGroup name="firstlevel", title="Hauptseite" label="MXKS"
base=".."</li>
	<ul>
	<li>NavGroup</li>
	<li>...</li>
	<li>NavItem title="YYY" buildmode="index|normal|..."</li>
	<li>...</li>
	<li>NavGroup name="XXX"</li>
	<ul>
	<li>NavItem</li>
	<li>...</li>
	</ul>
	</ul>
	</ul>
</ul>
</P>
<P>
Die interne Struktur des Projektes kennt <i>ein</i> Hauptfile. Dieses heißt
'main.navbar.xml' und ist das <i>Navigationsfile</i>. Hier wird die baumartige
Struktur
der gesamten Website
angelegt. Das Wurzelelement ist <a
href="http://www.mxks.de/dtd/navbar.dtd"><code>Nav</code></a> und die einzelnen
Ebenen sind
die <code>NavGroups</code>. Die Navigationsleisten jeder Seite, welche sie
f&uuml;hrt, wird nur aus diesem einen Hauptfile heraus gebaut.
</P>

<P>
Die <code>Nav</code>igationsbeschreibung enth&auml;lt au&szlig;er  den Items und
Gruppen,
welche die Seiten und Ebenen repr&auml;sentieren, noch andere
Informationen. Das sind einerseits die <code>NavParam</code>, welche allgemeine
benamte Werte darstellen, also Key-Value-Paare. Das zweite Allgemeine an
Information sind die <code>BuildArgs</code>. Dieses ist ein Container, in
welchem sich 'ant' spezifische Daten befinden, wie <code>property</code>,
<code>path</code> und andere.
</P>


<Subsection title="NavGroup - Ebene">
<P>
Eine Navigationsgruppe entspricht einer Horizontalen, einer Ebene von
gleichrangigen Items, also Dokumenten, die von hier aus direkt zu erreichen
sind. Diese Dokumente sind also in dieser Ebene gruppiert.
</P>
<P>
Es bekommt jede Ebene eine sie
repräsentierende Hauptseite 'backlink' und einen Namen 'name' zugeordnet. Die
<code>NavGroup</code> einer eine Ebene repr&auml;sentierenden Seite enth&auml;lt
ihrerseits
wieder <code>NavItems</code>. Sie enth&auml;lt ebenso Farbangaben f&uuml;r
'active'
und
'inactive', in welcher ihr Label in den Navigationsleisten darzustellen ist.
</P>
<P>
<code>NavGroups</code> kann man nat&uuml;rlich ineinander schachteln, woraus
sich
eine im Navigationsfile beschriebene Baumstruktur der ganzen Website ergibt.
</P>
<P>
Es gibt <b>genau eine</b> oberste Gruppe, welche alle anderen und alle Items 
enthalten muss. Diese tr&auml;gt den Namen 'firstlevel'.
</P>

<P>
Da der <code>@name</code> zur Identifikation dient und z.B. keine Umlaute
enthalten darf, gibt es ein weiteres Attribut <code>@label</code>. Dieses Label
wird in der grafischen Darstellung benutzt, wenn es existiert. Sonst wird der
Name angezeigt.
</P>
</Subsection>






<Subsection title="NavItem - Einzelseite">
<P>
Ein Navigationsitem ist im Wesentlichen eine Webseite, die mit anderen in einer
Navigationsgruppe zusammengefasst ist und über diese Gruppe verlinkt wird. Ein
solches Item kann selbst wieder eine Gruppe enthalten und somit Zugang zu einer
neuen Ebene/Gruppe sein.
</P>
<P>
Ein <code>NavItem</code> enth&auml;lt einen Namen 'title' eine Quelldatei 'src'
einen
Stylesheet 'stylesheet', eine Zieldatei 'link', in welches sie mit dem
Stylesheet
umgewandelt wird und letztens eine dazu passende Pfadangabe zur Wurzeldatei der
gesamten Site namens 'base'.
</P>


<P>
Es existieren 3 Arten von durch XML-files repr&auml;sentierte Seitentypen.
Es gibt Seiten, 
<ul>
<li>die nur f&uuml;r sich stehen, <b>Einzelseiten</b>, wie z.B. die
'Termine'. Von den Einzelseiten gibt es solche, die nur Daten enthalten und
solche,</li>
<li>
welche <code>Index</code>-Files
genannt werden. Diese enthalten eine komplexe Struktur von Unterseiten.
</li>
<li>Die dritte Art sind die Seiten, die
eine ganze <b>Ebene</b> repr&auml;sentieren, wie z.B. 'Texte'.
Sie sind die Eröffnungsseiten einer neuen <code>NavGroup</code>.</li>
</ul>
</P>
<P>
Wie bei den <code>IndexItem</code> kann man entsprechende
<code>DocInfo</code>-Tags verschachteln. Das ermöglicht, für die Indexseiten
noch z.B. Bilder oder andere abhängige Daten mit
<code>DocInfo/@mode='dircopy'</code> zu kopieren.
</P>
</Subsection>


<Subsection title="NavGroup - Automatismus">
<P>
Eine Navigationsgruppe umfasst also eine Ebene, der ein XML-File als Hauptseite
zugeordnet ist. Das Übersetzen der grunds&auml;tzlichen Ebenen muss im
Moment noch per Hand in
einem Build-File beschrieben werden. Das sind z.B. alle Elemente aus der ersten
Ebene. Alle weiteren unteren Ebenen werden automatisch &uuml;bersetzt, sobald
die entsprechende obere Ebene &uuml;bersetzt wird.
</P>
<P>
So ruft z.B. <code>ant main.build</code> zum &Uuml;bersetzen der obersten Ebene
auf.
'main.build' ist dabei der Name eines <code>target</code> im Haupt-Build-File
'build.xml' des Tools 'ant'. Von diesem <code>target</code> aus
wird mittels 'navbar2build.xsl' ein tempor&auml;res Build-File erstellt und
aufgerufen. Diese enth&auml;lt die Informationen zum rekursiven Erstellen der
gesamten Unterseiten.
</P>
<P>
 Der Aufruf erfolgt mit dem Namen der entsprechenden
<code>NavGroup/@name</code>, in unserem Falle 'firstlevel',
um die zu &uuml;bersetzende Ebene zu kennzeichnen.
Aus den untergeordneten <code>NavGroups</code> bzw. <code>NavItems</code> wird
dann das Build-File zum Erstellen eben dieser gebaut.
</P>
</Subsection>

</Subsection>

<Subsection title="Indexfiles - Automatismus">
<P>
Bei der &Uuml;bersetzung eines Indexfiles wird eine ganze Sequenz von
&Uuml;bersetzungen
get&auml;tig.
<ol>
<li>Erzeugen eines neuen Indexfiles inklusive aller externen Informationen, wie
z.B. <code>IndexGroupRef</code> oder Exzerptfileinformationen
<code>Abstract</code> (exzerpt.index2index.xsl), </li>
<li>daraus wird die repr&auml;sentierende HTML-Seite des Indexfiles erzeugt
(exzerpt.index.xsl)
und ebenso</li>
<li>das Build-File zum Erstellen aller untergeordneten Seiten
(exzerpt.index2build.xsl).</li>
<li>Schlie&szlig;lich wird die &Uuml;bersetzung dieses neuen Build-Files
angestossen.</li>
</ol>
</P>
<P>
Die Baumstruktur eines Indexfiles w&auml;re ungef&auml;hr wie folgt:
<ul>
	<li>Index</li>
	<li>Abstract</li>
	<ul>
	<li>IndexGroup</li>
	<ul>
	<li>IndexGroupRef</li>
	<li>IndexItem</li>
	<li>...</li>
	</ul>
	<li>IndexGroup</li>
	<ul>
	<li>IndexItem</li>
	<li>IndexItemRef</li>	
	<li>...</li>
	</ul>
	</ul>
</ul>
</P>

<P>
Das Ganze nun etwas genauer.
Eine der gro&szlig;en St&auml;rken des Projektes sind die Indexfiles. Sie
sind sowohl als
grafische Repräsentation, als auch als Prozessfiles zu sehen. Als Sichtfile
werden sie in eine
oder mehrere HTML-Seite umgesetzt, welche Links auf ihre <code>IndexItems</code>
und Informationen &uuml;ber diese enth&auml;lt, welche aus diesen Files
selbst extrahiert wird (genauer aus dem <code>Abstract</code>).
</P>

<P>
Dabei kann man beliebig viele Sichten auf die indizierten Dateien kreieren, wie
z.B. Normalansicht und nach Autoren geordnet.
</P>

<P>
Die prozessuale Verwendung hingegen ist der Kern des Automatismus. Indexfiles
sind
durch <code>NavItem/buildmode="index"</code> gekennzeichnet. Dies l&auml;sst
einen ganz anderen Mechanismus aus, als zum Build einer normalen Seite.
</P>

<P>
Aus dem Indexfile wird ein weiteres Indexfile erstellt, in welchem alle
Informationen, die man aus den <code>IndexItems</code> extrahieren muss, wie
Autor <code>IndexItem-&gt;Excerpt/Abstract/@author</code> und Titel
<code>IndexItem-&gt;Excerpt/Abstract/@title</code>,
zusammengefasst sind, um z.B. Sortierungen vornehmen zu k&ouml;nnen.
(-&gt; gibt an, dass die Informationen aus der entsprechenden Quelldatei geholt
werden mssen.)
</P>

<P>
Aus dieser neuen
Datei wird sodann ein neues Build-File erstellt, mit welchem
alle <code>IndexItems</code> &uuml;bersetzt werden k&ouml;nnen und schließlich
wird dieses
File mit ANT aufgerufen und dadurch ein rekursives Erstellen der ganzen
zugeh&ouml;rigen Seiten automatisch erm&ouml;glicht.
</P>

<P>
Es werden zus&auml;tzlich Entscheidungen (ANT-Conditions) erzeugt, damit Seiten
nur neu &uuml;bersetzt
werden, wenn sich damit zusammenh&auml;ngende Dateien ver&auml;ndert haben, um
den Aufwand
zu senken. Dies ist noch nicht vollst&auml;ndig strukturiert, so dass man
manchmal
mit z.B. 'touch' unter Unix erzwingen muss, dass das Indexfile neu gebildet
werden, um die darunter liegenden Dateien neu zu kreieren.
</P>

<Subsection title="IndexGroup">
<P>
Eine Indexguppe fast mehrere Indexitems zu
einer
</P>
</Subsection>

<Subsection title="IndexItem - Exzerpte">
<P>
<ul>
	<li>Exzerpt</li>
	<li>Konspekt</li>
	<li>Struktur</li>
	<li>Originalfile</li>
	<li>...</li>
	<li>Bilder und sonstiges</li>
</ul>
</P>

<P>
Die <code>IndexItems</code> stellen den informativen Kernbestand dar. Sie
enthalten eine Fülle von Informationen. Wohl die wichtigsten sind die Quelldatei
'src', der Ort 'dest' oder die Datei, an welchem sie kopiert oder in welche sie
mit Hilfe des 'stylesheet' &uuml;bersetzt werden soll. Der 'buildmode="build"'
gibt
z.B. an, ob eine Datei &uuml;bersetzt werden soll. Meist sind die Files
Exzerpte.
</P>

<CommentHead title="Zusätzliche Originaldatei">
<P>
Wenn wir ein Exzerpt vorliegen haben, dann gibt es die M&ouml;glichkeit,
Informationen &uuml;ber eine eventuelle Originaldatei abzulegen. Die
entsprechenden
Attribute sind analog 'origsrc','origdest', 'origbuildmode',... Damit ist es
m&ouml;glich, dass im Exzerpt Links zur Originaldatei erstellt werden.
(Wie die Exzerptfiles selbst aufgebaut sind, ist in den ersten Abschnitten
dieses Dokuments beschrieben.)
</P>
<P>
Originaldateien können selbst wieder XML-Dateien oder statische Dokumente sein,
wie ein PDF. Wird 'origbuildmode="nobuild"' angegeben, bzw. dies ist die
Voreinstellung
beim Weglassen dieses Attributes in der DTD, dann wird das Originalfile nur
kopiert. 
Wenn man den Build einschaltet 'origbuildmode="build"', dann wird mit dem
'origstylesheet'-Attribut festgelegt, mit welchem Stylesheet die Originaldatei
übersetzt werden soll.
</P>
</CommentHead>

<CommentHead title="Nur eine statische Originaldatei">
<P>
Im Falle, dass wir <b>nur</b> ein statisches Originalfile haben, also auch kein
Exzerptfile, dann muss man als 'dest' den gleichen Wert eingeben wie f&uuml;r
'origdest' und sodann wird in der Index-HTML-Repr&auml;sentation auf dieses File
gelinkt. (Dies ist z.B. beim Medienprojekt der Falle, wo keine Exzerpte, sondern
gepackte Powerpoint Dateien als <code>IndexItems</code> verlinkt werden.)
</P>
</CommentHead>

<CommentHead title="IndexItem/Abstract notwendig">
<P>
Wenn dies nun der Fall ist, also ein Nicht-XML-File durch
das <code>IndexItem</code> repr&auml;sentiert wird, dann muss man einen
<code>Abstract</code> als ersten Tag in den <code>IndexItem</code> Tag einfügen,
damit auf der Index HTML-Seite zumindest Autor und Titel dieses Files zur
Verf&uuml;gung stehen. Das absolute Minimum ist ein <code>Abstract</code> mit
nur dem Titel.
</P>
</CommentHead>

<P>
Ist das Originalfile selbst ein XML-File unseres von unserem Doctype, dann kann
man nicht nur mit 'origbuildmode="build"' das automatische &uuml;bersetzen
dieses Files
ansto&szlig;en, sondern mit 'origlinkmode="on"' veranlassen, dass die
entsprechenden Kapitel und Unterkapitel zwischen Exzerpt und Originaldatei
verlinkt werden k&ouml;nnen. (Dazu müssen sie natürlich übereinstimmen.)
</P>

</Subsection>

<Subsection title="DocInfo - Konspekt, Struktur, Bilder, ...">
<P>
<ul>
	<li>IndexItem style="actual|main|normal"</li>
	<ul>
	<li>Abstract</li>
	<li>DocInfo buildmode="build|nobuild|copy|dircopy|dirpack"
name="conspect|structure|label|thumb|package"</li>
	<li>...</li>
	</ul>
	<li>IndexItem</li>
	<li>...</li>
</ul>
</P>
<P>
Ein <code>IndexItem</code> kann endlich viele <code>DocInfo</code>-Tags
enthalten. Diese Struktur erm&ouml;glicht verschiedenste Zusatzsichten und
Dateien zu
einem Exzerpt zu erstellen. Die wesentlichen Attribute sind 'name' und
'buildmode'.
</P>
<P>
An Hand des Attributes <b>DocInfo/@name</b> wird entschieden, wie der
<code>DocInfo</code>-Tag
in der Verlinkung zu interpretieren ist, um welche Art von Informationen es sich
im Dokument, bzw. inneren Dokukment, handelt.
</P>
<P>
<table border="1">
<tr><th>Attributwert</th><th>Interpretation</th></tr>
<tr><td>conspect</td><td>Die beschriebene Datei wird als Konspekt
interpr&auml;tiert, ist meist ein inneres Dokument, es wird prozessiert
und bei der Verlinkung mit dem Exzerpt ber&uuml;cksichtigt.</td></tr>
<tr><td>structure</td><td>Es handelt sich um ein Strukturfile, es gilt
das Gleiche, wie f&uuml;r den Konspekt.</td></tr>
<tr><td>criticism</td><td>Dieses File wird als Kritik zum 
Hauptdokument verlinkt (und erstellt).</td></tr>
<tr><td>label</td><td>Dies kennzeichnet ein Bild, welches dem Verweis
auf das Hauptfile auf der Indexseite vorangestellt wird.</td></tr>
<tr><td>thumb</td><td>Existiert nur mit einem Label und wird anstatt
diesem angezeigt, wenn das Label selbst zu umfangreich ist.
Beim Klicken auf das 'thumb'-Bildchen, wird das meist einfach nur größere 
Label im Browser angezeigt, z.B. ein Übersichtsdiagramm.
</td></tr>
<tr><td>package</td><td>Dieses File beinhaltet Zusatzinformationen und
wird z.B. im Exzerptfile als 'Info' im Kopfbereicht verlinkt.</td></tr>
<tr><td>sonstiges</td><td>Wird nicht interpretiert, entscheidet sich
also nur an Hand des 'buildmode'.</td></tr>
</table>
</P>

<P>
Das Attribut <b>DocInfo/@buildmode</b> wird vom XSL-Prozessor
bez&uuml;glich der
&Uuml;bersetzung ausgewertet. Dabei kann z.B. eine &Uuml;bersetzung mit einem
Stylesheet
erfolgen oder aber ein einfaches Kopieren, etc.
</P>
<P>
<table border="1">
<tr><th>Attributwert</th><th>Interpretation</th></tr>
<tr><td>build</td><td>Das durch 'src' gekennzeichnete File wird
mittels 'stylesheet' nach 'dest' &uuml;bersetzt, z.B. Exzerpte.</td></tr>
<tr><td>copy</td><td>Das File wird einfach kopiert und umbenannt.
Dies wird meist bei Originalfiles oder Präsentationen der
Fall sein.</td></tr>
<tr><td>dircopy</td><td>In diesem Fall ist 'src' ein Ordner und der
gesamte Ordnerinhalt wird an die entsprechende Stelle 'dest' kopiert.
Das wird oft f&uuml;r das Kopieren von Ordnern mit ben&ouml;tigten
Bildern benutzt.</td></tr>
<tr><td>dirpack</td><td>Der Ordnerinhalt von 'src' wird als zip-file
nach 'dest' gepackt. Meist findet dies bei Zusatzinformationen
Anwendung.</td></tr>
<tr><td>nobuild</td><td>Hat weiter keine Bedeutung, au&szlig;er , dass dieses
File nicht prozessiert wird.</td></tr>
</table>
</P>
<P>
Das Wichtigste also ist, dass ein <code>DocInfo</code> einen Namen 'name' und
einen 'stylesheet' enth&auml;lt. An Hand des Stylesheets wird das Quellfile
'src' in
das Zielfile 'dest' &uuml;bersetzt, sofern 'buildmode="build"' eingestellt ist.
Ist
der Name z.B. 'conspect', dann wird dieses File als Konspekt zum
&uuml;bergeordneten
Exzerptfile behandelt und entsprechend verlinkt und angezeigt.
</P>

<P>
Ein weiterer bekannter Name ist 'structure', mit welchem ein so gennantes
Strukturfile angelegt und mit dem Exzerpt verlinkt wird. In diesem werden z.B.
die
<code>CommentHeads</code> und andere Tags die die Struktur beschreiben
angezeigt.
</P>

<P>
Zwei weitere <code>DocInfos</code> gehören zusammen und betreffen Bilder. Wenn
'@name="label"' gesetzt ist, so wird das entsprechende File als Bilddatei vor
dem
Schriftzug verlinkt und in verkleinerter Form auf der Indexseite selbst
angezeigt. Ist die Bilddatei zu groß, so benutzt man f&uuml;r die Indexseite
eine
verkleinerte separate Bilddatei, welche dann angezeigt wird. Der entsprechende
Name ist dann 'thumb'. Beide Tag-Formen sollten den 'buildmode="copy"' besitzen,
da sonst die entsprechenden Bilddateien nicht in den Zieldateibaum kopiert
werden.
</P>

<Note>
Die 'thumb' und 'label' <code>DocInfo</code> Tags k&ouml;nnen nicht nur
innerhalb von
<code>IndexItem</code>, sondern auch direkt innerhalb von
<code>IndexGroup</code> auftreten und somit nette Bildchen erzeugen.
</Note>

<P>
Mit dem 'buildmode="dircopy"' veranlasst man den Prozessor dazu, den Ordner
'src' nach 'dest' zu kopieren, um z.B. eine Vielzahl von zu einem File gehörige
Bilddateien zu kopieren.
</P>

</Subsection>
<Subsection title="IndexItem/@style">
<P>
Mit dem 'style'-Attribut lassen sich verschiedene Darstellungen
des entsprechenden <code>IndexItems</code> auf der Indexseite realisieren.
Normale Items haben das Attribut <code>IndexItem/@style</code> nicht gesetzt,
bzw. haben den Default-Wert "normal" aus der DTD.
D. h., wir haben einen dünnen grauen Rahmen um das Item gezeichnet.
Man kann dieses Attribut aber auch auf folgende Werte setzen:
</P>
<P>
<table border="1">
<tr><th>Attributwert</th><th>Interpretation</th></tr>
<tr><td>normal</td><td>Ist der default Wert und macht nichts 
besonderes.</td></tr>
<tr><td>actual</td><td>Bedeutet, dass das Item als in Bearbeitung markiert wird.
Im Augenblick ist dies ein roter Rahmen und der Schriftzug "in
Bearbeitung".</td></tr>
<tr><td>main</td><td>"main" zeigt an, dass in der entsprechenden 
<code>IndexGroup</code>
dieses Item einen Hauptbestandteil ist. Diese Kennzeichnung
ist einfach ein fetterer und schwarzer Rahmen.</td></tr>
</table>
</P>
</Subsection>

<Subsection title="Tabellarische IndexGroup - @type='multicolumn'">
<P>
Es ist ein weiterer Spezialfall der Darstellung hinzugekommen.
<code>IndexItems</code> sollen
nicht nur in Gruppen zusammengefasst dargestellt werden, sondern desgleichen in
Spalten gruppiert
nach Kategorien. Daf&uuml;r ist eine neue Struktur eingef&uuml;hrt worden.
</P>

<P>
Eine <code>IndexGroup</code> wird als tabellarisch wie folgt gekennzeichnet
<code>IndexGroup/@type='multicolumn'</code>.
Welche Spalten es gibt wird im Tag <code>IndexGroup/IndexGroupColumns</code>
beschrieben.
Jede Spalte <code>IndexGroup/IndexGroupColumns/IndexGroupColumn</code> erhält
einen 'title' der im Tabellenkopf
erscheint und eine 'category' als Schl&uuml;ssel zum Finden der entsprechenden
Eintr&auml;ge. Ein 'style' Attribut mit
einem generischen HTML-Style ist optional. 
</P>
<P>
	<ul>
		<li>IndexGroup: type='multicolumn', id="XXX" (die
Hauptgruppe)</li>
		<li>
			<ul>
				<li>IndexGroupColumns</li>
				<li>	
					<ul>
						<li>IndexGroupColumn: title,
category="AAA", style</li>
						<li>IndexGroupColumn: title,
category="BBB", style</li>
						<li>...</li>
					</ul>
				</li>
			</ul>
		</li>
		<li>IndexGroup: id="Zeile1" (eine Zeile ist eine Zeilengruppe)
			<ul>
				<li>IndexItem: category="BBB"</li>
				<li>IndexItem: category="BBB"</li>
				<li>IndexItem: category="AAA"</li>
				<li>...</li>
			</ul>
		</li>
		<li>IndexGroup: id="Zeile2"
			<ul>
				<li>IndexItem: category="BBB"</li>
				<li>IndexItem: category="BBB"</li>
				<li>IndexItem: category="AAA"</li>
				<li>...</li>
			</ul>

		</li>
		<li>...</li>
	</ul>
</P>

<CommentHead title="Jede Zeile ist eine Zeilengruppe">
<P>
Die Zeilen dieser Tabelle sind mit zus&auml;tzlichen
<code>IndexGroup</code>-Tags dargestellt. 
Diese <b>m&uuml;ssen</b> wie die Haupt-IndexGroup zwingend das Attribut 'id'
gesetzt haben. Dabei muss
jede Zeilengruppe eine eindeutige ID innerhalb der Hauptgruppe besitzen.
</P>
</CommentHead>
<CommentHead title="Jede Spalte ist eine der vordefinierten Kategorien">
<P>
Innerhalb der Zeilengruppen stehende  <code>IndexItem</code> und deren
enthaltene(!) <code>DocInfo</code>-Tags
k&ouml;nnen nun in eine Kategorie, d. h., genau einer Spalte erscheinen. Dabei
wird das Attribut 'category' auf den
entsprechenden Wert gesetzt. Passiert das nicht, werden diese Tags ignoriert.
Bei den enthaltenen <code>DocInfo</code>-Tags wird der Titel des umgebenden
<code>IndexItem</code> verwendet.
</P>
</CommentHead>
</Subsection>


<Subsection title="IndexGroupRef - Referenz zu externer Indexdatei">
<P>
Es gibt den Fall, dass externe Indexgruppen, also solche auf anderen Seiten als
der aktuellen Indexseite, auf der aktuellen Indexseite sichtbar gemacht werden
sollen. Dann kann in der aktuellen Indexseite über den Tag
<code>IndexGroupRef</code> einen Verweis auf diese externe Gruppe machen.
</P>
<P>
Dieser Tag stellt also einen Verweis auf eine Gruppe in einem anderen Indexfile
dar.
Er besitzt nur wenige Attribute.
<table border="1">
<tr><td>src</td><td>Hier kann man direkt den Pfad zum externen Indexfile
angeben, aus welchem die Gruppe genommen werden soll.</td></tr>
<tr><td>navitem</td><td>Der Pfad wird nicht aus <code>@src</code>
genommen, sondern <code>NavItem[@title=$navitem]/@src</code>. Wir holen
ihn also indirekt über das Hauptnavigationsfile.</td></tr>
<tr><td>title</td><td>Gibt <code>IndexGroup/@title</code> an, durch
welchen die externe Gruppe identifiziert wird.</td></tr>
<tr><td>mode</td><td>Gibt den Modus an, nach welchem mit der Gruppe
verfahren werden soll.</td></tr>
</table>
</P>
<P>
Wenn der Modus gleich 'merge' ist, dann wird einfach der Inhalt der externen
Gruppe in den Inhalt der Gruppe übernommen, in welcher die Referenz steht.
</P>
<P>
Haben wir hingegen den Modus 'copy', dann wird die externe Gruppe dargestellt,
als wenn sie eine normale Gruppe der auf sie verweisenden Indexseite wäre.
</P>

</Subsection>

<Subsection title="IndexItemRef">
<P>
Analog der Referenz für Indexgruppen gibt es eine Referenz für die einzelnen
Items. Diese externen Items werden aus der externen Indexseite genommen und auf
der auf sie verweisenden Indexseite dargestellt.
</P>
<P>
<table border="1">
<tr><td>src</td><td>Dies ist der Pfad, der zur Identifikation des
Items benutzt wird. Er entspricht <code>IndexItem/@src</code> 
oder <code>IndexItem/@origsrc</code>.
</td></tr>
<tr><td>navitem</td><td>Der Pfad zur 
externen Indexseite ist <code>NavItem[@title=$navitem]/@src</code>. Wir holen
ihn also indirekt über das Hauptnavigationsfile.</td></tr>
</table>
</P>
</Subsection>

</Subsection>


<Subsection title="Stylesheets">
<P>
Die Ordnerstruktur unter xml/xsl gibt schon Auskunft &uuml;ber die Anwendung der
jeweiligen Stylesheets. Die relativen Pfadangaben zum Aufruf von untergeordneten
Stylesheets ist dabei in den Styles fest eingegeben und muss bei Veränderung
der Ordnerstruktur nachgezogen werden.
<ul>
<li><b>xsl</b></li>
<li>
<ul>
<li><b>html</b>, Stylesheets zum Erzeugen von z.B. dem html &lt;head&gt;</li>
<li><b>css</b>, alles, was mit Cascade Stylesheets zu tun hat.</li>
<li><b>excerpt</b>, f&uuml;r die Erstellung der eigentlichen Exzerpte.</li>
<li><b>index</b>, hier sind die Stylesheets rund um die
Erzeugung und das Prozessieren von Indexseiten.</li>
<li><b>conspect</b>, wie der Name schon sagt alles f&uuml;r die Konspekte.</li>
<li><b>purelist</b>, alles, was mit 'purelist' zu tun hat, wie das Wörterbuch
oder die Termine-Seite ...</li>
<li><b>navbar</b>Hier finden sich die Stylesheets zum Erstellen der Build-Files
für die Indexseiten, wie auch des Erstellen der Navigationsbalken und
-menus.</li>
<li><b></b></li>
<li><b></b></li>
</ul>
</li>

</ul>
</P>

<P>
Eigentlich alle &Uuml;bersetzungen von XML-Dateien in HTML-Seiten benötigen
mehrere Stylesheets, wobei es ein <b>Hauptstylesheet</b> gibt, der die anderen
intern aufruft. Das ist also ein XSL-interner Mechanismus.
Dabei werden die jeweiligen Ausgaben verschachtelt, also die Tags wie bei einer
Zwiebel ineinander gelegt.
Z.B. Exzerpte werden mit dem <code>excerpt/excerpt.xsl</code>
Stylesheet übersetzt.
Der Rahmen im Zielfile als &lt;html&gt;...&lt;/html&gt;   wird von diesem
Stylesheet erzeugt. Hier hinein wird mit Hilfe der "html"-Stylesheets eine
weitere Schale gelegt.
</P>

<Subsection title="html">
<P>
Hier befinden sich alle Stylesheets, die zumeist seitenbezogene HTML-Tags
erzeugen.
<ul>
<li><b>htmlhead</b>, erzeugt mit Hilfe des <code>Abstract</code>-Tags des
Quellfiles den Abschnitt &lt;head&gt;...&lt;/head&gt; mit den entsprechenden
'META'-Tags und dem
'title' des resultierenden HTML-Files.</li>
<li><b>htmlfoot</b>, es werden hiermit am Ende des HTML-Files innerhalb des
'html/body' 
Zusatzinformationen wie z.B. das letzte Compilierdatum erzeugt.
</li>
</ul>
</P>
</Subsection>

<Subsection title="navbar">
<P>
An dieser Stelle befinden sich sehr verschiedenartige Stylesheets, die aber alle
etwas mit
dem Strukturfile zu tun haben, z.B. dem zentralen <i>Naviagationsmenu</i>.
<ul>
<li><b>navbar</b>, dieser zentrale Stylesheet erzeugt das entsprechende
Navigationsmenu am Anfang jeder Seite (HTML-File), welche direkt &uuml;ber die
Navigation zu erreichen ist. Das betrifft alle Indexseiten, wie auch manche
reine Datenseite.</li>

<li><b>navbar2build</b> kreiert zu einer als Parameter gegebenen
<code>NavGroup</code> im Strukturfile ein ANT-Build-File, mit welchem alle zu
dieser Navigationsgruppe oder Ebene gehörenden Zieldateien gebaut oder kopiert
werden.
</li>

<li><b>navber2sidemap</b> kompiliert die als 'sitemap' bezeichnete
Gesamtübersicht aus dem Navigationsfile und den Informationen aus den
<code>Abstracts</code> der entsprechenden XML-Quelldateien.</li>

<li><b>navber2sidetree</b> kompiliert die als 'sitemap' bezeichnete
Gesamtübersicht aus dem Strukturfile und den Informationen aus dem
gesamten Spektrum an vorhandenen Files und erzeugt einen vollst&auml;ndigen Baum
der vorhandenen Datenstruktur der gesamten Website.</li>

<li><b>treeview.head.xsl</b> kapselt die f&uuml;r den
<code>/html/head</code>-Tag bestimmten javascript-Abschnitte f&uuml;r die
Baumdarstellung der Sitemap.</li>

<li><b>treeview.abstract.xsl</b> kapselt die Darstellung eines einzelnen
Files als Blatt oder Knoten in der Baumdarstellung der Sitemap.</li>
</ul>
</P>
</Subsection>



<Subsection title="css">
<P>
Bisher gibt es nur einen css erzeugenden Stylesheet:
<ul>
<li><b>maincss.xsl</b>, bildet dateiweite CSS zur HTML-Darstellung, z.B. dass
bei Browseransicht andere Schriftarten als beim Ausdruck zur Anwendung
kommen.</li>
</ul>
</P>
</Subsection>


<Subsection title="index">
<P>
Dieser Unterordner enth&auml;lt sowohl Prozessierungs- als auch
Ansichtsstylesheets f&uuml;r Indexfiles.
<ul>
<li><b>index.xsl</b>, erzeugt die eigentliche HTML-Repräsentation der
Indexseite.</li>
<li><b>index2index.xsl</b>, bildet eine tempor&auml;re XML-Indexseite, welche
alle externen Referenzen und Informationen enth&auml;lt.</li>
<li><b>index2build.xsl</b>, kompiliert eine XML-Indexseite zu einem
ANT-Build-File, um alle entsprechenden Unterseiten und noch notwendigen
Build-Files erzeugen zu k&ouml;nnen.</li>
</ul>
</P>
</Subsection>


<Subsection title="excerpt">
<P>
Dieser Unterordner enth&auml;lt sowohl Prozessierungsstyles f&uuml;r
Exzerpte.
<ul>
<li><b>excerpt.xsl</b>, erzeugt die eigentliche HTML-Repräsentation des
Exzerpts.</li>

<li><b>excerpt.head.xsl</b>, erzeugt die Kopfsektion des Exzerpts mit 
allen wichtigen Informationen von und um dieses Dokument.</li>

<li><b>excerpt.head.linklist.xsl</b>, kompiliert eine Tabellenzeile des
Kopfes, in welchem alle Links auf Dokumente platziert sind, die mit
diesem Dokument in Verbindung stehen (siehe <code>DocInfo</code>).</li>

<li><b>excerpt.content.items.xsl</b>, stellt die eigentlichen Tags, z.B.
<code>P</code>..., des
Exzerptes bzw. verwandter Formen, wie Konspekt, dar.
Hier wird somit der textuelle Inhalt und sein Aussehen selbst erzeugt.
</li>

<li><b>excerpt.browser.xsl</b>, dieser spezielle Stylesheet ist f&uuml;r die 
Darstellung mittels Browser gedacht und befindet sich im XML-Paket. Hiermit ist 
es m&ouml;glich, sich eigene XML-Files nach unserer DTD anzusehen, ohne den 
Prozessierungsmechanismus installieren zu m&uuml;ssen.
</li>

</ul>
</P>
</Subsection>


<Subsection title="Nicht-Indexseiten oder reine Datenseiten">
<P>
Bei den Nicht-Indexseiten gibt es solche,
<ul>
<li>die direkt &uuml;ber die Navigation erreicht werden k&ouml;nnen und</li>
<li>solche, die &uuml;ber eine Indexseite zu erreichen sind.</li>
</ul>
Danach unterscheidet sich nat&uuml;rlich der Aufbau der Seiten. Zur ersten Art
gehören z.B. die Seiten, welche nach 'purelist' als reine Listen aufgebaut
sind. Diese erhalten sowohl ein Navigationsmenu (navbar/navbar.xsl), als auch
eine interne Navigation (titlepopup.xsl und titlepopup.table.xsl).
</P>

<CommentHead title="Direkt aus dem Hauptmenu zu erreichende Datenseiten">
<P>
Als Beispiel sei die Seite 'Aktuell' genommen, welche mit dem Stylesheet
'purelist/purelist.table.xsl' &uuml;bersetzt wird.
<ul>

<li><b>purelist.table.xsl</b>, der Hauptstylesheet ruft alle untergeordneten
auf.
Er erzeugt auch den Inhalt der Seite selbst.</li>
<li>
<ul>
<li><b>html/htmlhead.xsl</b>, der Kopfbereich der HTML-Seite.</li>
<li><b>navbar/navbar.xsl</b>, das Navigationsmenu</li>
<li><b>titlepopup.xsl</b>, die interne &Uuml;bersicht &uuml;ber die Liste der
<code>PureListGroups</code> als Popupmenu.</li>
<li><b>html/htmlfoot.xsl</b>, die obligatorischen Zusatzinformationen.</li>
</ul>
</li>

</ul>
</P>
</CommentHead>

<CommentHead title="Indirekt - über Indexseiten - zu ereichende Datenseiten">
<P>
Die Datenseiten, welche &uuml;ber Indexseiten zu erreichen sind, besitzen kein
Navigationsmenu, daf&uuml;r aber einen <b>Kopf</b>, welcher nicht mit dem
'html/head' zu verwechseln ist. Im Kopf werden die Informationen aus dem
<code>Abstract</code>, wie 'title', ausgegeben und auch Links zu
zugeh&ouml;rigen Seiten, wie einem Konspekt oder Original, eingef&uuml;gt. Diese
Informationen sind entweder direkt aus dem <code>IndexItem</code> des
verweisenden Indexfiles oder diesem untergeordneten <code>DocInfo</code> Tags zu
entnehmen. 
</P>
</CommentHead>

<P>
Als Beispiel hierf&uuml;r sei ein Exzerpt genommen, welche mit dem Stylesheet
'excerpt/excerpt.xsl' &uuml;bersetzt wird.
<ul>

<li><b>excerpt/excerpt.xsl</b> ist der Hauptstylesheet, der alle 
untergeordneten aufruft.</li>
<li>
<ul>
<li><b>html/htmlhead.xsl</b>, der Kopfbereich der HTML-Seite.</li>
<li><b>excerpt/excerpt.head.xsl</b>, der Kopfbereich des Exzerptes
<ul><li><b>excerpt/excerpt.head.linklist.xsl</b>, Linkbereich im Kopf</li></ul>
</li>
<li><b>excerpt/excerpt.contentitems.xsl</b>, erzeugt den eigentlichen Inhalt
der 
Seite selbst, z.B. den HTML-Code der Tags <code>Cite</code> oder 
<code>P</code>.</li>
<li><b>html/htmlfoot.xsl</b>, die obligatorischen Zusatzinformationen.</li>
</ul>
</li>

</ul>
</P>

</Subsection>

</Subsection>
</Section>



<Section title="Erzeugen von ANT-Build-Files mit XSL">
<P>
Da bisher die Struktur der Seite nicht so kompliziert war, wurden die
wichtigsten ANT-Targets von Hand geschrieben. 
</P>
<P>
Es gibt sehr unterschiedliche Targets. Beispielsweise wird mit 'ant news'
angestoßen, dass der Newsletter und der RSS-Newsfeed erzeugt wird. Mit 'ant
main.build' hingegen werden alle Indexseiten des obersten Hauptmenus, sowie
deren direkt enthaltene Unterseiten (im Falle es ist eine Idnexseite) erzeugt.
</P>
<P>
An dieser Stelle ist noch etwas Arbeit zu investieren.
</P>
</Section>

<!-- Section title="Ausblick">
<P>
</P>
</Section -->

<!--
<ul>
<li><b></b>, </li>
<li><b></b>, </li>
</ul>
-->








</Notice>

