 2000
2000
         						
         						
         						
         
      Zur Beschreibung eines Softwarepakets mit allen seinen Versionen habe ich eine eigene DTD entworfen. Da die Instanzen dieser DTD automatisch erzeugt und auch nur maschinell weiterverarbeitet werden müssen, musste ich keinen besonderen Wert auf gute Lesbarkeit legen. Die DTD ist in folgendem Listing zu sehen:
<!--
	swpaket 1.0
	Beschreibung der Software-Pakete der IRB-Installation
	Informatikrechner-Betriebsgruppe / Uni Dortmund
	Benutzung:
	<!DOCTYPE swpaket PUBLIC "-//UNIDO-IRB//DTD swpaket 1.0//DE"
                                 "swpaket.dtd">
-->
<!-- ============================================================= -->
<!--                    Das Top-Level-Element                      -->
<!-- ============================================================= -->
<!ELEMENT swpaket  ( instdir , beschreibung , 
	                size , def-version, new-version, 
			kategorie+ , version+) >
<!--                    Name des Paketes                           -->
<!ATTLIST swpaket	name CDATA #REQUIRED 	 >
<!--                    Installationsverzeichnis                   -->
<!--                    Paket: voller Pfad zum
                        Installationsverzeichnis                   -->
<!--                    Version: relativer Pfad
                        bzgl. Paketverzeichnis                     -->
<!ELEMENT instdir  (#PCDATA) 	 >
<!--                    Beschreibung                               -->
<!--                    textuelle, kurze(!) Beschreibung des
                        Paketes; Verweise auf andere Pakete mit
                        <verweis paket="name">; Sprache: Deutsch;
                        Kodierung: ISO-Latin-1                     -->
<!ELEMENT beschreibung  (#PCDATA | verweis)*   >
<!--                    Verweis auf andere Pakete, Name
                        erforderlich                               -->
<!ELEMENT verweis  EMPTY           >
<!--                    Name des Referenzpaketes                   -->
<!ATTLIST verweis     paket CDATA #REQUIRED     >
<!--                    Dokumentation                              -->
<!--                    Angaben über die Art der Dokumentation;
                        Sprache und Kodierung wie Beschreibung.    -->
<!ELEMENT doku  	(#PCDATA) >
<!--                    Art der Doku                               -->
<!--                    lokal - liegt als Datei im Filesystem      -->
<!--                    url - liegt irgendwo im Netz               -->
<!--                    catman - UNIX-Manualseiten                 -->
<!--                    GNU-Infoseiten                             -->
<!ATTLIST doku		art (lokal | url | catman | info)	#REQUIRED
			ort CDATA				#REQUIRED >
<!--                    Groesse eines Paketes oder einer Version;
                        Einheit: KBytes                            -->
<!ELEMENT size  (#PCDATA) >
<!--                    Name der Default- und neusten Version      -->
<!ELEMENT def-version  (#PCDATA)  >
<!ELEMENT new-version  (#PCDATA)  >
<!--                    Kategorie des Paketes; ggf. Subkategorien  -->
<!ELEMENT kategorie    (#PCDATA , kategorie?) >
<!-- ============================================================= -->
<!--                    Es folgt die Beschreibung einer
                        PaketVERSION                               -->
<!-- ============================================================= -->
<!ELEMENT version  ( instdir , neues-feature* , freigabedatum , 
                        doku+ , size  , abhaengigkeiten*) >
<!--                    Angabe der Support-Kategorie und der
                        Versionsnummer                             -->
<!ATTLIST version	support-kategorie (A|B) "B" 
			nummer		  CDATA #REQUIRED>
<!--                    Angabe, von welchen Paketen das aktuelle
                        Paket abhaengt                             -->
<!ELEMENT abhaengigkeiten  (paketbezeichner)+ >
<!--                    stichpunktartige Beschreibung eines neuen
                        Features dieser Version                    -->
<!ELEMENT neues-feature		(#PCDATA)  >
<!--                    Freigabedatum                              -->
<!ELEMENT freigabedatum  (tag, monat, jahr)  >
<!--                    tag von 1 bis 31                           -->
<!ELEMENT tag 	 (#PCDATA) >
<!--                    monat von 1 bis 12                         -->
<!ELEMENT monat	 (#PCDATA) >
<!--                    jahr vierstellig                           -->
<!ELEMENT jahr	 (#PCDATA) >
<!--                    Bezeichner eines Paketes inklusive Version -->
<!ELEMENT paketbezeichner  (name , vnummer?)  >
<!--                    Name eines Paketes                         -->
<!ELEMENT name  (#PCDATA) 	 >
<!--                    Version eines Paketes                      -->
<!ELEMENT vnummer  (#PCDATA) >Die Bedeutung der in der DTD deklarierten Elementtypen lässt sich am besten an einer Instanz erklären. Dazu dient in diesem Fall die folgende Paketbeschreibung des Softwarepakets tetex:

<!DOCTYPE swpaket PUBLIC "-//UNIDO-IRB//DTD swpaket 1.0//DE" "swpaket.dtd">
<swpaket name="tetex">
  <instdir>/app/unido-inf/sun4_56/tetex</instdir>
  <beschreibung>TeTeX - LaTeX, TeX; Textsatzsystem von 
    Donald Knuth/Leslie Lamport; Paket zusammengestellt 
    von Thomas Esser (TE)</beschreibung>
  <size>110339</size>
  <def-version>1.0.6</def-version>
  <new-version>1.0.6</new-version>
  <kategorie>text<kategorie>verarbeitung</kategorie></kategorie>
  <version nummer="1.0.6" support-kategorie="B">
    <instdir>1.0.6</instdir>
    <freigabedatum><tag>1</tag><monat>1</monat><jahr>1998</jahr></freigabedatum>
    <doku art="catman" ort="man">Manualpages</doku>
    <doku art="info" ort="info">GNU Info-Files</doku>
    <doku art="lokal" ort="texmf/doc/index.html">Die gesamte 
         Dokumentation des Pakets in HTML</doku>
    <doku art="url" ort="http://www.tug.org/teTeX/">The teTeX 
         Homepage</doku>
    <doku art="url"
    ort="http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes">TeX 
         Frequently Asked Questions</doku>
    <doku art="url" ort="http://www.latex-project.org/">The LaTeX 
         Homepage</doku>
    <size>109860</size>
  </version>
  <version nummer="0.9pre" support-kategorie="A">
    <instdir>0.9pre</instdir>
    <freigabedatum><tag>1</tag><monat>7</monat><jahr>1997</jahr></freigabedatum>
    <doku art="catman" ort="man">Manualpages</doku>
    <doku art="info" ort="info">GNU Info-Files</doku>
    <doku art="url" ort="http://www.tug.org/teTeX/">The teTeX 
         Homepage</doku>
    <doku art="url"
    ort="http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes">TeX 
         Frequently Asked Questions</doku>
    <doku art="url" ort="http://www.latex-project.org/">The LaTeX homepage</doku>
    <size>53948</size>
  </version>
</swpaket>Der Name des Paketes ist als Attributwert des Wurzelelements angegeben. Die darin enthaltenen Tochterelemente enthalten der Reihe nach die folgenden Informationen:
Diese Informationen beziehen sich auf das gesamte Paket. Es schließt sich für jede installierte Version jeweils ein Block an, der innerhalb von <version>...</version> steht. Im vorliegenden Beispiel gibt es zwei Versionen mit den Nummern 1.0.6 und 0.9pre.
Jede Version liegt in einem eigenen Installationsverzeichnis, relativ zum oben genannten Verzeichnis. Nach dem Freigabedatum folgen Elemente, die Auskunft über die Dokumentation des Pakets geben, abgeschlossen durch die Angabe des Versionsumfangs in KBytes. Für die Dokumentation sind hier mehrere verschiedene Varianten zu sehen:
Aus diesem Datenbestand wird mit Hilfe eines DSSSL-Stylesheets on-the-fly eine HTML-Ansicht erzeugt (vgl. Abbildung 60).