Index: head/de_DE.ISO8859-1/books/fdp-primer/Makefile =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/Makefile (revision 46772) +++ head/de_DE.ISO8859-1/books/fdp-primer/Makefile (revision 46773) @@ -1,52 +1,54 @@ # # $FreeBSD$ # $FreeBSDde$ -# basiert auf: r38826 +# basiert auf: r42410 # # Build the FreeBSD Documentation Project Primer. # MAINTAINER=de-bsd-translators@de.FreeBSD.org DOC?= book FORMATS?= html-split html INSTALL_COMPRESSED?= gz INSTALL_ONLY_COMPRESSED?= # # SRCS lists the individual XML files that make up the document. Changes # to any of these files will force a rebuild # # XML content SRCS= book.xml SRCS+= overview/chapter.xml -SRCS+= psgml-mode/chapter.xml -SRCS+= see-also/chapter.xml -SRCS+= sgml-markup/chapter.xml -SRCS+= sgml-primer/chapter.xml -SRCS+= stylesheets/chapter.xml +SRCS+= tools/chapter.xml +SRCS+= working-copy/chapter.xml SRCS+= structure/chapter.xml SRCS+= doc-build/chapter.xml SRCS+= the-website/chapter.xml -SRCS+= tools/chapter.xml +SRCS+= xml-primer/chapter.xml +SRCS+= xhtml-markup/chapter.xml +SRCS+= docbook-markup/chapter.xml +SRCS+= stylesheets/chapter.xml SRCS+= translations/chapter.xml SRCS+= writing-style/chapter.xml +SRCS+= editor-config/chapter.xml +SRCS+= see-also/chapter.xml SRCS+= examples/appendix.xml # Images from the cross-document image library IMAGES_LIB= callouts/1.png IMAGES_LIB+= callouts/2.png IMAGES_LIB+= callouts/3.png IMAGES_LIB+= callouts/4.png IMAGES_LIB+= callouts/5.png # Entities SRCS+= chapters.ent URL_RELPREFIX?= ../../../.. DOC_PREFIX?= ${.CURDIR}/../../.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" Index: head/de_DE.ISO8859-1/books/fdp-primer/book.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/book.xml (revision 46772) +++ head/de_DE.ISO8859-1/books/fdp-primer/book.xml (revision 46773) @@ -1,269 +1,279 @@ %chapters; ]> Die Fibel für neue Mitarbeiter des FreeBSD-Dokumentationsprojekts - + The FreeBSD Documentation Project + - 1998-2012 + 1998-2014 The FreeBSD Documentation Project - 1998-2012 + 1998-2015 The FreeBSD German Documentation Project $FreeBSD$ $FreeBSD$ &legalnotice; Vielen Dank für Ihr Interesse und Ihre Mitarbeit an - der FreeBSD-Dokumentation. Jeder Beitrag ist für uns sehr - wichtig. + der FreeBSD-Dokumentation. Wir freuen uns über jeden Beitrag. - In dieser Fibel wird von der eingesetzten Software bis hin - zu den Vorstellungen des FreeBSD-Dokumentationsprojekts alles - behandelt, was Sie wissen müssen, wenn Sie sich am - FreeBSD-Dokumentationsprojekt beteiligen wollen. + Diese Fibel enthält die Informationen, die Sie für die + Mitarbeit am FreeBSD-Dokumentationsprojekt (auch als + FDP bekannt) benötigen. Diese reichen von + verpflichtender und optionaler Software bis hin zur Philosophie + des FreeBSD-Dokumentationsprojekts. Bitte beachten Sie, dass diese Fibel jederzeit unter Bearbeitung und noch - nicht vollständig ist. + nicht vollständig ist. Falls Sie einen Fehler finden, würden + wir uns freuen, wenn Sie uns darüber informieren. Benutzungshinweise Die Eingabeaufforderungen - Die folgende Tabelle zeigt die normale Eingabeaufforderung - des Systems und die Eingabeaufforderung des Superusers. Die in - diesem Buch vorkommenden Beispiele benutzen die jeweilige - Eingabeaufforderung, um zu zeigen, unter welchem Benutzer die - Beispiele ausgeführt werden sollten. + Die folgende Tabelle enthält die Eingabeaufforderung eines + normalen Benutzers sowie die des Superusers. Die in + diesem Buch verwendeten Beispiele benutzen die jeweilige + Eingabeaufforderung, um zu zeigen, als welcher Benutzer die + Beispiele ausgeführt werden. Benutzer Eingabeaufforderung Normaler Benutzer &prompt.user; Superuser &prompt.root; Typographische Festlegungen Um die Lesbarkeit zu erhöhen, werden in diesem Dokument die im folgenden genannten typographischen Festlegungen verwendet: Bedeutung Beispiel Kommandonamen Geben Sie ls -a ein, um alle Dateien anzuzeigen. Datei- und Verzeichnisnamen Bearbeiten Sie .login. - Bildschirmein- und ausgaben + Bildschirmausgaben You have mail. + Bildschirmein- und ausgaben + + &prompt.user; date +"The time is %H:%M" +The time is 09:18 + + + Referenzen auf Hilfeseiten Mit &man.su.1; können Sie sich als ein anderer Benutzer anmelden. Benutzer- und Gruppennamen - Ich bin root, ich darf - das. + Ich bin root, + ich darf das. Hervorhebungen Hier müssen Sie vorsichtig sein. - Argumente auf der Kommandozeile, die durch - existierende Namen, Dateien oder Variablen ersetzt - werden müssen + Text, der vom Benutzer durch seine Eingaben ersetzt + werden muss - Dateien können Sie mit dem Befehl - rm - Dateiname - löschen. + Um die Hilfeseiten nach einem bestimmten Begriff zu + durchsuchen, geben Sie + man -k Suchbegriff + ein. Umgebungsvariablen $HOME ist Ihr Benutzerverzeichnis. Anmerkungen, Tipps, wichtige Hinweise, Warnungen und Beispiel An einigen Stellen innerhalb dieses Buchs werden wichtige oder nützliche Hinweise gegeben, die besonders hervorgehoben sind. Hier ein kurzer Überblick über die verwendeten Darstellungen. Anmerkungen werden so dargestellt. Sie enthalten Informationen die Sie nur zu lesen brauchen, wenn Sie direkt davon betroffen sind. Tipps sind Informationen, die vielleicht hilfreich sein könnten oder aufzeigen, wie bestimmte Dinge einfacher zu bewerkstelligen sind. Besonders wichtige Punkte werden so hervorgehoben. Meist enthalten sie Hinweise auf vielleicht zusätzlich auszuführende Schritte oder Dinge, die besonders zu beachten sind. Warnungen werden wie dieser Abschnitt dargestellt und weisen auf mögliche Schäden hin, die entstehen können, falls die beschriebenen Schritte nicht genau befolgt oder Hinweise nicht beachtet werden. Die Palette der möglichen Schäden reicht von Hardwareschäden bis hin zu Datendatenverlust durch ein versehentliches Löschen von wichtigen Dateien oder ganzen Verzeichnissen. Ein Beispiel Beispiele, die so wie hier dargestellt werden, enthalten meist kleine Übungen, die nachvollzogen werden sollten, um das vorher beschriebene besser zu verinnerlichen oder mit den erzeugten Ausgaben vertraut zu werden. Danksagungen Ich möchte mich bei Sue Blake, Patrick Durusau, Jon Hamilton, Peter Flynn und Christopher Maden bedanken, die sich die Zeit genommen haben, die frühen Entwürfe dieses Dokuments zu lesen und viele hilfreiche Hinweise und Ratschläge gegeben haben. &chap.overview; &chap.tools; - &chap.xml-primer; - &chap.xml-markup; - &chap.stylesheets; + &chap.working-copy; &chap.structure; &chap.doc-build; &chap.the-website; + &chap.xml-primer; + &chap.xhtml-markup; + &chap.docbook-markup; + &chap.stylesheets; &chap.translations; &chap.writing-style; - &chap.psgml-mode; + &chap.editor-config; &chap.see-also; &app.examples; Index: head/de_DE.ISO8859-1/books/fdp-primer/chapters.ent =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/chapters.ent (revision 46772) +++ head/de_DE.ISO8859-1/books/fdp-primer/chapters.ent (revision 46773) @@ -1,28 +1,30 @@ - - - + + + + + + - + - Index: head/de_DE.ISO8859-1/books/fdp-primer/doc-build/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/doc-build/chapter.xml (revision 46772) +++ head/de_DE.ISO8859-1/books/fdp-primer/doc-build/chapter.xml (revision 46773) @@ -1,540 +1,499 @@ Die Erzeugung der Zieldokumente JohannKoisÜbersetzt von Dieses Kapitels erklärt detailliert, wie der Bau der Dokumentation organisiert - ist und wie Sie diesen Prozess beeinflussen - können. + ist und wie Sie diesen Prozess mit &man.make.1; + beeinflussen können. - Nachdem Sie dieses Kapitel gelesen haben, werden Sie: - - - - Wissen, wie Sie (unter Verwendung der im Kapitel SGML-Werkzeuge beschriebenen Tools) - die FDP-Dokumentation selbst bauen können. - - - - In der Lage sein, sowohl die - make-Anweisungen der für - jedes Dokument benötigten Makefiles - als auch die Anweisungen der projektweiten Vorgaben der Datei - doc.project.mk zu lesen und zu - verstehen. - - - - Den Bau der Dokumentation über - make-Variablen und - make-Target anpassen - können. - - - - Für den Bau der FreeBSD-Dokumentation benötigte + <title>Für den Bau der &os;-Dokumentation benötigte Werkzeuge - Zusätzlich zu den im Kapitel XML-Werkzeuge beschriebenen - Werkzeugen benötigen Sie noch folgende Programme: + Die folgende Werkzeuge werden benötigt, um die + FDP-Dokumente zu bauen und zu installieren. - Das wichtigste Werkzeug zum Bau der Dokumentation ist - make, genauer + Das wichtigste Werkzeug ist &man.make.1;, genauer Berkeley Make. Der Bau von Paketen erfolgt unter FreeBSD mit - pkg_create. Wenn Sie ein - anderes Betriebssystem als FreeBSD einsetzen, müssen - Sie entweder ohne Pakete auskommen oder den Quellcode - selbst kompilieren. + &man.pkg.create.1;. - gzip dient zur Erstellung - komprimierter Versionen der Dokumentation. Unterstützt - werden sowohl bzip2- als auch - zip-Archive. Wollen Sie Pakete - der Dokumentation erstellen, benötigen Sie auch noch - tar. + &man.gzip.1; dient zur Erstellung + komprimierter Versionen der Dokumentation. &man.bzip2.1; wird + ebenfalls unterstützt. Wollen Sie Pakete der Dokumentation + erstellen, benötigen Sie auch &man.tar.1;. - Mit install installieren - Sie in der Standardeinstellung die Dokumentation auf Ihrem - System. Es gibt aber auch alternative Wege, die Dokumentation - zu installieren. + Mit &man.install.1; installieren Sie die Dokumentation auf + Ihrem System. Die <filename>Makefile</filename>s des Dokumentationsbaums verstehen - Innerhalb des FreeBSD Documentation Projects gibt es drei + Innerhalb des &os; Documentation Projects gibt es drei verschiedene Arten von Makefiles: Ein Makefile in einem Unterverzeichnis gibt Anweisungen an dessen Dateien und Unterverzeichnisse weiter. Ein Dokument-Makefile beschreibt das Dokument, das aus dem Inhalt des jeweiligen Verzeichnisses gebaut werden soll. Make-Includes sind der "Klebstoff", der für den Bau der Dokumentation erforderlich ist. In der Regel heissen diese Dokumente - doc.xxx.mk. + doc.xxx.mk. Unterverzeichnis-<filename>Makefile</filename>s Derartige Makefiles sind in der Regel wie folgt aufgebaut: SUBDIR =articles SUBDIR+=books COMPAT_SYMLINK = en DOC_PREFIX?= ${.CURDIR}/.. .include "${DOC_PREFIX}/share/mk/doc.project.mk" Die ersten vier nicht-leeren Zeilen definieren die - make-Variablen + &man.make.1;-Variablen SUBDIR, COMPAT_SYMLINK, und DOC_PREFIX. - Die erste SUBDIR-Anweisung weist + Die SUBDIR-Anweisung weist (ebenso wie die COMPAT_SYMLINK-Anweisung) einer Variable einen Wert zu und überschreibt dabei deren ursprünglichen Wert. Die zweite SUBDIR-Anweisung zeigt, wie man den aktuellen Wert einer Variable ergänzen kann. Nach der Ausführung dieser Anweisung hat die Variable SUBDIR den Wert articles books. Die Anweisung DOC_PREFIX zeigt, wie man einer Variable einen Wert zuweist (vorausgesetzt, die Variable ist nicht bereits definiert). Eine derartige Anweisung ist beispielsweise sinnvoll, wenn sich DOC_PREFIX nicht dort befindet, wo es vom Makefile erwartet wird. Durch das Setzen dieser Variable kann der korrekte Wert an das Makefile übergeben werden. Was heißt dies nun konkret? Mit den SUBDIR-Anweisungen legen Sie fest, welche Unterverzeichnisse beim Bau der Dokumentation eingeschlossen werden müssen. COMPAT_SYMLINK wird zur Erstellung von symbolischen Links zwischen den jeweiligen Dokumentsprachen und deren offizieller Kodierung benötigt (so wird beispielsweise doc/en nach en_US.ISO-8859-1 verlinkt). DOC_PREFIX gibt den Pfad zum Wurzelverzeichnis des Quellcode-Baums des FreeBSD Documentation Projects an. Diese Vorgabe kann jederzeit durch einen eigenen Wert ersetzt werden. Bei .CURDIR handelt es - sich um eine in make eingebaute + sich um eine in &man.make.1; eingebaute Variable, die den Pfad des aktuellen Verzeichnisses enthält. Die letzte Zeile bindet doc.project.mk, - die zentrale, projektweite make-Datei - des FreeBSD Documentation Projects, in den Bau ein. Diese Datei + die zentrale, projektweite &man.make.1;-Datei + des &os; Documentation Projects, in den Bau ein. Diese Datei enthält den "Klebstoff", der die diversen Variablen in Anweisungen zum Bau der Dokumentation konvertiert. Dokument-<filename>Makefile</filename>s Diese Makefiles definieren diverse make-Variablen mit Vorgaben zum Bau der im Verzeichnis enthaltenen Dokumentation. Dazu ein Beispiel: MAINTAINER=nik@FreeBSD.org DOC?= book FORMATS?= html-split html INSTALL_COMPRESSED?= gz INSTALL_ONLY_COMPRESSED?= # SGML content SRCS= book.xml DOC_PREFIX?= ${.CURDIR}/../../.. .include "$(DOC_PREFIX)/share/mk/docproj.docbook.mk" Die Variable MAINTAINER ist von zentraler Bedeutung. Sie legt fest, wer für ein bestimmtes Dokument des FreeBSD Documentation Projects verantwortlich ist. DOC (ohne die Erweiterung .xml) ist der Name des Hauptdokuments des Verzeichnisses, in dem sich das Makefile befindet. Mit SRCS-Anweisungen geben Sie alle Dokumente an, aus denen das Dokument besteht. Zusätzlich binden Sie damit wichtige Dateien ein, deren Änderung einen erneuten Bau der Dokumentation erforderlich macht. Mit FORMATS geben Sie an, in welchen Formaten die Dokumentation gebaut werden soll. INSTALL_COMPRESSED enthält die Standardvorgaben, die beim Bau komprimierter Pakte der Dokumentation verwendet werden sollen. Der Variable INSTALL_ONLY_COMPRESS (die in der Voreinstellung leer ist) wird nur dann ein Wert zugewiesen, wenn ausschließlich komprimierte Pakete der Dokumentation erstellt werden sollen. - - Die Zuweisung von Werten an verschiedene Variablen wurde - bereits im Abschnitt Unterverzeichnis-Makefiles - behandelt. - - Die Variable DOC_PREFIX und die verschiedenen Include-Anweisungen sollten Ihnen ebenfalls bereits vertraut sein. - <application>Make</application>-Includes des FreeBSD - Documentation Projects + &man.make.1;-Includes des &os; Documentation Projects Diese Dateien lassen sich am besten verstehen, indem man sich deren Inhalt näher ansieht. Konkret handelt es sich dabei um folgende Dateien: doc.project.mk ist die Haupt-Include-Datei, die bei Bedarf alle folgenden Include-Dateien enthält. doc.subdir.mk sorgt dafür, dass alle benötigten Verzeichnisse (und Unterverzeichnisse) beim Bau der Dokumentation durchlaufen werden. doc.install.mk definiert Variablen, die die Installation der Dokumentation beeinflussen. doc.docbook.mk wird verwendet, wenn die Variable DOCFORMAT den Wert docbook hat und die Variable DOC gesetzt ist. <filename>doc.project.mk</filename> Diese Datei hat folgenden Aufbau: DOCFORMAT?= docbook MAINTAINER?= doc@FreeBSD.org PREFIX?= /usr/local PRI_LANG?= en_US.ISO8859-1 .if defined(DOC) .if ${DOCFORMAT} == "docbook" .include "doc.docbook.mk" .endif .endif .include "doc.subdir.mk" .include "doc.install.mk" Variablen DOCFORMAT und MAINTAINER enthalten Standardwerte, falls ihnen über das Dokument-Makefile keine anderen Werte zugewiesen werden. Bei PREFIX handelt es sich um das Präfix, unter dem die zum Bau der Dokumentation erforderlichen SGML-Werkzeuge installiert sind. In der Regel handelt es sich dabei um /usr/local. PRI_LANG sollte auf die Sprache und Kodierung eingestellt werden, die unter den Leser der Dokumentation am häufigsten verwendet wird. Diese Variable hat den Standardwert "US English". - PRI_LANG beeinflusst in keinster - Weise, welche Dokumente gebaut werden können oder + PRI_LANG beeinflusst nicht, + welche Dokumente gebaut werden können oder sollen. Diese Variable wird lediglich dazu verwendet, häufig verwendete Dokumente in das Wurzelverzeichnis der installierten Dokumentation zu verlinken. Bedingungen Die Zeile .if defined(DOC) ist ein - Beispiel für eine - make-Bedingung, die (analog zum + Beispiel für eine &man.make.1;-Bedingung, die (analog zum Einsatz in anderen Programmen) festlegt, was geschehen soll, wenn eine Bedingung "wahr" oder "falsch" ist. defined ist eine Funktion, die zurückgibt, ob die angegebene Variable existiert oder nicht. .if ${DOCFORMAT} == "docbook" testet, ob die Variable DOCFORMAT den Wert "docbook" hat. Ist dies der Fall, wird doc.docbook.mk mit in den Bau aufgenommen. Die zwei .endifs schließen die zwei weiter oben definierten Bedingungen. <filename>doc.subdir.mk</filename> Den Inhalt dieser Datei hier zu beschreiben, würde zu weit führen. Sie sollten aber nach dem Lesen der vorangegangenen Abschnitte und der folgenden Ausführungen in der Lage sein, Inhalt und Aufgabe dieser Datei zu verstehen. Variablen SUBDIR legt die Unterverzeichnisse fest, deren Inhalt beim Bau der Dokumentation inkludiert werden muss. Mit ROOT_SYMLINKS wird der Name der Verzeichnisse angegeben, die von ihrer tatsächlichen Position aus in das Wurzelverzeichnis, unter dem die Dokumentation installiert wird, verlinkt werden sollen. Vorausgesetzt, bei der verwendeten Sprache handelt es sich um die primäre Sprache (die über PRI_LANG festgelegt wird). COMPAT_SYMLINK wird im Abschnitt Unterverzeichnis-Makefiles beschrieben. Targets und Makros Abhängigkeiten (Dependencies) werden folgendermaßen definiert: - target - abhaengigkeit1 abhaengigkeit2 .... + target + abhaengigkeit1 abhaengigkeit2 .... Um target zu bauen, müssen Sie zuvor die angegebenen Abhängigkeiten bauen. Daran anschließend können Anweisungen zum Bau des angegebenen Targets folgen, falls der Konvertierungsprozess zwischen dem Target und seinen Abhängigkeiten nicht bereits früher definiert wurde oder falls die Konvertierung nicht der Standardkonvertierungsmethode entspricht. Die spezielle Abhängigkeit .USE definiert das Äquivalent eines Makros. _SUBDIRUSE: .USE .for entry in ${SUBDIR} @${ECHO} "===> ${DIRPRFX}${entry}" @(cd ${.CURDIR}/${entry} && \ ${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ ) .endfor In diesem Beispiel kann _SUBDIRUSE nun als Makro, welches die angegebenen Befehle ausführt, verwendet werden, indem es im Makefile als Abhängigkeit angegeben wird. Was unterscheidet dieses Makro nun von beliebigen anderen Targets? Der Hauptunterschied ist, dass es nach den Anweisungen der Bauprozedur, in der es als Abhängigkeit angegeben ist, ausgeführt wird. Außerdem ändert es die Variable .TARGET (die den Namen des aktuell gebauten Targets enthält) nicht. clean: _SUBDIRUSE rm -f ${CLEANFILES} In diesem Beispiel führt clean das Makro _SUBDIRUSE aus, nachdem es den Befehl rm -f ${CLEANFILES} erfolgreich ausgeführt hat. Dadurch löscht clean zwar beim Wechsel in ein neues Unterverzeichnis beim Bau erstellte Dateien, aber nicht beim Wechsel aus einem Unterverzeichnis in ein übergeordnetes Verzeichnis. Vorhandene Targets install und package arbeiten nacheinander alle Unterverzeichnisse ab und rufen dabei jeweils ihre realen Versionen (realinstall beziehungsweise realpackage) auf. clean entfernt alle Dateien, die beim Bau der Dokumentation erzeugt wurden (dies sowohl im aktuellen Verzeichnis als auch in allen Unterverzeichnissen). cleandir hat die gleiche Aufgabe, würde aber zusätzlich die Objekt-Verzeichnisse löschen (falls diese existieren). Weitere Bedingungen exists gibt "wahr" zurück, wenn die angegebene Datei bereits existiert. empty gibt "wahr" zurück, wenn die angegebene Variable leer ist. target gibt "wahr" zurück, wenn das angegebene Target noch nicht existiert. Schleifenkonstrukte in <command>make (.for)</command> .for erlaubt es, bestimmte Anweisungen für jedes Element einer Variable zu wiederholen, indem dieser Variable in jedem Durchlauf der Schleife das jeweilige Element der untersuchten Liste zugewiesen wird. _SUBDIRUSE: .USE .for entry in ${SUBDIR} @${ECHO} "===> ${DIRPRFX}${entry}" @(cd ${.CURDIR}/${entry} && \ ${MAKE} ${.TARGET:S/realpackage/package/:S/realinstall/install/} DIRPRFX=${DIRPRFX}${entry}/ ) .endfor Falls das Verzeichnis SUBDIR leer ist, würde in unserem Beispiel keine Aktion erfolgen. Enthält das Verzeichnis hingegen ein oder mehrere Elemente, werden die Anweisungen zwischen .for und .endfor für jedes Element ausgeführt, wobei entry durch das jeweilige Element ersetzt werden würde. Index: head/de_DE.ISO8859-1/books/fdp-primer/docbook-markup/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/docbook-markup/chapter.xml (nonexistent) +++ head/de_DE.ISO8859-1/books/fdp-primer/docbook-markup/chapter.xml (revision 46773) @@ -0,0 +1,46 @@ + + + + + DocBook Markup (noch nicht übersetzt) + + Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte + das Original in + englischer Sprache. Wenn Sie bei der Übersetzung + mithelfen wollen, schicken Sie bitte eine E-Mail + an &a.de.translators;. + Property changes on: head/de_DE.ISO8859-1/books/fdp-primer/docbook-markup/chapter.xml ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/xml \ No newline at end of property Index: head/de_DE.ISO8859-1/books/fdp-primer/editor-config/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/editor-config/chapter.xml (nonexistent) +++ head/de_DE.ISO8859-1/books/fdp-primer/editor-config/chapter.xml (revision 46773) @@ -0,0 +1,46 @@ + + + + + Editor Configuration (noch nicht übersetzt) + + Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte + das Original in + englischer Sprache. Wenn Sie bei der Übersetzung + mithelfen wollen, schicken Sie bitte eine E-Mail + an &a.de.translators;. + Property changes on: head/de_DE.ISO8859-1/books/fdp-primer/editor-config/chapter.xml ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/xml \ No newline at end of property Index: head/de_DE.ISO8859-1/books/fdp-primer/overview/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/overview/chapter.xml (revision 46772) +++ head/de_DE.ISO8859-1/books/fdp-primer/overview/chapter.xml (revision 46773) @@ -1,357 +1,272 @@ Überblick - Herzlich Willkommen beim FreeBSD-Dokumentationsprojekt. - Qualitativ hochwertige Dokumentation ist ein wichtiger - Erfolgsfaktor und sehr bedeutend für die Verbreitung von - FreeBSD. Die wichtigste Quelle dafür ist das - FreeBSD-Dokumentationsprojekt (FDP). Jeder Beitrag, der zu diesem - Projekt geleistet wird, ist ungemein wertvoll. + Herzlich Willkommen beim FreeBSD-Dokumentationsprojekt + (auch nur FDP genannt). Qualitativ hochwertige + Dokumentation ist sehr wichtig für den Erfolg von &os;. Jeder + Beitrag, der zu diesem Projekt geleistet wird, ist ungemein wertvoll. - Es ist das Anliegen dieser Fibel, den Leser mit dem FDP - vertraut zu machen und zu erklären, wie das FDP - organisiert ist, wie man selber Dokumente - erstellt und an das FDP einreicht und wie - die verfügbaren Werkzeuge effektiv beim Schreiben - eingesetzt werden können. + Dieses Dokument macht den Leser mit dem + FDP vertraut und erklärt, wie man + selbst Dokumente erstellt und einreicht und wie die verfügbaren + Werkzeuge effektiv beim Schreiben eingesetzt werden + können. - - Mitgliedschaft - + Jeder kann zum FDP beitragen. Die einzige + Voraussetzung ist die Bereitschaft, helfen zu wollen. - Wie jedes Open-Source-Projekt, ist auch das FDP auf die Mithilfe - vieler angewiesen. Deshalb ist jeder herzlich eingeladen - mitzuarbeiten. Die dafür erforderlichen Voraussetzungen sind - gering und es gibt keine Verpflichtung eine bestimmte Menge an - Dokumenten pro Monat oder Jahr beizusteuern. Das Einzige, was Sie - tun müssen, ist sich auf der Mailingliste &a.doc; einzutragen. + Nach dem Lesen dieses Dokuments werden Sie in der Lage sein, - Nach dem Lesen der FDP-Fibel sollte man wissen: - - welche Dokumente durch das FDP betreut werden, + die vom FDP betreuten Dokumente zu + erkennen, - wie man SGML-Dokumente liest und den SGML-Quellcode der - durch das FDP betreuten Dokumente versteht, + die benötigten Dokumentations-Werkzeuge und Dateien + zu installieren, - wie man selbst Änderungen an Dokumenten vornehmen - kann und + Änderungen an der Dokumentation vorzunehmen, - wie man Änderungen zur Begutachtung durch das FDP - einreichen kann. + Änderungen zur Begutachtung durch das FDP + einreichen können. Die FreeBSD-Dokumentationsreihe Das FDP umfasst vier verschiedene Kategorien: - - - Manualpages - + - Die englischen Manualpages wurden nicht vom FDP - geschrieben, da sie ein Teil des Basissystems sind. Jedoch - können bzw. wurden bereits Teile von existierenden - Manualpages umformuliert, um sie verständlicher zu - machen oder um Fehler zu beheben. - - Für die Übersetzung der Manualpages des - Systems in die verschiedenen Sprachen sind die einzelnen - Übersetzergruppen verantwortlich. Alle dabei - entstandenen Übersetzungen gehören zum - FDP. + Handbook: Das Handbuch ist die + umfassende Quelle und Referenz für &os;-Benutzer. - - - Die FAQ - - Das Ziel der FAQ ist es, Fragen, die auf den - verschiedenen Mailinglisten und in Newsgruppen - regelmäßig diskutiert werden, nach einem - einfachen Frage- und Antwort-Muster zu behandeln. Das - schließt nicht aus, das auf bestimmte Fragen - ausführlich und umfassend eingegangen wird. + FAQ: Eine Sammlung von kurzen + Fragen und Antworten zu Themen, die auf den + verschiedenen Mailinglisten und in auf &os; spezialisierten + Foren regelmäßig diskutiert werden. Lange und komplizierte + Antworten werden Sie hier nicht finden. - - - Das Handbuch - - Das Ziel des Handbuches ist es, die - umfassende Quelle und Referenz im Netz für - FreeBSD-Benutzer zu sein. + Manualpages: Die englischen + Manualpages werden normalerweise nicht vom FDP + geschrieben, da sie ein Teil des Basissystems sind. Jedoch + können bzw. wurden bereits Teile von existierenden + Manualpages umformuliert, um sie verständlicher zu + machen oder um Fehler zu beheben. - - - Die Webseite - - Die Webseite http://www.FreeBSD.org - und ihre vielen Spiegel auf der ganzen Welt vertreten das - FreeBSD-Projekt im WWW. Für viele Menschen - ist sie der erste Kontakt mit FreeBSD. + Die Webseite: Die Hauptpräsenz + von &os; im Internet, zu erreichen unter http://www.FreeBSD.org + oder einem der zahlreichen Spiegelserver. Für viele Menschen + ist sie der erste Kontakt mit &os;. - - + + Übersetzer-Teams sind für die Übersetzung des Handbuchs und + der Webseite in verschiedene Sprachen verantwortlich. Manualpages + werden derzeit nicht übersetzt. + Die Quellen für die FreeBSD-Website, das &os; Handbuch - sowie die &os; FAQ werden im doc/ - Subversion-Repository von &os; verwaltet, das Sie über + sowie die &os; FAQ werden im + Dokumentations-Repository von &os; verwaltet, das Sie über https://svn.FreeBSD.org/doc/ erreichen können. - Manualpages werden im src/ - Subversion-Repository von &os; verwaltet, das Sie über + Manualpages werden von &os; im einem eigenen + Quellcode-Repository verwaltet, das Sie über https://svn.FreeBSD.org/base/ erreichen können. - Das bedeutet, dass alle Änderungen an den - Dateien für jeden verfügbar sind und sich jeder - mit svn eine lokale Kopie der - Dokumentation anlegen kann. + Committ-Nachrichten des FDP + sind über svn abrufbar und werden + zusätzlich unter + &a.svn-doc-all.url; + archiviert. - Parallel zum FDP haben viele Menschen Anleitungen + Beide Repositories sind auch über ein Web-Interface erreichbar: + sowie + . + + Viele Menschen haben &os;-spezifische Anleitungen geschrieben und Webseiten mit Bezug zu FreeBSD erstellt. Einige davon werden im Subversion-Archiv verwaltet, sofern der Autor dem zugestimmt hat. In anderen Fällen hat sich der Autor entschlossen, seine Dokumentation außerhalb des zentralen - FreeBSD-Archivs zu verwalten. Das FDP bemüht sich, so - viele Verweise wie möglich auf solche Quellen + FreeBSD-Archivs zu verwalten. Das FDP bemüht sich, + so viele Verweise wie möglich auf solche Quellen bereitzustellen. - - Bevor es losgeht - - Zum Verständnis der folgenden Kapitel sollte folgendes - bereits bekannt sein: - - - - Wie eine aktuelle lokale Kopie des FreeBSD - Subversion-Repository mit Hilfe von - svn angelegt und gepflegt - werden kann. - - - - Wie neue Programme mit Hilfe des - FreeBSD-Portsystems oder mittels &man.pkg.add.1; - heruntergeladen und installiert werden. - - - - - Der Schnellstart + Schnellstart - Falls man einfach loslegen möchte und sich sicher genug - fühlt, um alles weitere erst bei Bedarf nachzusehen, kann - man einfach den folgenden Anweisungen folgen: + Dieser Abschnitt beschreibt, was Sie tun müssen, bevor + Sie Änderungen an der &os;-Dokumentation vornehmen können. + Abonnieren Sie die Mailingliste &a.doc;. Einige Mitglieder dieser + Mailingliste sind auch auf dem IRC-Kanal + #bsddocs auf EFnet erreichbar. Nehmen + Sie mit Ihnen Kontakt auf, wenn Sie Fragen oder Probleme bei + der Arbeit an der &os;-Dokumentation haben. - Zuerst muß der Metaport textproc/docproj auf dem - betreffenden Arbeitsrechner installiert werden. + + - &prompt.root; cd /usr/ports/textproc/docproj -&prompt.root; make JADETEX=no install + + Installieren Sie den Metaport + textproc/docproj als Port oder Paket, um + automatisch alle für die Arbeit an der Dokumentation benötigten + Werkzeuge zu installieren. - Laden Sie mit svn eine lokale - Kopie des FreeBSD-doc-Verzeichnisbaumes - herunter. + Installieren Sie eine lokale Arbeitskopie der Dokumentation + von einem Spiegelserver des &os;-Repository nach + ~/doc (lesen Sie dazu + auch ). - Selbst wenn Sie nur über eine geringe Bandbreite - oder wenig freien Plattenplatz verfügen, müssen Sie - mindestens die Verzeichnisse head/share - sowie - head/language/share - auschecken, um an der Dokumentation arbeiten zu können. - Dazu ein Beispiel: + &prompt.user; svn checkout https://svn0.us-west.FreeBSD.org/doc/head ~/doc + - &prompt.user; mkdir -p head/share -&prompt.user; mkdir -p head/en_US.ISO8859-1/share -&prompt.user; svn checkout https://svn0.us- -east.FreeBSD.org/doc/head/share head/share -&prompt.user; svn checkout https://svn0.us- -east.FreeBSD.org/doc/head/en_US.ISO8859-1/share head/en_US.ISO8859-1/share + + Ihr Texteditor sollte für die Arbeit an der + &os;-Dokumentation wie folgt konfiguriert sein: - Für den Fall, dass ausreichend Platz auf der - Festplatte vorhanden ist, kann auch eine - vollständige Arbeitskopie des gesamten Subversion-Baumes - anlegt werden. + + + Zeilenumbruch nach 70 Zeichen. + + + Tabstop auf 2 Zeichen. + + + 8 Leerzeichen sollen durch einen Tabstop ersetzt + werden. + + - &prompt.user; svn checkout https://svn0.us- -east.FreeBSD.org/doc/head head - - - svn0.us-east.FreeBSD.org - ist ein öffentlicher Server. Wählen Sie einen Mirror - in Ihrer Nähe und überprüfen Sie das Serverzertifikat - auf der Seite Subversion - mirror sites. - + Konfigurationen für einige häufig verwendete Editoren + finden Sie im . - Sollte geplant sein, ein existierendes Buch oder einen - existierenden Artikel zu ändern, muß - natürlich noch zusätzlich das betreffende - Verzeichnis aus dem CVS-Archiv geholt werden. Soll hingegen - ein neues Buch oder ein neuer Artikel geschrieben werden, - empfiehlt es sich, auf bestehende Bücher und Artikel - zurückzugreifen und diese als Vorlage zu nutzen. + Aktualisieren Sie Ihre lokale Arbeitskopie: - Ein Artikel über die Konfiguration eines VPNs - zwischen FreeBSD und Windows 2000 kann wie - folgt erstellt werden: + &prompt.user; svn up ~/doc + - - - Zuerst wird das Verzeichnis - articles aus dem FreeBSD-CVS-Archiv - lokal angelegt: + + Bearbeiten Sie die Datei. Bevor Sie umfangreiche Änderungen + an einer Datei vornehmen, kündigen Sie die geplanten Änderungen + bitte auf der Mailingliste an. - &prompt.user; svn checkout https://svn0.us- -east.FreeBSD.org/doc/head/en_US.ISO8859-1/articles - + Eine Auflistung häufig verwendeter Tags und + Entities finden Sie in und + in . + - - Anschließend kopiert man einen bereits - existierenden Artikel und nutzt ihn als Vorlage. In - diesem Beispiel soll der neue Artikel im Verzeichnis - vpn-w2k liegen: + + Nachdem Sie Ihre Änderungen vorgenommen haben, prüfen + Sie diese auf potentielle Probleme: - &prompt.user; cd head/en_US.ISO8859-1/articles -&prompt.user; svn export committers-guide vpn-w2k - - + &prompt.user; igor -R filename.xml | less -RS - Bereits existierende Dokumente, die geändert - werden sollen, können direkt aus dem CVS-Archiv - geholt werden. Das folgende Beispiel zeigt das - für die FAQ aus dem Verzeichnis - head/en_US.ISO8859-1/books/faq: - - &prompt.user; svn checkout https://svn0.us- -east.FreeBSD.org/doc/head/en_US.ISO8859-1/books/faq + Werden Fehler gemeldet, editieren Sie die Datei erneut. + Speichern Sie das Ergebnis und fühen Sie den Test erneut aus. + Wiederholen Sie dies solange, bis keine Fehler mehr gemeldet + werden. - Jetzt können die .xml Dateien - mit einem beliebigen Texteditor bearbeitet werden. + Bauen Sie die Dokumentation immer, + bevor Sie Änderungen einreichen. Dazu führen Sie + make im Hauptverzeichnis des + Dokuments aus, dass Sie gerade bearbeiten. Um beispielsweise + die deutsche Version des &os;-Handbuchs als einzelne + HTML-Dateien zu bauen, führen Sie + make im Verzeichnis + de_DE.ISO8859-1/books/handbook/ aus. + Durch diesen Schritt wird sichergestellt, dass Ihre + Änderungen den Bau der Dokumentation nicht wegen eines + Fehlers abbrechen. - - Danach ist make mit dem Ziel - lint aufzurufen, um das gesamte - Dokument auf Auszeichnungsfehler hin zu untersuchen, ohne - dass zeitaufwändige Transformationen vorgenommen - werden. + Wenn Ihre Änderungen abgeschlossen und erfolgreich + getestet wurden, erzeugen Sie eine + Differenzdatei-Datei mit + Ihren Änderungen: - &prompt.user; make lint + &prompt.user; cd ~/doc +&prompt.user; svn diff > bsdinstall.diff.txt - - - Soll anschließend das Zieldokument erstellt - werden, kann mit Hilfe der Variable - FORMATS bestimmt werden, welche - Ausgabeformate erzeugt werden sollen. Unterstützt werden - momentan html, - html-split, txt, - ps, pdf und - rtf. Die aktuelle Liste der - unterstützten Formate befindet sich am Anfang der Datei - head/share/mk/doc.docbook.mk. Bei der - Verwendung dieser Variable ist es wichtig, darauf zu achten, - dass die Angabe der gewünschten Formate in - Anführungszeichen eingeschlossen wird, sofern mehr als - nur ein Format gleichzeitig erstellt werden soll. - - Wenn das Dokument beispielsweise nach - HTML konvertiert werden soll, kann dies - so vorgenommen werden: - - &prompt.user; make FORMATS=html - - Soll es hingegen in den Formaten html - und txt erzeugt werden, - kann man entweder - &man.make.1; zweimal hintereinander aufrufen: - - &prompt.user; make FORMATS=html -&prompt.user; make FORMATS=txt - - oder beide Formate mit einem Aufruf von &man.make.1; - erzeugen: - - &prompt.user; make FORMATS="html txt" + Geben Sie der Differenzdatei einen aussagekräftigen Namen. + Im angegebenen Bespiel wurden Änderungen im Abschnitt + bsdinstall des Handbuchs vorgenommen. - Zum Schluss müssen die Änderungen an das - FDP mittels &man.send-pr.1; eingesandt werden. - + Reichen Sie Ihre Änderungen über das webbasierte Problembericht-Formular + ein. Geben Sie eine kurze Beschreibung in der Form + [patch] kurze Beschreibung des Problems + ein. Als Kategorie wählen Sie docs + und als Klasse doc-bug. Danach geben + Sie eine Beschreibung Ihrer Änderungen ein sowie eventuelle + weitere wichtige Punkte. Verwenden Sie danach den Button + [ Browse... ], um Ihre + Differenzdatei hochzuladen. + Index: head/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.xml (revision 46772) +++ head/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.xml (nonexistent) @@ -1,1916 +0,0 @@ - - - - - Die XML-Fibel - - Die Mehrzahl der Dokumente des FDPs sind in XML geschrieben. - Ziel dieses Kapitels ist es, genau zu erklären, was - das bedeutet und wie man die XML-Quellen liest und versteht. - Ebenso werden die in den Quellen genutzten Kniffe erklärt, - auf die man beim Lesen der Dokumente stoßen wird. - - Teile dieses Kapitels basieren auf Mark Galassis Get - Going With DocBook. - - - Überblick - - In den guten alten Zeiten war der Umgang mit - elektronischem Text einfach. Man musste - lediglich wissen, welcher Zeichensatz (ASCII, EBCDIC oder ein - anderer) vorlag. Text war einfach Text und sah so aus, wie man - ihn sah. Keine Extras, keine Formatierungen und kein sonstiger - Schnickschnack. - - Für viele Zwecke war dies allerdings nicht ausreichend. - Von einem maschinenlesbaren Text wird erwartet, dass er auch von - Maschinen gelesen und intelligent weiterverarbeitet werden kann. - Einzelne Stellen sollen hervorgehoben werden, andere sollen in ein - Glossar aufgenommen werden oder auf andere Textstellen - verweisen. Dateinamen wiederum sollen in einer - schreibmaschinenähnlichen Schrift auf dem - Bildschirm dargestellt werden, der Ausdruck soll jedoch in - Schrägschrift oder in einer beliebigen anderen - Darstellungsform erfolgen. - - Anfänglich gab es die Hoffnung, dass die - Künstliche Intelligenz (KI) helfen würde, dieses Ziel - zu erreichen. Computer sollte den Text lesen und dazu in der Lage - sein, selbstständig wichtige Formulierungen, Dateinamen, - Benutzereingaben oder Beispiele zu erkennen. Leider verlief die - Entwicklung in diesem Bereich nicht wie gewünscht und Computer - benötigen nach wie vor etwas Unterstützung, bevor sie - Texte vernünftig verarbeiten können. - - Genauer gesagt, man muss ihnen sagen, was was ist. Sehen - wir uns folgende Zeilen an: - -
- Löschen Sie /tmp/foo mittels &man.rm.1;. - - &prompt.user; rm /tmp/foo -
- - Es fällt uns leicht, zu erkennen, was ein Dateiname, ein - einzugebender Befehl oder ein Verweis auf eine Hilfeseite ist. Das - kann ein Computer, der einen Text verarbeitet, nicht. Aus diesem - Grund ist es notwendig, Texte mit weiteren Informationen - auszuzeichnen. - - Der Begriff Auszeichnung Im - angelsächsischen Sprachraum wird von - markup - gesprochen. bedeutet, dass - sich der Wert eines Textes erhöht, aber auch seine Kosten. - Durch Auszeichnungen wird einem Dokument zusätzlicher Text - hinzugefügt, der aber von dem eigentlichen Dokumenteninhalt - auf eine bestimmte Art und Weise unterschieden werden kann, so - dass Programme die Auszeichnung erkennen können und - mittels dieser Informationen während der Verarbeitung in - der Lage sind, Entscheidungen zu treffen. Texteditoren - können diese Auszeichnungselemente vor dem Benutzer - verbergen, um zu vermeiden, dass er durch sie abgelenkt - wird. - - - - - Die durch die Auszeichnungselemente im Textdokument - zusätzlich abgelegten Informationen erhöhen den Wert - des Dokuments. Allerdings muss diese Arbeit in den meisten - Fällen von einem Menschen getan werden – wären - Maschinen dazu fähig, wären zusätzliche - Auszeichnungselemente unnötig. Der damit verbundene Aufwand - erhöht die Kosten, die durch die - Erstellung des Dokuments entstehen. - - Das etwas weiter oben gegebene Beispiel sieht im Quelltext - so aus: - - Löschen Sie /tmp/foo mittels &man.rm.1;. - -&prompt.user; rm /tmp/foo]]> - - Die Auszeichnungselemente sind deutlich vom eigentlichen - Inhalt zu unterscheiden. - - Die Einführung von Auszeichnungselementen setzt voraus, - dass festgelegt wird, welche Bedeutung einzelne Elemente haben - und wie diese interpretiert werden. Sie brauchen daher eine - Auszeichnungssprache, der Sie folgen, wenn Sie eigene - Dokumente verfassen. - - Natürlich kann es keine universelle - Auszeichnungssprache geben und eine einzige mag nicht - ausreichend für alle möglichen Anwendungsfälle - sein. Eine Sprache für technische Dokumente wird sich - wahrscheinlich stark von einer für Kochrezepte - unterscheiden. Die universelle Lösung ist eine - Basissprache, mit deren Hilfe weitere Sprachen entwickelt werden - können – eine - Meta-Auszeichnungssprache also. - - Genau diese Anforderung wird von der Standard Generalized - Markup Language (SGML) erfüllt. Mit ihrer - Hilfe wurden viele andere Auszeichnungssprachen wie - beispielsweise HTML und DocBook, welche beide von FDP genutzt - werden, entwickelt. - - Die eigentliche Sprachdefinition erfolgt in einer - Dokumenten-Typ-Definition (DTD). Innerhalb dieser DTD werden die - Namen der einzelnen Elemente, deren mögliche Reihenfolge - und Verschachtelung sowie weitere Informationen - festgelegt. - - - - - - Eine DTD ist eine - vollständige Definition aller - möglichen Sprachelemente, ihrer - ReihenfolgeBei natürlichen Sprachen spricht - man vom Satzbau – demjenigen Konstrukt, das unter - anderem die Position des Subjekts, Objekts und - Prädikats in einem Satz festlegt., - optionaler Elemente und so weiter und so weiter. Dank dieser - recht formalen Festlegung ist es möglich, - SGML-Parser zu entwickeln, die sowohl ein - Dokument als auch seine DTD einlesen und anhand dieser DTD - prüfen können, ob das Dokument allen Anforderungen der - DTD entspricht. Dieser Vorgang wird allgemein als - Validierung des Dokuments - bezeichnet. - - - Das Validieren eines SGML-Dokuments gegen eine DTD - überprüft lediglich die korrekte Syntax des - Dokuments, dass heißt, ob nur gültige - Auszeichnungselemente verwendet wurden und ihre Reihenfolge - stimmt. Dabei wird nicht geprüft, ob - die Elemente der DTD sinngemäß - verwandt wurden. Sollten beispielsweise alle Dateinamen als - Funktionsnamen ausgezeichnet worden sein, so würde der - Parser keinen Fehler signalisieren. Formaler ausgedrückt: - Der Parser prüft die Syntax, aber nicht die - Semantik. - - - Es ist anzunehmen, dass, wenn man selber vor hat - Dokumentation für das FDP zu schreiben, der - größte Teil davon mit Hilfe von HTML oder DocBook - geschrieben werden wird. Aus diesem Grunde wird an dieser Stelle - nicht erklärt, wie eine DTD entwickelt wird. -
- - - Von Elementen, Tags und Attributen - - - - Alle in SGML geschriebenen DTDs haben bestimmte gemeinsame - Eigenschaften. Das ist nicht verwunderlich, da sich die hinter - SGML stehende Idee unweigerlich bemerkbar macht. Zwei der - markantesten Merkmale dieser Idee sind die Begriffe - Inhalt und - Element. - - - - - - - Von einem Dokument, unabhängig, ob es sich um eine - einzelne Webseite oder ein langes Buch handelt, wird angenommen, - dass es einen wie auch immer gearteten Inhalt hat. Dieser - lässt sich selbst wiederum in Teilelemente - aufspalten, die ebenso zerlegbar sind. Durch die Aufnahme von - Auszeichnungselementen in einen Text, werden diese einzelnen - Elemente eindeutig benannt und voneinander abgegrenzt. - - - - - - Nimmt man zum Beispiel ein typisches Buch, so kann man es - auf der obersten Ebene als ein Ganzes, als ein Element - betrachten. Dieses Buch-Element enthält nun - Kapitel, die wiederum selbst als Elemente bezeichnet werden - können. Jedes einzelne Kapitel enthält weitere - Elemente. So gibt es beispielsweise Absätze, Zitate und - Fußnoten. Jeder Absatz kann wiederum selbst Elemente - enthalten, die helfen, den Absatzinhalt als direkte Rede oder - als Namen eines der Protagonisten einer Geschichte zu - identifizieren. - - Wenn man möchte, kann man sich das als - UnterteilungIm - angelsächsischen Sprachraum wird hier von - chunking gesprochen. des - Inhalts vorstellen. Auf der obersten Ebene gibt es ein Element: - das Buch selbst. Schaut man ein wenig tiefer, findet man weitere - Teilelemente: die einzelnen Kapitel. Diese sind wiederum - unterteilt in Absätze, Fußnoten, Namen und so weiter - und so weiter. - - Anzumerken ist an dieser Stelle, dass das eben gesagte - ohne weiteres auf jeden Inhaltstyp angewandt werden kann, auch - ohne dass von SGML die Rede ist. Man - könnte beispielsweise einfach verschiedene Stifte nehmen - und einen Ausdruck dieser Fibel vor sich hinlegen und dann mit - verschiedenen Farben die einzelnen Abschnitte des Buchinhalts - markieren. - - Leider gibt es keinen elektronischen Stift, um das zu tun. - Deshalb muss ein anderer Weg gewählt werden, um zu - bestimmen, zu welchem Element die einzelnen Inhalte - gehören. In SGML-basierten Auszeichnungssprachen wie HTML - und DocBook werden dafür so genannte - Tags eingesetzt. - - Mit einem solchen Tag wird eindeutig festgelegt, wo ein - bestimmtes Element beginnt und wo es endet. Allerdings - gehört der Tag selber nicht zum Element. Er - legt lediglich die Grenzen des Elements fest. Da jede DTD mit dem Ziel - entwickelt wurde, einen speziellen Inhaltstyp auszuzeichnen, - wird jede DTD verschiedene Elemente kennen, die daher - natürlich auch unterschiedlich benannt sein werden. - - Der Starttag für ein imaginäres Element mit dem - Namen elementname ist - <elementname>. - Sein Gegenstück, der schließende Endtag, ist - </elementname>. - - - Verwendung eines Elements (Start- und Endtag) - - HTML kennt das Element p, um - festzulegen, dass ein bestimmter abgegrenzter Bereich - einen Absatz darstellt. Dieses Element hat sowohl einen Start- - als auch einen Endtag. - - Das ist ein Absatz. Er beginnt mit Starttag - für das Element 'p' und endet mit dem Endtag für - das Element 'p'.

- -

Das ist ein etwas kürzerer Absatz.

]]>
-
- - Elemente müssen nicht notwendigerweise einen Endtag - haben. Ebenso ist es nicht notwendig, dass Elemente einen - Inhalt haben. Beispielsweise kann in HTML-Dokumenten mittels - eines speziellen Elements festgelegt werden, dass eine - horizontale Linie an einer bestimmten Stelle erscheinen soll. Da - dieses Element offensichtlich keinen Inhalt hat, wird auch kein - Endtag benötigt. - - - Verwendung eines Elements (nur Starttag) - - In HTML kann man mit dem Element hr - festlegen, dass an einer bestimmten Stelle eine - horizontale Linie angezeigt werden soll. Da dieses Element - keinen Inhalt umschließt, hat es nur einen - Starttag. - - Das ist ein Abschnitt.

- -
- -

Das ist ein weiterer Absatz. Eine horizontale Linie - trennt ihn vom vorherigen Absatz.

]]>
-
- - Elemente können andere Elemente enthalten. Im - anfangs erwähnten Buch enthielt das Buch-Element - alle Kapitel-Elemente, die wiederum alle Absatz-Elemente - enthielten und so fort. - - - Verschachtelte Elemente: <tag>em</tag> - - Das ist ein einfacher Abschnitt, in dem - einige Worte hervorgehoben wurden.]]> - - - Welche Elemente andere Elemente enthalten können und - welche das sind, wird innerhalb der DTD eines Dokuments - festgelegt. - - - - - Viele Leute sind oft verwirrt, wenn es um die richtige - Benutzung der Begriffe Tag und Element geht. Im Ergebnis werden - sie oft so genutzt, als wären sie austauschbar. - Allerdings sind sie das nicht. - - Ein Element ist ein konzeptioneller Teil eines Dokuments - und hat einen festgelegten Anfang und ein festgelegtes - Ende. Ein Tag hingegen markiert die Stelle, an der ein Element - beginnt und endet. - - Wenn in diesem Dokument vom Tag p - gesprochen wird, ist damit der Text - gemeint, der aus den drei Zeichen <, - p und > besteht. Wird - hingegen von dem Element p - gesprochen, ist damit das gesamte Element gemeint. - - Diese Unterscheidung ist sicherlich subtil. Trotzdem - sollte man sie sich vergegenwärtigen. - - - Elemente können selber Attribute haben, die aus einem - Namen und einem Wert bestehen. Die Attribute haben die Aufgabe, - dem Element zusätzliche Informationen hinzuzufügen. - Denkbar sind hier Festlegungen über die Darstellung, - Bezeichner, über die das Element eindeutig identifiziert - werden kann, oder beliebige andere Informationen. - - Elementattribute werden in den Starttag - eingefügt und haben die Form - Attributename="Wert". - - Bei einigen HTML-Versionen kennt das Element - p das Attribut align, mit - dessen Hilfe die Textausrichtung eines Absatzes bestimmt werden - kann. - - align akzeptiert einen von vier - vorgegebenen Werten: left, - center, right und - justify. Ist align nicht - angegeben, wird vom Standardwert left - ausgegangen. - - - Elemente mit Attributen nutzen - - Die Verwendung des align-Attributs - für diesen Absatz ist überflüssig, da left - der Standardwert ist.

- -

Dieser Absatz wird hoffentlich mittig dargestellt.

]]>
-
- - Einige Attribute akzeptieren nur bestimmte Werte, wie - beispielsweise left oder - justify. Andere akzeptieren jeden beliebigen - Wert. Enthält Attributwert doppelte Anführungszeichen - ("), wird der Wert in einfachen - Anführungszeichen eingeschlossen. - - - Attribute mit einfachen Anführungszeichen - - Ich stehe rechts!

]]>
-
- - - Manchmal können die Anführungszeichen um den - Attributwert weggelassen werden. Allerdings sind die Regeln, - die festlegen wann dies zulässig ist, sehr spitzfindig. - Am besten schließen Sie Attributwerte - immer in Anführungszeichen ein. - - Die Informationen über Attribute, Elemente und Tags - sind in SGML-Katalogen abgelegt und werden von den verschiedenen - Werkzeugen des Dokumentationsprojektes genutzt, um die - geschriebenen Dokumente zu validieren. Die Programme die durch - textproc/docproj installiert - werden, bringen ihre eigenen Katalogvarianten mit, zudem pflegt - das FDP seine eigenen Kataloge. Beide Katalogarten müssen - von allen Programmen gefunden werden können. - - - Was dafür getan werden muss;… - - Damit die Beispiele dieser Fibel ausgeführt werden - können, ist es notwendig, dass einige Programme auf - dem Rechner installiert sind und das eine Umgebungsvariable - korrekt gesetzt wird. - - - - Der erste Schritt ist die Installation des Ports - textproc/docproj - über das FreeBSD-Portsystem. textproc/docproj ist ein - Metaport, der alle vom FDP - benötigten Programme und Daten aus dem Netz laden und - installieren sollte. - - - - Anschließend muss in den Shellkonfigurationsdateien die - Variable SGML_CATALOG_FILES - Sofern man nicht an der deutschen - Dokumentation arbeitet, müssen die - Verzeichnisangaben entsprechend angepasst - werden. - gesetzt werden. - - - <filename>.profile</filename>, für &man.sh.1; und - &man.bash.1; Benutzer - - SGML_ROOT=/usr/local/share/xml -SGML_CATALOG_FILES=${SGML_ROOT}/jade/catalog -SGML_CATALOG_FILES=${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES -SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES -SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES -SGML_CATALOG_FILES=/usr/doc/share/xml/catalog:$SGML_CATALOG_FILES -SGML_CATALOG_FILES=/usr/doc/en_US.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES -export SGML_CATALOG_FILES - - - - - <filename>.cshrc</filename>, für &man.csh.1;- und - &man.tcsh.1;-Benutzer - - setenv SGML_ROOT /usr/local/share/xml -setenv SGML_CATALOG_FILES ${SGML_ROOT}/jade/catalog -setenv SGML_CATALOG_FILES ${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES -setenv SGML_CATALOG_FILES ${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES -setenv SGML_CATALOG_FILES ${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES -setenv SGML_CATALOG_FILES /usr/doc/share/xml/catalog:$SGML_CATALOG_FILES -setenv SGML_CATALOG_FILES /usr/doc/en_US.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES -setenv SGML_CATALOG_FILES /usr/doc/de_DE.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES - - - Damit die Änderungen wirksam werden, meldet man - sich ab und anschließend wieder an – oder man - führt die obigen Anweisungen direkt in der Shell - aus und setzt so die benötigten Umgebungsvariablen. - - - - - - - Nun sollte man eine Datei - beispiel.xml anlegen, die den - folgenden Text enthält: - - - - - - Eine Beispieldatei in HTML - - - -

Das ist ein Absatz mit etwas Text.

- -

Das ist ein Absatz mit anderem Text.

- -

Dieser Absatz wird rechtsbündig - ausgerichtet.

- -]]>
-
- - - Nachdem die Datei abgespeichert wurde, kann sie - mit Hilfe eines SGML-Parsers validiert werden. - - Bestandteil von textproc/docproj - ist onsgmls - ein validierender Parser. - onsgmls liest ein Dokument entsprechend einer SGML-DTD - ein und gibt anschließend ein Element-Structure-Information-Set - (ESIS) aus. Allerdings ist das an dieser Stelle nicht weiter - wichtig. - - Wird onsgmls mit der Option - aufgerufen, werden nur Fehlermeldungen ausgegeben. Dadurch - kann leicht geprüft werden, ob ein Dokument gültig - ist oder nicht. - - So prüft man mit onsgmls, ob die neuangelegte - Beispieldatei gültig ist: - - &prompt.user; onsgmls -s beispiel.xml - - Sofern das Beispiel korrekt abgetippt wurde, wird sich - onsgmls ohne jegliche Ausgabe beenden. Das bedeutet, - dass das Dokument erfolgreich validiert werden konnte - und somit gültig ist. - - - - Jetzt sollten die Tags title und - /title aus dem Dokument gelöscht - und das Dokument erneut validiert werden: - - &prompt.user; onsgmls -s beispiel.xml -onsgmls:beispiel.xml:5:4:E: character data is not allowed here -onsgmls:beispiel.xml:6:8:E: end tag for "HEAD" which is not finished - - Die Fehlermeldungen, die von onsgmls - ausgegeben werden, sind in durch Doppelpunkte getrennte - Spalten unterteilt. - - - - - - Spalte - Bedeutung - - - - - - 1 - Der Name des Programms, das den Fehler - meldet. Hier wird immer onsgmls - stehen. - - - - 2 - Der Name der fehlerhaften Datei. - - - - 3 - Die Zeilennummer des Fehlers. - - - - 4 - Die Spaltenummer des Fehlers. - - - - 5 - Ein einbuchstabiger Code, der über die - Art des Fehlers informiert. I - steht für eine informelle Meldung, - W für eine Warnung und - E für Fehler - Nicht immer besteht eine Meldung aus - fünf Spalten. Die Ausgabe von - onsgmls -sv ist - beispielsweise onsgmls:I: SP version - "1.3" (natürlich - abhängig von der Version). Wie man sehen - kann, handelt es sich hier um eine informelle - Meldung. - und X für - einen Querverweis. Bei den oben stehenden Ausgaben - handelt es sich also um Fehlermeldungen. - - - - 6 - Die Meldung. - - - - - - Durch das Weglassen des Tags title - sind zwei unterschiedliche Fehler entstanden. - - Der erste Fehler besagt, dass Inhalt (in diesem - Falle Zeichen anstatt eines Starttags) an einer Stelle - gefunden wurde, an der der Parser etwas anderes erwartet - hat. Genauer gesagt wurde der Starttag eines Elements - erwartet, das innerhalb von head - auftreten kann. - - Der zweite Fehler wurde dadurch verursacht, dass - das Element head ein - Element title enthalten - muss und onsgmls - nicht berücksichtigt, dass dieser Fehler auf dem - vorhergehenden beruht. Es wird lediglich festgestellt, - dass der Endtag von head auftritt, - obwohl nicht alle notwendigen Elemente vorhanden sind. - - - - Zum Schluss sollte der Tag - title wieder in die Beispieldatei - eingefügt werden. - -
-
-
- - - - Die DOCTYPE-Deklaration - - Am Anfang jedes Dokuments muss der Name der dem - Dokument zugrundeliegenden DTD angegeben werden. Mit Hilfe - dieser Information können SGML-Parser die verwendete DTD - feststellen und prüfen, ob das Dokument zu ihr konform ist. - - Üblicherweise steht diese Information in einer Zeile, - die als DOCTYPE-Deklaration bezeichnet wird. - - - Eine Deklaration für ein HTML-Dokument, das nach den - Vorgaben der DTD für HTML 4.0 geschrieben wurde, sieht so - aus: - - ]]> - - und besteht aus verschiedenen Teilen. - - - - - - - - <! - - - Die Zeichenkette <! dient hier - als Indikator, dass es sich bei - diesem Ausdruck um eine SGML-Deklaration handelt und diese - Zeile den Dokumententyp festlegt. - - - - - DOCTYPE - - - Zeigt an, dass dies die SGML-Deklaration für - den Dokumententyp ist. - - - - - html - - - Nennt das erste Element, das im - Dokument auftaucht. - - - - - PUBLIC "-//W3C//DTD HTML 4.0//EN" - - - Nennt den Formalen Öffentlichen Bezeichner - - auf Englisch Formal Public - Identifier (FPI) - der DTD des Dokuments. Diese Information wird - von SGML-Parsern ausgewertet, um die von dem Dokument - referenzierte DTD zu bestimmen. - - Das Schlüsselwort PUBLIC - gehört nicht zum öffentlichen Bezeichner, - sondern legt fest, wie ein SGML-Parser die DTD finden - kann. Alternative Wege eine DTD zu referenzieren werden - später - gezeigt. - - - - - > - - - Schließt den mit <! begonnenen - Ausdruck ab. - - - - - - Formale Öffentliche Bezeichner - - - - Dieser Abschnitt braucht nicht unbedingt zu gelesen zu - werden. Dennoch ist es empfehlenswert, da er nützliche - Hintergrundinformationen enthält, die hilfreich sein - können, falls der SGML-Prozessor die genutzte DTD nicht - finden kann. - - - Jeder öffentliche Bezeichner muss eine bestimmte Syntax - haben, die wie folgt lautet: - - - - "Besitzer//Schlüsselwort Beschreibung//Sprache" - - - - Besitzer - - - Nennt den Besitzer des öffentlichen Bezeichners. - - Falls diese Zeichenkette mit ISO - beginnt, gehört der Bezeichner dem ISO-Komitee. - Der Bezeichner "ISO 8879:1986//ENTITIES Greek - Symbols//EN" nennt ISO - 8879:1986 als den Besitzer des Satzes von - Entitäten für griechische Zeichen. ISO - 8879:1986 ist die ISO-Bezeichnung für den - SGML-Standard. - - - - Beginnt die Zeichenkette nicht mit - ISO, sieht sie entweder so - -//Besitzer - oder so - +//Besitzer - aus. Beide Varianten unterscheiden sich also nur durch - das anfängliche + bzw. - -. - - Sofern am Anfang ein - steht, ist - der Bezeichner nicht öffentlich registriert, steht - hingegen ein + am Anfang, ist er - registriert. - - - - - - Im ISO-Standard ISO 9070:1991 wurde festgelegt, wie - registrierte Namen erzeugt werden können. Unter - anderem können sie von den Bezeichnungen von - ISO-Publikationen, von ISBN-Nummern oder einer - Organisationsbezeichnungen entsprechend ISO 6523 - abgeleitet werden. Anträge für neue offiziell - registrierte Bezeichner werden vom ISO-Komitee an das - American National Standards Institute (ANSI) - weitergeleitet. - - - - - - Da das FreeBSD-Projekt seine Bezeichner nicht hat - registrieren lassen, ist der Besitzer - -//FreeBSD. Unter anderem kann man - daran auch sehen, dass das W3C sich nicht hat - registrieren lassen. - - - - - - Schlüsselwort - - - Es gibt verschiedene Schlüsselwörter mit - denen man die Art der gegebenen Informationen beschreiben - kann. Einige der üblichsten sind - DTD, ELEMENT, - ENTITIES und TEXT. - DTD wird nur für Dateien mit - DTDs verwandt, ELEMENT findet - für Dateien mit Fragmenten von DTDs Verwendung, die - nur Deklarationen für Entitäten und Elemente - enthalten. TEXT wird für - SGML-Inhalte (Texte und Tags) verwendet. - - - - - Beschreibung - - - Eine frei wählbare Beschreibung des Inhalts der - referenzierten Datei. Möglich sind hier - Versionsnummern oder ein kurzer und sinnvoller Text, der - innerhalb der SGML-Welt eindeutig ist. - - - - - - Sprache - - - Ein ISO-Code aus zwei Buchstaben, der die für - die Datei verwendete Sprache nennt. - EN steht hier für Englisch, - DE für Deutsch. - - - - - - Die <filename>catalog</filename>-Dateien - - Wenn man die oben beschriebene Syntax für - Bezeichner verwendet und ein Dokument durch einen - SGML-Prozessor schickt, muss dieser die - Möglichkeit haben, den Bezeichner auf eine real - existierende Datei abzubilden, die die benötigte DTD - enthält. - - Einer der möglichen Wege hierfür sind - Katalogdateien. Eine solche Datei, die üblicherweise - catalog heißt, besteht aus - einzelnen Zeilen, die Bezeichner auf Dateinamen abbilden. - Enthält ein Katalog beispielsweise die Zeile - - PUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd" - - kann ein SGML-Prozessor darüber feststellen, dass die - benötigte DTD in der Datei strict.dtd - im Unterverzeichnis 4.0 - des Verzeichnisses des Katalogs zu finden ist. - - Ein gutes Beispiel für einen Katalog ist - /usr/local/share/xml/html/catalog. - Diese Datei enthält den Katalog für alle HTML - DTDs, die im Zuge der Installation von textproc/docproj installiert - wurden. - - - - - Die Variable <envar>SGML_CATALOG_FILES</envar> - - Natürlich muss einem SGML-Prozessor noch - mitgeteilt werden können, wo er seine Kataloge finden - kann. Viele Programme bieten hierfür - Kommandozeilenoptionen an, über die man einen oder - mehrere Kataloge angeben kann. - - Zusätzlich besteht noch die Möglichkeit mit - der Umgebungsvariablen SGML_CATALOG_FILES auf - SGML-Kataloge zu verweisen. Die Einträge von - SGML_CATALOG_FILES müssen aus den - vollständigen Pfadnamen der Kataloge, jeweils durch - Komma getrennt, bestehen. - - - - Üblicherweise werden die folgenden Kataloge über - SGML_CATALOG_FILES für - die Arbeit an den Dokumenten des FDPs eingebunden: - - - - /usr/local/share/xml/docbook/4.1/catalog - - - - /usr/local/share/xml/html/catalog - - - - /usr/local/share/xml/iso8879/catalog - - - - /usr/local/share/xml/jade/catalog - - - - Allerdings sollte das - schon geschehen - sein. - - - - - - Alternativen zu Formalen Öffentlichen Bezeichnern - - Anstatt mit einem Bezeichner die zum Dokument - gehörende DTD zu referenzieren, kann auch explizit auf - die Datei der DTD verwiesen werden. - - Die Syntax der DOCTYPE-Deklaration ist in diesem Falle - anders: - - - ]]> - - Das Schlüsselwort SYSTEM legt - fest, dass ein SGML-Prozessor die DTD auf - systemspezifische Art und Weise bestimmen soll. - Meistens, aber nicht immer, wird so auf eine Datei im - Dateisystem verwiesen. - - Allerdings sollte man öffentliche Bezeichner aus - Gründen der Portabilität bevorzugen, da man so - nicht eine Kopie der DTD mit dem Dokument selber verteilen - muss, beziehungsweise da man, wenn man mit - SYSTEM arbeitet, nicht davon ausgehen kann, - dass die benötigte DTD auf anderen Systemen genau - unter dem gleichen Pfad verfügbar ist. - - - - - - Die Rückkehr zu SGML - - An einer früheren Stelle wurde erwähnt, dass - man SGML nur benötigt, falls man selbst eine DTD entwickeln - möchte. Genaugenommen ist das nicht 100%ig richtig. Einige - Teile der SGML-Syntax können auch in normalen Dokumenten - verwendet werden, falls dies gewünscht oder notwendig - ist. - - In diesem Falle muss dafür Sorge getragen werden, - dass ein SGML-Prozessor feststellen kann, dass ein - bestimmter Abschnitt des Inhalts SGML ist, das er verarbeiteten - muss. - - Solche SGML-Abschnitte werden mittels - <! ... > in Dokumenten - besonders gekennzeichnet. Alles, was sich zwischen diesen - Begrenzungen befindet, ist SGML, wie es auch in DTDs gefunden - werden kann. - - Demnach ist die DOCTYPE-Deklaration - ein gutes Beispiel für SGML, das in Dokumenten verwendet - werden muss… - - - - - Kommentare - - Kommentare sind SGML-Konstrukte, die normalerweise nur - in DTDs gültig sind. Dennoch ist es, wie in - gezeigt, - möglich Fragmente mit SGML-Syntax in Dokumenten zu - verwenden. - - Zum Abgrenzen von SGML-Kommentaren wird ein doppelter - Bindestrich -- verwendet. Mit - seinem ersten Auftreten öffnet er einen Kommentar, mit - seinem zweiten schließt er ihn wieder. - - - Beispiele für Kommentare in SGML - - <!-- Testkommentar --> - - -<!‐- Text innerhalb eines Kommentars -‐> - -6lt;!‐- Ein anderer Kommentar -‐> - -6lt;!‐- So können mehrzeilige Kommentare - genutzt werden -‐> - -<!‐- Eine andere Möglichkeit für -‐ - ‐- mehrzeilige Kommentare. -‐> - - - Hat man früher schon Erfahrungen mit HTML gesammelt, - wird man vielleicht andere Regeln für den Gebrauch von - Kommentaren kennengelernt haben. Beispielsweise wird oft - angenommen, dass Kommentare mit <!-- - begonnen und nur mit --> beendet - werden. - - Dies ist nicht der Fall. Viele - Webbrowser haben fehlerhafte HTML-Parser, die dies akzeptieren. - Die SGML-Parser, die vom FDP verwendet werden, halten sich - strenger an die SGML-Spezifikation und verwerfen Dokumente mit - solchen Fehlern. - - - Fehlerhafte SGML-Kommentare - - -<!‐- Innerhalb eines Kommentars -‐ - - DIES IST NICHT TEIL EINES KOMMENTARS - - ‐- Wieder innerhalb eines Kommentars -‐> - - SGML-Parser würden die mittlere Zeile wie folgt - interpretieren: - - - <!DIES IST NICHT TEIL EINES KOMMENTARS> - - Da es sich hierbei nicht um gültiges SGML handelt, kann - diese Zeile zur verwirrenden Fehlermeldungen führen. - - <!‐‐‐‐‐ Eine wirklich schlechte Idee ‐‐‐‐‐> - - Wie das Beispiel zeigt, sollten solche Kommentare - tunlichst vermieden werden. - - - - <!‐-===================================================-‐> - - Ein solcher Kommentar ist (ein wenig) besser, kann aber - jemanden, der mit SGML noch nicht so vertraut ist, - verwirren. - - - - - Fingerübungen… - - - - Zur Übung können Sie einige Kommentare in - die Datei beispiel.xml einfügen - und überprüfen, ob die Datei nun noch erfolgreich - von onsgmls validiert werden kann. - - - - Zu Testzwecken sollten Sie - auch noch ein paar fehlerhafte Kommentare hinzufügen - und sich die resultierenden Fehlermeldungen von - onsgmls ansehen. - - - - - - - Entitäten - - Entitäten stellen einen Mechanismus dar, mit dem - einzelnen Dokumententeilen ein Name zugewiesen werden kann. - Findet ein SGML-Parser während des Parsens eine - Entität, ersetzt er diese durch den ihr zugewiesenen - Inhalt. - - Dadurch steht eine einfache Möglichkeit zur - Verfügung, mit der variabler Inhalt in SGML-Dokumenten - eingebunden werden kann. Zusätzlich sind Entitäten der - einzige Weg, über den eine Datei in eine andere Datei mit - SGML-Mitteln eingebunden werden kann. - - Es werden zwei Arten von Entitäten unterschieden: - Allgemeine Entitäten und - Parameterentitäten. - - - Allgemeine Entitäten - - Allgemeine Entitäten können nur in - Dokumenten benutzt werden. Sie können zwar im - SGML-Kontext definiert aber dort nicht benutzt - werden. Vergleichen Sie dies mit - Im Parameterentitäten. - - Jede allgemeine Entität hat einen Namen, über - den sie angesprochen werden kann, um den von ihr - referenzierten Inhalt in ein Dokument einzubinden. Dafür - muss an der betreffenden Stelle der Namen der - Entität per - &entitaetenname; - einfügt werden. Eine Entität - current.version könnte beispielsweise - durch die aktuelle Versionsnummer eines Programms ersetzt - werden. Man könnte also schreiben: - - - - - - Die aktuelle Version des - Programms ist ¤t.version;.]]> - - Wenn sich die Versionsnummer ändert, muss - nur die Entität angepasst und anschließend - das Dokument neu erzeugt werden. - - Eine weitere Einsatzmöglichkeit für Allgemeine - Entitäten ist das Einbinden von Zeichen, die auf andere - Weise nicht in ein SGML-Dokument eingefügt werden - könnten. Ein Beispiel für solche Zeichen sind - < und &, die - normalerweise nicht direkt in - SGML-Dokumenten erlaubt sind. Stößt ein SGML-Parser - bei seiner Arbeit auf das Symbol <, - nimmt er an, dass der Anfang eines Start- oder Endtags - gefunden wurde. Bei einem & wird er - annehmen, den Anfang einer Entität gefunden zu haben. - - Wenn eines der beiden Zeichen benötigt wird, werden - daher die allgemeinen Entitäten &lt; - und &amp; verwendet. - - Allgemeine Entitäten können nur in einem - SGML-Kontext definiert werden. Üblich ist es, dies direkt - nach der DOCTYPE-Deklaration zu tun: - - - Allgemeine Entitäten festlegen - - - -]>]]> - - Wichtig ist an dieser Stelle, dass die - DOCTYPE-Deklaration durch eine eckige Klammer am Ende der - ersten Zeile erweitert wurde. Die beiden Entitäten - selber werden in den folgenden zwei Zeilen definiert, bevor - in der letzten Zeile die eckige Klammer und die - DOCTYPE-Deklaration wieder geschlossen werden. - - - - Die eckigen Klammern sind notwendig um festzulegen, dass - man die über DOCTYPE genannte DTD erweitern möchte. - - - - - - Parameterentitäten - - Genau wie Allgemeine - Entitäten werden Parameterentitäten - eingesetzt um wiederverwendbare Inhaltsteile mit Namen zu - versehen. Im Gegensatz zu Allgemeinen Entitäten - können sie aber nur innerhalb eines SGML-Kontextes - genutzt werden. - - Die Definition von Parameterentitäten erfolgt - ähnlich zu der Allgemeiner Entitäten. Sie werden - lediglich mit - %entitaetenname; - anstelle von - &entitaetenname; - referenziert - Es wird das Prozentzeichen anstelle des - kaufmännischen Unds verwendet. - . Wichtig ist, dass das - %-Zeichen zwischen - ENTITY und dem Entitätennamen ein Teil - der Definition ist. - - - Parameterentitäten festlegen - - - - -]>]]> - - - - - - - - Fingerübungen… - - - - Fügen Sie in beispiel.xml - eine Allgemeine Entität ein. - - -]> - - - - Eine HTML-Beispieldatei - - - -

Das ist ein Absatz mit etwas Text.

- -

Das ist ein Absatz mit anderem Text.

- -

Dieser Absatz wird rechtsbündig - ausgerichtet.

- -

Die aktuelle Version ist: &version;

- -]]>
-
- - - Validieren Sie diese Datei mit - onsgmls - - - - Öffnen Sie nun beispiel.xml - mit Ihrem Webbrowser. Es kann notwendig sein, dass - Sie die Datei vorher in beispiel.html - umbenennen müssen, damit die Datei auch als - HTML-Dokument erkannt wird. - - Nur wenn Sie einen sehr modernen Browser haben, werden - Sie sehen können, dass - &version; durch die Versionsnummer - ersetzt wurde. Leider haben die meisten Webbrowser - sehr einfache SGML-Parser, die nicht richtig mit SGML - umgehen können - Eigentlich ist das eine Schande. Man stelle sich - vor, welche Probleme und Hacks, wie beispielsweise - Server Side Includes, man an dieser Stelle hätte - vermeiden können. - . - - - - Die Lösung hierfür ist, das Dokument zu - normalisieren. Zu diesem Zweck liest - ein Normer - das Dokument ein und gibt anschließend semantisch - gleichwertiges SGML wieder aus, dass auf verschiedene - Arten transformiert worden sein kann. Eine dieser - möglichen Transformationen ist das Ersetzen der - Referenzen auf Entitäten mit dem von ihnen - präsentierten Inhalt. - - Versuchen Sie, die Beispieldatei mittels - osgmlnorm zu normalisieren: - - &prompt.user; osgmlnorm beispiel.xml > beispiel.html - - Anschließend sollten Sie eine normalisierte - Version, dass heißt eine, bei der die - Entitäten gegen ihren Inhalt ersetzt wurden, in der - Datei beispiel.html finden. Diese - Datei können Sie sich nun mit Ihrem Browser - ansehen. - - - - - Wenn Sie sich die Ausgaben von osgmlnorm - ansehen, werden Sie feststellen, dass - die DOCTYPE-Deklaration am Anfang der Datei nicht mehr - enthalten ist. Möchten Sie die Deklaration behalten, - muss osgmlnorm mit der Option - aufrufen werden: - - &prompt.user; osgmlnorm -d beispiel.xml > beispiel.html - -
-
-
- - - Dateien mit Entitäten einbinden - - - - Sowohl Allgemeine als - auch Parameterentitäten - sind nützliche Helfer, wenn es darum geht, eine Datei in - eine andere einzubinden. - - - Dateien mit Allgemeinen Entitäten einbinden - - Angenommen man hat ein Buch geschrieben, dessen Inhalt - auf mehrere Dateien aufgeteilt und mittels SGML - ausgezeichnet. Jedes Kapitel wurde dazu in einer eigenen Datei - (kapitel1.xml, - kapitel2.xml usw.) abgelegt und - über eine Datei buch.xml sollen - alle physischen Dateien wieder mit der Hilfe von - Entitäten zu einem logischen Dokument - zusammengeführt werden. - - Damit der Inhalt der Dateien mit Entitäten - eingebunden werden kann, muss die Deklaration der - Entitäten das Schlüsselwort - SYSTEM enthalten. SGML-Parser werden so - angewiesen, den Inhalt der referenzierten Datei als Wert - für die jeweilige Entität zu nehmen. - - - Dateien mit Allgemeinen Entitäten einbinden - - - - -]> - - - - &kapitel.1; - &kapitel.2; - &kapitel.3; -]]> - - - - Wenn man Allgemeine Entitäten benutzt, um andere - Dateien einzubinden, dürfen diese Dateien - (kapitel1.xml, - kapitel2.xml, ...) - keine eigene DOCTYPE-Deklaration - haben. - - - - - Dateien mit Parameterentitäten einbinden - - Wie bereits festgestellt, können - Parameterentitäten nur innerhalb eines SGML-Kontexts - genutzt werden. Warum möchte man aber Dateien innerhalb - eines SGML-Kontexts einbinden? Der Vorteil liegt in der - Möglichkeit, die Deklaration von Entitäten in eine - andere Datei auslagern zu können, wodurch diese leichter - wiederverwendbar sind. - - Angenommen das Buch aus dem vorherigen Kapitel besteht aus - sehr vielen Kapiteln und diese sollen auch in einem anderen - Buch, aber in einer anderen Reihenfolge, verwendet werden. - Eine Möglichkeit wäre es, die dafür notwendigen - Entitäten am Anfang jedes Buches einzeln festzulegen - – was allerdings mit der Zeit unhandlich und - fehlerträchtig wird. - - Alternativ bietet sich dazu an, die Deklarationen in eine - separate Datei auszulagern und deren Inhalt anschließend - in beide Bücher über Parameterentitäten - einzubinden. - - - Dateien mit Parameterentitäten einbinden - - Zuerst werden die Entitäten in einer separaten - Datei namens kapitel.ent deklariert. - kapitel.ent enthält für - dieses Beispiel die folgenden Zeilen: - - - -]]> - - Im zweiten Schritt fügt man in beide Bücher - eine Parameterentität ein, die den Inhalt von - kapitel.ent referenziert, und lädt - über diese dann die Deklarationen. Anschließend - können die so geladenen Entitäten wie gewohnt - genutzt werden. - - -%kapitel; -]> - - - &kapitel.1; - &kapitel.2; - &kapitel.3; -]]> - - - - - Fingerübungen… - - - Binden Sie Dateien über Allgemeine Entitäten ein - - - - Legen Sie drei Dateien (absatz1.xml, - absatz2.xml und absatz3.xml) - mit jeweils einer Zeile wie - - - - - - Erster Absatz.

]]>
- an.
-
- - - Ändern Sie beispiel.xml so - ab, dass sie wie folgt aussieht: - - - - - -]> - - - - Eine HTML-Beispieldatei - - - -

Die aktuelle Version dieses Dokuments ist &version;

- - &absatz1; - &absatz2; - &absatz3; - -]]>
-
- - - Erzeugen Sie nun die Datei - beispiel.html, indem Sie - beispiel.xml normalisieren: - - &prompt.user; osgmlnorm -d beispiel.xml > beispiel.html - - - - Öffnen Sie beispiel.html - nun mit einem Webbrowser und vergewissern Sie sich, - dass der Inhalt der Dateien - absatzN.xml - in beispiel.html übernommen - wurde. - -
-
- - - Binden Sie Dateien mit Parameterentitäten ein - - - Hierfür müssen Sie die vorherige Fingerübung gemacht haben. - - - - - Ändern Sie beispiel.xml so - ab, dass es wie folgt aussieht: - - %entitaeten; -]> - - - - Eine HTML-Beispieldatei - - - -

Die aktuelle Version dieses Dokuments ist &version;

- - &absatz1; - &absatz2; - &absatz3; - -]]>
-
- - - Legen Sie eine weitere Datei entitaeten.xml an, - die folgenden Inhalt hat: - - - - -]]> - - - - Erzeugen Sie die Datei - beispiel.html, indem Sie - beispiel.xml normalisieren: - - &prompt.user; osgmlnorm -d beispiel.xml > beispiel.html - - - - Öffnen Sie beispiel.html - nun mit einem Webbrowser und vergewissern Sie sich, - dass der Inhalt der Dateien - absatzN.xml - in beispiel.html übernommen - wurde. - -
-
-
-
- - - Markierte Bereiche - - SGML erlaubt es, dass bestimmte Dokumentabschnitte - während der Verarbeitung besonders behandelt werden sollen. - Diese Abschnitte werden als markierte Bereiche - auf Englisch marked - sections - - bezeichnet. - - - Aufbau eines markierten Bereiches - - <![ SCHLÜSSELWORT [ - Inhalt des markierten Bereiches -]]> - - - Da es sich bei markierten Bereichen um SGML-Konstrukte - handelt, werden sie mit <! eingeleitet. - Der eigentliche Anfang des markierten Bereiches wird von der - folgenden eckigen Klammer bestimmt. Das darauf folgende - SCHLÜSSELWORT legt fest, wie der - markierte Inhalt durch einen SGML-Prozessor - während der Verarbeitung behandelt werden soll. Der - markierte Inhalt selbst beginnt erst nach der - zweiten eckigen Klammer und erstreckt sich bis zu den zwei - schließenden eckigen Klammern am Ende des Bereiches. Mit - Hilfe des > Zeichens wird der mit - <! begonnene SGML-Kontext wieder - verlassen. - - - Schlüsselworte für markierte Bereiche - - - <literal>CDATA</literal> und <literal>RCDATA</literal> - - Die Schlüsselworte CDATA und - RCDATA bestimmen das - Inhaltsmodell für markierte - Bereiche. Dadurch ist es möglich, vom Standardmodell - abzuweichen. - - Ein SGML-Prozessor muss während der - Verarbeitung eines Dokuments zu jedem Zeitpunkt wissen, - welches Inhaltsmodell gerade anzuwenden - ist. - - Was ist ein Inhaltsmodell? Kurz gesagt beschreibt das - Inhaltsmodell, welche Art von Inhalt der Parser zu erwarten - und wie er damit umzugehen hat. - - Bei CDATA und - RCDATA handelt es sich wahrscheinlich um - die nützlichsten Inhaltsmodelle. - CDATA steht für - Zeichendaten - auf Englisch character - data. Trifft ein - Parser auf dieses Inhaltsmodell, wird er annehmen, dass - sich im zugehörigen Dokumentenbereich nur - gewöhnliche Zeichen befinden. Das - bedeutet, dass < und - & ihre besondere Bedeutung - verlieren und als einfache Zeichen behandelt werden. - - RCDATA steht für - Entitätenreferenzen und Zeichendatenauf - Englisch - Entity references and character - data. Für einen - Bereich mit diesem Inhaltsmodell, wird ein Parser davon - ausgehen, dass er sowohl Zeichen als auch - Enitätenreferenzen finden kann. < - verliert hier zwar auch seine besondere Bedeutung, doch - & wird weiterhin als Anfang einer - Entität interpretiert. - - Nützlich ist das CDATA-Modell - vor allem dann, wenn es darum geht Texte eins-zu-eins zu - übernehmen, in denen < und - & gehäuft - auftreten. Zwar kann man solche Texte überarbeiten und - jedes < durch ein - &lt; und jedes - & durch ein &amp; - ersetzen, doch es wird in den meisten Fällen - einfacher sein, für den betreffenden Text - CDATA als Inhaltsmodell festzulegen. Ein - SGML-Parser wird dann, sobald er auf - < oder & trifft, - diese als Zeichen in einem Text betrachten. - - - Bei der Verwendung von CDATA und - RCDATA als Inhaltsmodell für - SGML-Beispiele, wie sie in diesem Dokument enthalten sind, - muss bedacht werden, dass der Inhalt eines - CDATA-Bereiches nicht validiert wird. - dass das SGML in diesen Bereichen gültig ist, - muss auf andere Weise sichergestellt werden. Denkbar ist - beispielsweise, es in einem separaten Dokument zu - erstellen, dort zu prüfen und erst dann in das - eigentliche Dokument einzufügen. - - - - - CDATA als Inhaltsmodell für markierte Bereiche - - <para>Das ist ein Beispiel, wie man einen Text, - der viele &lt;- und &amp;- - Entitäten enthält, in ein Dokument einbinden kann. - Das Beispiel selbst, das sich innerhalb des markierten Bereiches befindet, - ist ein HTML-Fragment. Der diesen Text umschließende Tag, beginnend mit - mit para und endend mit /para, stammt aus der DocBook DTD.</para> - -<programlisting> - <![RCDATA[ Dieses Beispiel demonstriert die Verwendung von HTML-Elementen. - Da spitze Klammern so oft vorkommen, ist es einfacher, das - gesamte Beispiel als CDATA Abschnitt auszuweisen, als die - entsprechenden Entitäten zu nutzen.

- -
    -
  • Das ist ein Listenelement.
  • -
  • Das ist ein zweites Listenelement.
  • -
  • Das ist ein drittes Listenelement.
  • -
- -

Und das hier, das ist das Ende des Beispiels.

]]> - ]]> -</programlisting>
- - Liest man die Quellen dieser Fibel, wird man - feststellen, dass diese Technik durchgängig - angewandt wurde. - -
-
- - - <literal>INCLUDE</literal> und - <literal>IGNORE</literal> - - Das Schlüsselwort INCLUDE legt - fest, dass der Inhalt des betreffenden Abschnittes - mitverarbeitet wird. Demgegenüber bestimmt - IGNORE, dass er ignoriert wird, - dass heißt, dass er bei der Verarbeitung - übergangen wird und in der Ausgabe nicht enthalten - ist. - - - Anwendung von <literal>INCLUDE</literal> und - <literal>IGNORE</literal> in markierten - Abschnitten - - <![ INCLUDE [ - Dieser Text wird verarbeitet und eingebunden. -]]> - -<![ IGNORE [ - Dieser Text wird weder verarbeitet noch eingebunden. -]]> - - - Für sich alleine ist IGNORE als - Anweisung nicht besonders nützlich, da ein Bereich, der - von der Verarbeitung ausgenommen sein soll, auch - auskommentiert werden kann. - - Kombiniert man IGNORE hingegen mit - Parameterentitäten, - steht so ein Weg zur Verfügung, um dessen Anwendung - besser steuern zu können. Zwar können - Parameterentitäten nur in einem SGML-Kontext einsetzt - werden, da aber markierte Bereiche ebenfalls SGML-Konstrukte - sind, ist diese Einschränkung irrelevant. - - Soll beispielsweise ein und dasselbe Dokument in zwei - unterschiedlichen Varianten produziert werden, einer - gedruckten und einer digitalen, und soll nur die digitale - zusätzliche Informationen enthalten, kann dies mit - einem Trick erreicht werden. - - Man definiert eine Parameterentität, der man als - Wert die Zeichenkette INCLUDE zuweist und - deklariert den betreffenden Bereich, der nur in der - digitalen Variante erscheinen soll, als markierten Abschnitt - und setzt als Schlüsselwort die zuvor definierte - Parameterentität ein. - - Soll anstelle der digitalen die gedruckte Variante - produziert werden, muss lediglich der Entität - IGNORE als Wert zugewiesen und das - Ursprungsdokument erneut durch den SGML-Prozessor geschickt - werden. - - - Kontrolle von markierten Bereichen über - Parameterentitäten - - <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ -<!ENTITY % digitale.kopie "INCLUDE"> -]]> - -... - -<![ %digitale.kopie [ - Dieser Satz sollte nur in der digitalen Version enthalten sein. -]]> - - Bei der Produktion der gedruckten Variante muss - der Wert der Entität geändert werden. - - <!ENTITY % digitale.kopie "IGNORE"> - - Bei der Verarbeitung wird als Schlüsselwort in - beiden Fällen der von - %digitale.kopie repräsentierte - Wert verwendet. Im ersten Fall wird der Inhalt des - markierten Bereichs mitverarbeitet, im zweiten Fall - nicht. - - - -
- - - Fingerübung… - - - - Legen Sie eine neue Datei - abschnitt.xml an, die folgenden - Inhalt hat: - - <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ -<!ENTITY % text.ausgabe "INCLUDE"> -]> - -<html> - <head> - <title>Ein Beispiel mit markierten Abschnitten</title> - </head> - - <body> - <p>Dieser Absatz <![CDATA[beinhaltet viele < - Zeichen (< < < < <). Weshalb es einfacher ist, - ihn als CDATA Bereich auszuweisen. ]]></p> - - <![ IGNORE [ - <p>Dieser Absatz wird NICHT in der Ausgabe enthalten sein.</p> - ]]> - - <![ [ - <p>Dieser Absatz wird in Abhängigkeit von %text.ausgabe - mitausgegeben.</p> - ]]> - </body> -</html> - - - - Normalisieren Sie den Inhalt dieser Datei mit Hilfe - von osgmlnorm und sehen Sie sich das - Ergebnis an. Achten Sie dabei darauf, welche Absätze - enthalten beziehungsweise nicht enthalten sind und was aus - den CDATA-Bereichen geworden ist. - - - - Ändern Sie die Definition von - text.ausgabe so, dass es den - Wert IGNORE zugewiesen bekommt. - Verarbeiten Sie dann die Datei erneut mit - osgmlnorm und vergleichen die Ausgabe mit - der vom ersten osgmlnorm Lauf. - - - - -
- - - Schlussbemerkung - - Aus Platzgründen, und um der Verständlichkeit - Willen, wurden viele Gesichtspunkte nicht in aller Tiefe - beziehungsweise gar nicht besprochen. Trotzdem sollte in den - bisherigen Kapiteln genügend Wissen über SGML - vermittelt worden sein, um den Aufbau der Dokumentation des FDPs - zu verstehen. - - -
Property changes on: head/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.xml ___________________________________________________________________ Deleted: svn:keywords ## -1 +0,0 ## -FreeBSD=%H \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/sgml \ No newline at end of property Index: head/de_DE.ISO8859-1/books/fdp-primer/working-copy/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/working-copy/chapter.xml (nonexistent) +++ head/de_DE.ISO8859-1/books/fdp-primer/working-copy/chapter.xml (revision 46773) @@ -0,0 +1,46 @@ + + + + + The Working Copy (noch nicht übersetzt) + + Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte + das Original in + englischer Sprache. Wenn Sie bei der Übersetzung + mithelfen wollen, schicken Sie bitte eine E-Mail + an &a.de.translators;. + Property changes on: head/de_DE.ISO8859-1/books/fdp-primer/working-copy/chapter.xml ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/xml \ No newline at end of property Index: head/de_DE.ISO8859-1/books/fdp-primer/xhtml-markup/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/xhtml-markup/chapter.xml (nonexistent) +++ head/de_DE.ISO8859-1/books/fdp-primer/xhtml-markup/chapter.xml (revision 46773) @@ -0,0 +1,46 @@ + + + + + XHMTL Markup (noch nicht übersetzt) + + Dieses Kapitel ist noch nicht übersetzt. Lesen Sie daher bitte + das Original in + englischer Sprache. Wenn Sie bei der Übersetzung + mithelfen wollen, schicken Sie bitte eine E-Mail + an &a.de.translators;. + Property changes on: head/de_DE.ISO8859-1/books/fdp-primer/xhtml-markup/chapter.xml ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/xml \ No newline at end of property Index: head/de_DE.ISO8859-1/books/fdp-primer/xml-primer/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/fdp-primer/xml-primer/chapter.xml (nonexistent) +++ head/de_DE.ISO8859-1/books/fdp-primer/xml-primer/chapter.xml (revision 46773) @@ -0,0 +1,1916 @@ + + + + + Die XML-Fibel + + Die Mehrzahl der Dokumente des FDPs sind in XML geschrieben. + Ziel dieses Kapitels ist es, genau zu erklären, was + das bedeutet und wie man die XML-Quellen liest und versteht. + Ebenso werden die in den Quellen genutzten Kniffe erklärt, + auf die man beim Lesen der Dokumente stoßen wird. + + Teile dieses Kapitels basieren auf Mark Galassis Get + Going With DocBook. + + + Überblick + + In den guten alten Zeiten war der Umgang mit + elektronischem Text einfach. Man musste + lediglich wissen, welcher Zeichensatz (ASCII, EBCDIC oder ein + anderer) vorlag. Text war einfach Text und sah so aus, wie man + ihn sah. Keine Extras, keine Formatierungen und kein sonstiger + Schnickschnack. + + Für viele Zwecke war dies allerdings nicht ausreichend. + Von einem maschinenlesbaren Text wird erwartet, dass er auch von + Maschinen gelesen und intelligent weiterverarbeitet werden kann. + Einzelne Stellen sollen hervorgehoben werden, andere sollen in ein + Glossar aufgenommen werden oder auf andere Textstellen + verweisen. Dateinamen wiederum sollen in einer + schreibmaschinenähnlichen Schrift auf dem + Bildschirm dargestellt werden, der Ausdruck soll jedoch in + Schrägschrift oder in einer beliebigen anderen + Darstellungsform erfolgen. + + Anfänglich gab es die Hoffnung, dass die + Künstliche Intelligenz (KI) helfen würde, dieses Ziel + zu erreichen. Computer sollte den Text lesen und dazu in der Lage + sein, selbstständig wichtige Formulierungen, Dateinamen, + Benutzereingaben oder Beispiele zu erkennen. Leider verlief die + Entwicklung in diesem Bereich nicht wie gewünscht und Computer + benötigen nach wie vor etwas Unterstützung, bevor sie + Texte vernünftig verarbeiten können. + + Genauer gesagt, man muss ihnen sagen, was was ist. Sehen + wir uns folgende Zeilen an: + +
+ Löschen Sie /tmp/foo mittels &man.rm.1;. + + &prompt.user; rm /tmp/foo +
+ + Es fällt uns leicht, zu erkennen, was ein Dateiname, ein + einzugebender Befehl oder ein Verweis auf eine Hilfeseite ist. Das + kann ein Computer, der einen Text verarbeitet, nicht. Aus diesem + Grund ist es notwendig, Texte mit weiteren Informationen + auszuzeichnen. + + Der Begriff Auszeichnung Im + angelsächsischen Sprachraum wird von + markup + gesprochen. bedeutet, dass + sich der Wert eines Textes erhöht, aber auch seine Kosten. + Durch Auszeichnungen wird einem Dokument zusätzlicher Text + hinzugefügt, der aber von dem eigentlichen Dokumenteninhalt + auf eine bestimmte Art und Weise unterschieden werden kann, so + dass Programme die Auszeichnung erkennen können und + mittels dieser Informationen während der Verarbeitung in + der Lage sind, Entscheidungen zu treffen. Texteditoren + können diese Auszeichnungselemente vor dem Benutzer + verbergen, um zu vermeiden, dass er durch sie abgelenkt + wird. + + + + + Die durch die Auszeichnungselemente im Textdokument + zusätzlich abgelegten Informationen erhöhen den Wert + des Dokuments. Allerdings muss diese Arbeit in den meisten + Fällen von einem Menschen getan werden – wären + Maschinen dazu fähig, wären zusätzliche + Auszeichnungselemente unnötig. Der damit verbundene Aufwand + erhöht die Kosten, die durch die + Erstellung des Dokuments entstehen. + + Das etwas weiter oben gegebene Beispiel sieht im Quelltext + so aus: + + Löschen Sie /tmp/foo mittels &man.rm.1;. + +&prompt.user; rm /tmp/foo]]> + + Die Auszeichnungselemente sind deutlich vom eigentlichen + Inhalt zu unterscheiden. + + Die Einführung von Auszeichnungselementen setzt voraus, + dass festgelegt wird, welche Bedeutung einzelne Elemente haben + und wie diese interpretiert werden. Sie brauchen daher eine + Auszeichnungssprache, der Sie folgen, wenn Sie eigene + Dokumente verfassen. + + Natürlich kann es keine universelle + Auszeichnungssprache geben und eine einzige mag nicht + ausreichend für alle möglichen Anwendungsfälle + sein. Eine Sprache für technische Dokumente wird sich + wahrscheinlich stark von einer für Kochrezepte + unterscheiden. Die universelle Lösung ist eine + Basissprache, mit deren Hilfe weitere Sprachen entwickelt werden + können – eine + Meta-Auszeichnungssprache also. + + Genau diese Anforderung wird von der Standard Generalized + Markup Language (SGML) erfüllt. Mit ihrer + Hilfe wurden viele andere Auszeichnungssprachen wie + beispielsweise HTML und DocBook, welche beide von FDP genutzt + werden, entwickelt. + + Die eigentliche Sprachdefinition erfolgt in einer + Dokumenten-Typ-Definition (DTD). Innerhalb dieser DTD werden die + Namen der einzelnen Elemente, deren mögliche Reihenfolge + und Verschachtelung sowie weitere Informationen + festgelegt. + + + + + + Eine DTD ist eine + vollständige Definition aller + möglichen Sprachelemente, ihrer + ReihenfolgeBei natürlichen Sprachen spricht + man vom Satzbau – demjenigen Konstrukt, das unter + anderem die Position des Subjekts, Objekts und + Prädikats in einem Satz festlegt., + optionaler Elemente und so weiter und so weiter. Dank dieser + recht formalen Festlegung ist es möglich, + SGML-Parser zu entwickeln, die sowohl ein + Dokument als auch seine DTD einlesen und anhand dieser DTD + prüfen können, ob das Dokument allen Anforderungen der + DTD entspricht. Dieser Vorgang wird allgemein als + Validierung des Dokuments + bezeichnet. + + + Das Validieren eines SGML-Dokuments gegen eine DTD + überprüft lediglich die korrekte Syntax des + Dokuments, dass heißt, ob nur gültige + Auszeichnungselemente verwendet wurden und ihre Reihenfolge + stimmt. Dabei wird nicht geprüft, ob + die Elemente der DTD sinngemäß + verwandt wurden. Sollten beispielsweise alle Dateinamen als + Funktionsnamen ausgezeichnet worden sein, so würde der + Parser keinen Fehler signalisieren. Formaler ausgedrückt: + Der Parser prüft die Syntax, aber nicht die + Semantik. + + + Es ist anzunehmen, dass, wenn man selber vor hat + Dokumentation für das FDP zu schreiben, der + größte Teil davon mit Hilfe von HTML oder DocBook + geschrieben werden wird. Aus diesem Grunde wird an dieser Stelle + nicht erklärt, wie eine DTD entwickelt wird. +
+ + + Von Elementen, Tags und Attributen + + + + Alle in SGML geschriebenen DTDs haben bestimmte gemeinsame + Eigenschaften. Das ist nicht verwunderlich, da sich die hinter + SGML stehende Idee unweigerlich bemerkbar macht. Zwei der + markantesten Merkmale dieser Idee sind die Begriffe + Inhalt und + Element. + + + + + + + Von einem Dokument, unabhängig, ob es sich um eine + einzelne Webseite oder ein langes Buch handelt, wird angenommen, + dass es einen wie auch immer gearteten Inhalt hat. Dieser + lässt sich selbst wiederum in Teilelemente + aufspalten, die ebenso zerlegbar sind. Durch die Aufnahme von + Auszeichnungselementen in einen Text, werden diese einzelnen + Elemente eindeutig benannt und voneinander abgegrenzt. + + + + + + Nimmt man zum Beispiel ein typisches Buch, so kann man es + auf der obersten Ebene als ein Ganzes, als ein Element + betrachten. Dieses Buch-Element enthält nun + Kapitel, die wiederum selbst als Elemente bezeichnet werden + können. Jedes einzelne Kapitel enthält weitere + Elemente. So gibt es beispielsweise Absätze, Zitate und + Fußnoten. Jeder Absatz kann wiederum selbst Elemente + enthalten, die helfen, den Absatzinhalt als direkte Rede oder + als Namen eines der Protagonisten einer Geschichte zu + identifizieren. + + Wenn man möchte, kann man sich das als + UnterteilungIm + angelsächsischen Sprachraum wird hier von + chunking gesprochen. des + Inhalts vorstellen. Auf der obersten Ebene gibt es ein Element: + das Buch selbst. Schaut man ein wenig tiefer, findet man weitere + Teilelemente: die einzelnen Kapitel. Diese sind wiederum + unterteilt in Absätze, Fußnoten, Namen und so weiter + und so weiter. + + Anzumerken ist an dieser Stelle, dass das eben gesagte + ohne weiteres auf jeden Inhaltstyp angewandt werden kann, auch + ohne dass von SGML die Rede ist. Man + könnte beispielsweise einfach verschiedene Stifte nehmen + und einen Ausdruck dieser Fibel vor sich hinlegen und dann mit + verschiedenen Farben die einzelnen Abschnitte des Buchinhalts + markieren. + + Leider gibt es keinen elektronischen Stift, um das zu tun. + Deshalb muss ein anderer Weg gewählt werden, um zu + bestimmen, zu welchem Element die einzelnen Inhalte + gehören. In SGML-basierten Auszeichnungssprachen wie HTML + und DocBook werden dafür so genannte + Tags eingesetzt. + + Mit einem solchen Tag wird eindeutig festgelegt, wo ein + bestimmtes Element beginnt und wo es endet. Allerdings + gehört der Tag selber nicht zum Element. Er + legt lediglich die Grenzen des Elements fest. Da jede DTD mit dem Ziel + entwickelt wurde, einen speziellen Inhaltstyp auszuzeichnen, + wird jede DTD verschiedene Elemente kennen, die daher + natürlich auch unterschiedlich benannt sein werden. + + Der Starttag für ein imaginäres Element mit dem + Namen elementname ist + <elementname>. + Sein Gegenstück, der schließende Endtag, ist + </elementname>. + + + Verwendung eines Elements (Start- und Endtag) + + HTML kennt das Element p, um + festzulegen, dass ein bestimmter abgegrenzter Bereich + einen Absatz darstellt. Dieses Element hat sowohl einen Start- + als auch einen Endtag. + + Das ist ein Absatz. Er beginnt mit Starttag + für das Element 'p' und endet mit dem Endtag für + das Element 'p'.

+ +

Das ist ein etwas kürzerer Absatz.

]]>
+
+ + Elemente müssen nicht notwendigerweise einen Endtag + haben. Ebenso ist es nicht notwendig, dass Elemente einen + Inhalt haben. Beispielsweise kann in HTML-Dokumenten mittels + eines speziellen Elements festgelegt werden, dass eine + horizontale Linie an einer bestimmten Stelle erscheinen soll. Da + dieses Element offensichtlich keinen Inhalt hat, wird auch kein + Endtag benötigt. + + + Verwendung eines Elements (nur Starttag) + + In HTML kann man mit dem Element hr + festlegen, dass an einer bestimmten Stelle eine + horizontale Linie angezeigt werden soll. Da dieses Element + keinen Inhalt umschließt, hat es nur einen + Starttag. + + Das ist ein Abschnitt.

+ +
+ +

Das ist ein weiterer Absatz. Eine horizontale Linie + trennt ihn vom vorherigen Absatz.

]]>
+
+ + Elemente können andere Elemente enthalten. Im + anfangs erwähnten Buch enthielt das Buch-Element + alle Kapitel-Elemente, die wiederum alle Absatz-Elemente + enthielten und so fort. + + + Verschachtelte Elemente: <tag>em</tag> + + Das ist ein einfacher Abschnitt, in dem + einige Worte hervorgehoben wurden.]]> + + + Welche Elemente andere Elemente enthalten können und + welche das sind, wird innerhalb der DTD eines Dokuments + festgelegt. + + + + + Viele Leute sind oft verwirrt, wenn es um die richtige + Benutzung der Begriffe Tag und Element geht. Im Ergebnis werden + sie oft so genutzt, als wären sie austauschbar. + Allerdings sind sie das nicht. + + Ein Element ist ein konzeptioneller Teil eines Dokuments + und hat einen festgelegten Anfang und ein festgelegtes + Ende. Ein Tag hingegen markiert die Stelle, an der ein Element + beginnt und endet. + + Wenn in diesem Dokument vom Tag p + gesprochen wird, ist damit der Text + gemeint, der aus den drei Zeichen <, + p und > besteht. Wird + hingegen von dem Element p + gesprochen, ist damit das gesamte Element gemeint. + + Diese Unterscheidung ist sicherlich subtil. Trotzdem + sollte man sie sich vergegenwärtigen. + + + Elemente können selber Attribute haben, die aus einem + Namen und einem Wert bestehen. Die Attribute haben die Aufgabe, + dem Element zusätzliche Informationen hinzuzufügen. + Denkbar sind hier Festlegungen über die Darstellung, + Bezeichner, über die das Element eindeutig identifiziert + werden kann, oder beliebige andere Informationen. + + Elementattribute werden in den Starttag + eingefügt und haben die Form + Attributename="Wert". + + Bei einigen HTML-Versionen kennt das Element + p das Attribut align, mit + dessen Hilfe die Textausrichtung eines Absatzes bestimmt werden + kann. + + align akzeptiert einen von vier + vorgegebenen Werten: left, + center, right und + justify. Ist align nicht + angegeben, wird vom Standardwert left + ausgegangen. + + + Elemente mit Attributen nutzen + + Die Verwendung des align-Attributs + für diesen Absatz ist überflüssig, da left + der Standardwert ist.

+ +

Dieser Absatz wird hoffentlich mittig dargestellt.

]]>
+
+ + Einige Attribute akzeptieren nur bestimmte Werte, wie + beispielsweise left oder + justify. Andere akzeptieren jeden beliebigen + Wert. Enthält Attributwert doppelte Anführungszeichen + ("), wird der Wert in einfachen + Anführungszeichen eingeschlossen. + + + Attribute mit einfachen Anführungszeichen + + Ich stehe rechts!

]]>
+
+ + + Manchmal können die Anführungszeichen um den + Attributwert weggelassen werden. Allerdings sind die Regeln, + die festlegen wann dies zulässig ist, sehr spitzfindig. + Am besten schließen Sie Attributwerte + immer in Anführungszeichen ein. + + Die Informationen über Attribute, Elemente und Tags + sind in SGML-Katalogen abgelegt und werden von den verschiedenen + Werkzeugen des Dokumentationsprojektes genutzt, um die + geschriebenen Dokumente zu validieren. Die Programme die durch + textproc/docproj installiert + werden, bringen ihre eigenen Katalogvarianten mit, zudem pflegt + das FDP seine eigenen Kataloge. Beide Katalogarten müssen + von allen Programmen gefunden werden können. + + + Was dafür getan werden muss;… + + Damit die Beispiele dieser Fibel ausgeführt werden + können, ist es notwendig, dass einige Programme auf + dem Rechner installiert sind und das eine Umgebungsvariable + korrekt gesetzt wird. + + + + Der erste Schritt ist die Installation des Ports + textproc/docproj + über das FreeBSD-Portsystem. textproc/docproj ist ein + Metaport, der alle vom FDP + benötigten Programme und Daten aus dem Netz laden und + installieren sollte. + + + + Anschließend muss in den Shellkonfigurationsdateien die + Variable SGML_CATALOG_FILES + Sofern man nicht an der deutschen + Dokumentation arbeitet, müssen die + Verzeichnisangaben entsprechend angepasst + werden. + gesetzt werden. + + + <filename>.profile</filename>, für &man.sh.1; und + &man.bash.1; Benutzer + + SGML_ROOT=/usr/local/share/xml +SGML_CATALOG_FILES=${SGML_ROOT}/jade/catalog +SGML_CATALOG_FILES=${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES +SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES +SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES +SGML_CATALOG_FILES=/usr/doc/share/xml/catalog:$SGML_CATALOG_FILES +SGML_CATALOG_FILES=/usr/doc/en_US.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES +export SGML_CATALOG_FILES + + + + + <filename>.cshrc</filename>, für &man.csh.1;- und + &man.tcsh.1;-Benutzer + + setenv SGML_ROOT /usr/local/share/xml +setenv SGML_CATALOG_FILES ${SGML_ROOT}/jade/catalog +setenv SGML_CATALOG_FILES ${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES +setenv SGML_CATALOG_FILES ${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES +setenv SGML_CATALOG_FILES ${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES +setenv SGML_CATALOG_FILES /usr/doc/share/xml/catalog:$SGML_CATALOG_FILES +setenv SGML_CATALOG_FILES /usr/doc/en_US.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES +setenv SGML_CATALOG_FILES /usr/doc/de_DE.ISO8859-1/share/xml/catalog:$SGML_CATALOG_FILES + + + Damit die Änderungen wirksam werden, meldet man + sich ab und anschließend wieder an – oder man + führt die obigen Anweisungen direkt in der Shell + aus und setzt so die benötigten Umgebungsvariablen. + + + + + + + Nun sollte man eine Datei + beispiel.xml anlegen, die den + folgenden Text enthält: + + + + + + Eine Beispieldatei in HTML + + + +

Das ist ein Absatz mit etwas Text.

+ +

Das ist ein Absatz mit anderem Text.

+ +

Dieser Absatz wird rechtsbündig + ausgerichtet.

+ +]]>
+
+ + + Nachdem die Datei abgespeichert wurde, kann sie + mit Hilfe eines SGML-Parsers validiert werden. + + Bestandteil von textproc/docproj + ist onsgmls - ein validierender Parser. + onsgmls liest ein Dokument entsprechend einer SGML-DTD + ein und gibt anschließend ein Element-Structure-Information-Set + (ESIS) aus. Allerdings ist das an dieser Stelle nicht weiter + wichtig. + + Wird onsgmls mit der Option + aufgerufen, werden nur Fehlermeldungen ausgegeben. Dadurch + kann leicht geprüft werden, ob ein Dokument gültig + ist oder nicht. + + So prüft man mit onsgmls, ob die neuangelegte + Beispieldatei gültig ist: + + &prompt.user; onsgmls -s beispiel.xml + + Sofern das Beispiel korrekt abgetippt wurde, wird sich + onsgmls ohne jegliche Ausgabe beenden. Das bedeutet, + dass das Dokument erfolgreich validiert werden konnte + und somit gültig ist. + + + + Jetzt sollten die Tags title und + /title aus dem Dokument gelöscht + und das Dokument erneut validiert werden: + + &prompt.user; onsgmls -s beispiel.xml +onsgmls:beispiel.xml:5:4:E: character data is not allowed here +onsgmls:beispiel.xml:6:8:E: end tag for "HEAD" which is not finished + + Die Fehlermeldungen, die von onsgmls + ausgegeben werden, sind in durch Doppelpunkte getrennte + Spalten unterteilt. + + + + + + Spalte + Bedeutung + + + + + + 1 + Der Name des Programms, das den Fehler + meldet. Hier wird immer onsgmls + stehen. + + + + 2 + Der Name der fehlerhaften Datei. + + + + 3 + Die Zeilennummer des Fehlers. + + + + 4 + Die Spaltenummer des Fehlers. + + + + 5 + Ein einbuchstabiger Code, der über die + Art des Fehlers informiert. I + steht für eine informelle Meldung, + W für eine Warnung und + E für Fehler + Nicht immer besteht eine Meldung aus + fünf Spalten. Die Ausgabe von + onsgmls -sv ist + beispielsweise onsgmls:I: SP version + "1.3" (natürlich + abhängig von der Version). Wie man sehen + kann, handelt es sich hier um eine informelle + Meldung. + und X für + einen Querverweis. Bei den oben stehenden Ausgaben + handelt es sich also um Fehlermeldungen. + + + + 6 + Die Meldung. + + + + + + Durch das Weglassen des Tags title + sind zwei unterschiedliche Fehler entstanden. + + Der erste Fehler besagt, dass Inhalt (in diesem + Falle Zeichen anstatt eines Starttags) an einer Stelle + gefunden wurde, an der der Parser etwas anderes erwartet + hat. Genauer gesagt wurde der Starttag eines Elements + erwartet, das innerhalb von head + auftreten kann. + + Der zweite Fehler wurde dadurch verursacht, dass + das Element head ein + Element title enthalten + muss und onsgmls + nicht berücksichtigt, dass dieser Fehler auf dem + vorhergehenden beruht. Es wird lediglich festgestellt, + dass der Endtag von head auftritt, + obwohl nicht alle notwendigen Elemente vorhanden sind. + + + + Zum Schluss sollte der Tag + title wieder in die Beispieldatei + eingefügt werden. + +
+
+
+ + + + Die DOCTYPE-Deklaration + + Am Anfang jedes Dokuments muss der Name der dem + Dokument zugrundeliegenden DTD angegeben werden. Mit Hilfe + dieser Information können SGML-Parser die verwendete DTD + feststellen und prüfen, ob das Dokument zu ihr konform ist. + + Üblicherweise steht diese Information in einer Zeile, + die als DOCTYPE-Deklaration bezeichnet wird. + + + Eine Deklaration für ein HTML-Dokument, das nach den + Vorgaben der DTD für HTML 4.0 geschrieben wurde, sieht so + aus: + + ]]> + + und besteht aus verschiedenen Teilen. + + + + + + + + <! + + + Die Zeichenkette <! dient hier + als Indikator, dass es sich bei + diesem Ausdruck um eine SGML-Deklaration handelt und diese + Zeile den Dokumententyp festlegt. + + + + + DOCTYPE + + + Zeigt an, dass dies die SGML-Deklaration für + den Dokumententyp ist. + + + + + html + + + Nennt das erste Element, das im + Dokument auftaucht. + + + + + PUBLIC "-//W3C//DTD HTML 4.0//EN" + + + Nennt den Formalen Öffentlichen Bezeichner + + auf Englisch Formal Public + Identifier (FPI) + der DTD des Dokuments. Diese Information wird + von SGML-Parsern ausgewertet, um die von dem Dokument + referenzierte DTD zu bestimmen. + + Das Schlüsselwort PUBLIC + gehört nicht zum öffentlichen Bezeichner, + sondern legt fest, wie ein SGML-Parser die DTD finden + kann. Alternative Wege eine DTD zu referenzieren werden + später + gezeigt. + + + + + > + + + Schließt den mit <! begonnenen + Ausdruck ab. + + + + + + Formale Öffentliche Bezeichner + + + + Dieser Abschnitt braucht nicht unbedingt zu gelesen zu + werden. Dennoch ist es empfehlenswert, da er nützliche + Hintergrundinformationen enthält, die hilfreich sein + können, falls der SGML-Prozessor die genutzte DTD nicht + finden kann. + + + Jeder öffentliche Bezeichner muss eine bestimmte Syntax + haben, die wie folgt lautet: + + + + "Besitzer//Schlüsselwort Beschreibung//Sprache" + + + + Besitzer + + + Nennt den Besitzer des öffentlichen Bezeichners. + + Falls diese Zeichenkette mit ISO + beginnt, gehört der Bezeichner dem ISO-Komitee. + Der Bezeichner "ISO 8879:1986//ENTITIES Greek + Symbols//EN" nennt ISO + 8879:1986 als den Besitzer des Satzes von + Entitäten für griechische Zeichen. ISO + 8879:1986 ist die ISO-Bezeichnung für den + SGML-Standard. + + + + Beginnt die Zeichenkette nicht mit + ISO, sieht sie entweder so + -//Besitzer + oder so + +//Besitzer + aus. Beide Varianten unterscheiden sich also nur durch + das anfängliche + bzw. + -. + + Sofern am Anfang ein - steht, ist + der Bezeichner nicht öffentlich registriert, steht + hingegen ein + am Anfang, ist er + registriert. + + + + + + Im ISO-Standard ISO 9070:1991 wurde festgelegt, wie + registrierte Namen erzeugt werden können. Unter + anderem können sie von den Bezeichnungen von + ISO-Publikationen, von ISBN-Nummern oder einer + Organisationsbezeichnungen entsprechend ISO 6523 + abgeleitet werden. Anträge für neue offiziell + registrierte Bezeichner werden vom ISO-Komitee an das + American National Standards Institute (ANSI) + weitergeleitet. + + + + + + Da das FreeBSD-Projekt seine Bezeichner nicht hat + registrieren lassen, ist der Besitzer + -//FreeBSD. Unter anderem kann man + daran auch sehen, dass das W3C sich nicht hat + registrieren lassen. + + + + + + Schlüsselwort + + + Es gibt verschiedene Schlüsselwörter mit + denen man die Art der gegebenen Informationen beschreiben + kann. Einige der üblichsten sind + DTD, ELEMENT, + ENTITIES und TEXT. + DTD wird nur für Dateien mit + DTDs verwandt, ELEMENT findet + für Dateien mit Fragmenten von DTDs Verwendung, die + nur Deklarationen für Entitäten und Elemente + enthalten. TEXT wird für + SGML-Inhalte (Texte und Tags) verwendet. + + + + + Beschreibung + + + Eine frei wählbare Beschreibung des Inhalts der + referenzierten Datei. Möglich sind hier + Versionsnummern oder ein kurzer und sinnvoller Text, der + innerhalb der SGML-Welt eindeutig ist. + + + + + + Sprache + + + Ein ISO-Code aus zwei Buchstaben, der die für + die Datei verwendete Sprache nennt. + EN steht hier für Englisch, + DE für Deutsch. + + + + + + Die <filename>catalog</filename>-Dateien + + Wenn man die oben beschriebene Syntax für + Bezeichner verwendet und ein Dokument durch einen + SGML-Prozessor schickt, muss dieser die + Möglichkeit haben, den Bezeichner auf eine real + existierende Datei abzubilden, die die benötigte DTD + enthält. + + Einer der möglichen Wege hierfür sind + Katalogdateien. Eine solche Datei, die üblicherweise + catalog heißt, besteht aus + einzelnen Zeilen, die Bezeichner auf Dateinamen abbilden. + Enthält ein Katalog beispielsweise die Zeile + + PUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd" + + kann ein SGML-Prozessor darüber feststellen, dass die + benötigte DTD in der Datei strict.dtd + im Unterverzeichnis 4.0 + des Verzeichnisses des Katalogs zu finden ist. + + Ein gutes Beispiel für einen Katalog ist + /usr/local/share/xml/html/catalog. + Diese Datei enthält den Katalog für alle HTML + DTDs, die im Zuge der Installation von textproc/docproj installiert + wurden. + + + + + Die Variable <envar>SGML_CATALOG_FILES</envar> + + Natürlich muss einem SGML-Prozessor noch + mitgeteilt werden können, wo er seine Kataloge finden + kann. Viele Programme bieten hierfür + Kommandozeilenoptionen an, über die man einen oder + mehrere Kataloge angeben kann. + + Zusätzlich besteht noch die Möglichkeit mit + der Umgebungsvariablen SGML_CATALOG_FILES auf + SGML-Kataloge zu verweisen. Die Einträge von + SGML_CATALOG_FILES müssen aus den + vollständigen Pfadnamen der Kataloge, jeweils durch + Komma getrennt, bestehen. + + + + Üblicherweise werden die folgenden Kataloge über + SGML_CATALOG_FILES für + die Arbeit an den Dokumenten des FDPs eingebunden: + + + + /usr/local/share/xml/docbook/4.1/catalog + + + + /usr/local/share/xml/html/catalog + + + + /usr/local/share/xml/iso8879/catalog + + + + /usr/local/share/xml/jade/catalog + + + + Allerdings sollte das + schon geschehen + sein. + + + + + + Alternativen zu Formalen Öffentlichen Bezeichnern + + Anstatt mit einem Bezeichner die zum Dokument + gehörende DTD zu referenzieren, kann auch explizit auf + die Datei der DTD verwiesen werden. + + Die Syntax der DOCTYPE-Deklaration ist in diesem Falle + anders: + + + ]]> + + Das Schlüsselwort SYSTEM legt + fest, dass ein SGML-Prozessor die DTD auf + systemspezifische Art und Weise bestimmen soll. + Meistens, aber nicht immer, wird so auf eine Datei im + Dateisystem verwiesen. + + Allerdings sollte man öffentliche Bezeichner aus + Gründen der Portabilität bevorzugen, da man so + nicht eine Kopie der DTD mit dem Dokument selber verteilen + muss, beziehungsweise da man, wenn man mit + SYSTEM arbeitet, nicht davon ausgehen kann, + dass die benötigte DTD auf anderen Systemen genau + unter dem gleichen Pfad verfügbar ist. + + + + + + Die Rückkehr zu SGML + + An einer früheren Stelle wurde erwähnt, dass + man SGML nur benötigt, falls man selbst eine DTD entwickeln + möchte. Genaugenommen ist das nicht 100%ig richtig. Einige + Teile der SGML-Syntax können auch in normalen Dokumenten + verwendet werden, falls dies gewünscht oder notwendig + ist. + + In diesem Falle muss dafür Sorge getragen werden, + dass ein SGML-Prozessor feststellen kann, dass ein + bestimmter Abschnitt des Inhalts SGML ist, das er verarbeiteten + muss. + + Solche SGML-Abschnitte werden mittels + <! ... > in Dokumenten + besonders gekennzeichnet. Alles, was sich zwischen diesen + Begrenzungen befindet, ist SGML, wie es auch in DTDs gefunden + werden kann. + + Demnach ist die DOCTYPE-Deklaration + ein gutes Beispiel für SGML, das in Dokumenten verwendet + werden muss… + + + + + Kommentare + + Kommentare sind SGML-Konstrukte, die normalerweise nur + in DTDs gültig sind. Dennoch ist es, wie in + gezeigt, + möglich Fragmente mit SGML-Syntax in Dokumenten zu + verwenden. + + Zum Abgrenzen von SGML-Kommentaren wird ein doppelter + Bindestrich -- verwendet. Mit + seinem ersten Auftreten öffnet er einen Kommentar, mit + seinem zweiten schließt er ihn wieder. + + + Beispiele für Kommentare in SGML + + <!-- Testkommentar --> + + +<!‐- Text innerhalb eines Kommentars -‐> + +6lt;!‐- Ein anderer Kommentar -‐> + +6lt;!‐- So können mehrzeilige Kommentare + genutzt werden -‐> + +<!‐- Eine andere Möglichkeit für -‐ + ‐- mehrzeilige Kommentare. -‐> + + + Hat man früher schon Erfahrungen mit HTML gesammelt, + wird man vielleicht andere Regeln für den Gebrauch von + Kommentaren kennengelernt haben. Beispielsweise wird oft + angenommen, dass Kommentare mit <!-- + begonnen und nur mit --> beendet + werden. + + Dies ist nicht der Fall. Viele + Webbrowser haben fehlerhafte HTML-Parser, die dies akzeptieren. + Die SGML-Parser, die vom FDP verwendet werden, halten sich + strenger an die SGML-Spezifikation und verwerfen Dokumente mit + solchen Fehlern. + + + Fehlerhafte SGML-Kommentare + + +<!‐- Innerhalb eines Kommentars -‐ + + DIES IST NICHT TEIL EINES KOMMENTARS + + ‐- Wieder innerhalb eines Kommentars -‐> + + SGML-Parser würden die mittlere Zeile wie folgt + interpretieren: + + + <!DIES IST NICHT TEIL EINES KOMMENTARS> + + Da es sich hierbei nicht um gültiges SGML handelt, kann + diese Zeile zur verwirrenden Fehlermeldungen führen. + + <!‐‐‐‐‐ Eine wirklich schlechte Idee ‐‐‐‐‐> + + Wie das Beispiel zeigt, sollten solche Kommentare + tunlichst vermieden werden. + + + + <!‐-===================================================-‐> + + Ein solcher Kommentar ist (ein wenig) besser, kann aber + jemanden, der mit SGML noch nicht so vertraut ist, + verwirren. + + + + + Fingerübungen… + + + + Zur Übung können Sie einige Kommentare in + die Datei beispiel.xml einfügen + und überprüfen, ob die Datei nun noch erfolgreich + von onsgmls validiert werden kann. + + + + Zu Testzwecken sollten Sie + auch noch ein paar fehlerhafte Kommentare hinzufügen + und sich die resultierenden Fehlermeldungen von + onsgmls ansehen. + + + + + + + Entitäten + + Entitäten stellen einen Mechanismus dar, mit dem + einzelnen Dokumententeilen ein Name zugewiesen werden kann. + Findet ein SGML-Parser während des Parsens eine + Entität, ersetzt er diese durch den ihr zugewiesenen + Inhalt. + + Dadurch steht eine einfache Möglichkeit zur + Verfügung, mit der variabler Inhalt in SGML-Dokumenten + eingebunden werden kann. Zusätzlich sind Entitäten der + einzige Weg, über den eine Datei in eine andere Datei mit + SGML-Mitteln eingebunden werden kann. + + Es werden zwei Arten von Entitäten unterschieden: + Allgemeine Entitäten und + Parameterentitäten. + + + Allgemeine Entitäten + + Allgemeine Entitäten können nur in + Dokumenten benutzt werden. Sie können zwar im + SGML-Kontext definiert aber dort nicht benutzt + werden. Vergleichen Sie dies mit + Im Parameterentitäten. + + Jede allgemeine Entität hat einen Namen, über + den sie angesprochen werden kann, um den von ihr + referenzierten Inhalt in ein Dokument einzubinden. Dafür + muss an der betreffenden Stelle der Namen der + Entität per + &entitaetenname; + einfügt werden. Eine Entität + current.version könnte beispielsweise + durch die aktuelle Versionsnummer eines Programms ersetzt + werden. Man könnte also schreiben: + + + + + + Die aktuelle Version des + Programms ist ¤t.version;.]]> + + Wenn sich die Versionsnummer ändert, muss + nur die Entität angepasst und anschließend + das Dokument neu erzeugt werden. + + Eine weitere Einsatzmöglichkeit für Allgemeine + Entitäten ist das Einbinden von Zeichen, die auf andere + Weise nicht in ein SGML-Dokument eingefügt werden + könnten. Ein Beispiel für solche Zeichen sind + < und &, die + normalerweise nicht direkt in + SGML-Dokumenten erlaubt sind. Stößt ein SGML-Parser + bei seiner Arbeit auf das Symbol <, + nimmt er an, dass der Anfang eines Start- oder Endtags + gefunden wurde. Bei einem & wird er + annehmen, den Anfang einer Entität gefunden zu haben. + + Wenn eines der beiden Zeichen benötigt wird, werden + daher die allgemeinen Entitäten &lt; + und &amp; verwendet. + + Allgemeine Entitäten können nur in einem + SGML-Kontext definiert werden. Üblich ist es, dies direkt + nach der DOCTYPE-Deklaration zu tun: + + + Allgemeine Entitäten festlegen + + + +]>]]> + + Wichtig ist an dieser Stelle, dass die + DOCTYPE-Deklaration durch eine eckige Klammer am Ende der + ersten Zeile erweitert wurde. Die beiden Entitäten + selber werden in den folgenden zwei Zeilen definiert, bevor + in der letzten Zeile die eckige Klammer und die + DOCTYPE-Deklaration wieder geschlossen werden. + + + + Die eckigen Klammern sind notwendig um festzulegen, dass + man die über DOCTYPE genannte DTD erweitern möchte. + + + + + + Parameterentitäten + + Genau wie Allgemeine + Entitäten werden Parameterentitäten + eingesetzt um wiederverwendbare Inhaltsteile mit Namen zu + versehen. Im Gegensatz zu Allgemeinen Entitäten + können sie aber nur innerhalb eines SGML-Kontextes + genutzt werden. + + Die Definition von Parameterentitäten erfolgt + ähnlich zu der Allgemeiner Entitäten. Sie werden + lediglich mit + %entitaetenname; + anstelle von + &entitaetenname; + referenziert + Es wird das Prozentzeichen anstelle des + kaufmännischen Unds verwendet. + . Wichtig ist, dass das + %-Zeichen zwischen + ENTITY und dem Entitätennamen ein Teil + der Definition ist. + + + Parameterentitäten festlegen + + + + +]>]]> + + + + + + + + Fingerübungen… + + + + Fügen Sie in beispiel.xml + eine Allgemeine Entität ein. + + +]> + + + + Eine HTML-Beispieldatei + + + +

Das ist ein Absatz mit etwas Text.

+ +

Das ist ein Absatz mit anderem Text.

+ +

Dieser Absatz wird rechtsbündig + ausgerichtet.

+ +

Die aktuelle Version ist: &version;

+ +]]>
+
+ + + Validieren Sie diese Datei mit + onsgmls + + + + Öffnen Sie nun beispiel.xml + mit Ihrem Webbrowser. Es kann notwendig sein, dass + Sie die Datei vorher in beispiel.html + umbenennen müssen, damit die Datei auch als + HTML-Dokument erkannt wird. + + Nur wenn Sie einen sehr modernen Browser haben, werden + Sie sehen können, dass + &version; durch die Versionsnummer + ersetzt wurde. Leider haben die meisten Webbrowser + sehr einfache SGML-Parser, die nicht richtig mit SGML + umgehen können + Eigentlich ist das eine Schande. Man stelle sich + vor, welche Probleme und Hacks, wie beispielsweise + Server Side Includes, man an dieser Stelle hätte + vermeiden können. + . + + + + Die Lösung hierfür ist, das Dokument zu + normalisieren. Zu diesem Zweck liest + ein Normer + das Dokument ein und gibt anschließend semantisch + gleichwertiges SGML wieder aus, dass auf verschiedene + Arten transformiert worden sein kann. Eine dieser + möglichen Transformationen ist das Ersetzen der + Referenzen auf Entitäten mit dem von ihnen + präsentierten Inhalt. + + Versuchen Sie, die Beispieldatei mittels + osgmlnorm zu normalisieren: + + &prompt.user; osgmlnorm beispiel.xml > beispiel.html + + Anschließend sollten Sie eine normalisierte + Version, dass heißt eine, bei der die + Entitäten gegen ihren Inhalt ersetzt wurden, in der + Datei beispiel.html finden. Diese + Datei können Sie sich nun mit Ihrem Browser + ansehen. + + + + + Wenn Sie sich die Ausgaben von osgmlnorm + ansehen, werden Sie feststellen, dass + die DOCTYPE-Deklaration am Anfang der Datei nicht mehr + enthalten ist. Möchten Sie die Deklaration behalten, + muss osgmlnorm mit der Option + aufrufen werden: + + &prompt.user; osgmlnorm -d beispiel.xml > beispiel.html + +
+
+
+ + + Dateien mit Entitäten einbinden + + + + Sowohl Allgemeine als + auch Parameterentitäten + sind nützliche Helfer, wenn es darum geht, eine Datei in + eine andere einzubinden. + + + Dateien mit Allgemeinen Entitäten einbinden + + Angenommen man hat ein Buch geschrieben, dessen Inhalt + auf mehrere Dateien aufgeteilt und mittels SGML + ausgezeichnet. Jedes Kapitel wurde dazu in einer eigenen Datei + (kapitel1.xml, + kapitel2.xml usw.) abgelegt und + über eine Datei buch.xml sollen + alle physischen Dateien wieder mit der Hilfe von + Entitäten zu einem logischen Dokument + zusammengeführt werden. + + Damit der Inhalt der Dateien mit Entitäten + eingebunden werden kann, muss die Deklaration der + Entitäten das Schlüsselwort + SYSTEM enthalten. SGML-Parser werden so + angewiesen, den Inhalt der referenzierten Datei als Wert + für die jeweilige Entität zu nehmen. + + + Dateien mit Allgemeinen Entitäten einbinden + + + + +]> + + + + &kapitel.1; + &kapitel.2; + &kapitel.3; +]]> + + + + Wenn man Allgemeine Entitäten benutzt, um andere + Dateien einzubinden, dürfen diese Dateien + (kapitel1.xml, + kapitel2.xml, ...) + keine eigene DOCTYPE-Deklaration + haben. + + + + + Dateien mit Parameterentitäten einbinden + + Wie bereits festgestellt, können + Parameterentitäten nur innerhalb eines SGML-Kontexts + genutzt werden. Warum möchte man aber Dateien innerhalb + eines SGML-Kontexts einbinden? Der Vorteil liegt in der + Möglichkeit, die Deklaration von Entitäten in eine + andere Datei auslagern zu können, wodurch diese leichter + wiederverwendbar sind. + + Angenommen das Buch aus dem vorherigen Kapitel besteht aus + sehr vielen Kapiteln und diese sollen auch in einem anderen + Buch, aber in einer anderen Reihenfolge, verwendet werden. + Eine Möglichkeit wäre es, die dafür notwendigen + Entitäten am Anfang jedes Buches einzeln festzulegen + – was allerdings mit der Zeit unhandlich und + fehlerträchtig wird. + + Alternativ bietet sich dazu an, die Deklarationen in eine + separate Datei auszulagern und deren Inhalt anschließend + in beide Bücher über Parameterentitäten + einzubinden. + + + Dateien mit Parameterentitäten einbinden + + Zuerst werden die Entitäten in einer separaten + Datei namens kapitel.ent deklariert. + kapitel.ent enthält für + dieses Beispiel die folgenden Zeilen: + + + +]]> + + Im zweiten Schritt fügt man in beide Bücher + eine Parameterentität ein, die den Inhalt von + kapitel.ent referenziert, und lädt + über diese dann die Deklarationen. Anschließend + können die so geladenen Entitäten wie gewohnt + genutzt werden. + + +%kapitel; +]> + + + &kapitel.1; + &kapitel.2; + &kapitel.3; +]]> + + + + + Fingerübungen… + + + Binden Sie Dateien über Allgemeine Entitäten ein + + + + Legen Sie drei Dateien (absatz1.xml, + absatz2.xml und absatz3.xml) + mit jeweils einer Zeile wie + + + + + + Erster Absatz.

]]>
+ an.
+
+ + + Ändern Sie beispiel.xml so + ab, dass sie wie folgt aussieht: + + + + + +]> + + + + Eine HTML-Beispieldatei + + + +

Die aktuelle Version dieses Dokuments ist &version;

+ + &absatz1; + &absatz2; + &absatz3; + +]]>
+
+ + + Erzeugen Sie nun die Datei + beispiel.html, indem Sie + beispiel.xml normalisieren: + + &prompt.user; osgmlnorm -d beispiel.xml > beispiel.html + + + + Öffnen Sie beispiel.html + nun mit einem Webbrowser und vergewissern Sie sich, + dass der Inhalt der Dateien + absatzN.xml + in beispiel.html übernommen + wurde. + +
+
+ + + Binden Sie Dateien mit Parameterentitäten ein + + + Hierfür müssen Sie die vorherige Fingerübung gemacht haben. + + + + + Ändern Sie beispiel.xml so + ab, dass es wie folgt aussieht: + + %entitaeten; +]> + + + + Eine HTML-Beispieldatei + + + +

Die aktuelle Version dieses Dokuments ist &version;

+ + &absatz1; + &absatz2; + &absatz3; + +]]>
+
+ + + Legen Sie eine weitere Datei entitaeten.xml an, + die folgenden Inhalt hat: + + + + +]]> + + + + Erzeugen Sie die Datei + beispiel.html, indem Sie + beispiel.xml normalisieren: + + &prompt.user; osgmlnorm -d beispiel.xml > beispiel.html + + + + Öffnen Sie beispiel.html + nun mit einem Webbrowser und vergewissern Sie sich, + dass der Inhalt der Dateien + absatzN.xml + in beispiel.html übernommen + wurde. + +
+
+
+
+ + + Markierte Bereiche + + SGML erlaubt es, dass bestimmte Dokumentabschnitte + während der Verarbeitung besonders behandelt werden sollen. + Diese Abschnitte werden als markierte Bereiche + auf Englisch marked + sections + + bezeichnet. + + + Aufbau eines markierten Bereiches + + <![ SCHLÜSSELWORT [ + Inhalt des markierten Bereiches +]]> + + + Da es sich bei markierten Bereichen um SGML-Konstrukte + handelt, werden sie mit <! eingeleitet. + Der eigentliche Anfang des markierten Bereiches wird von der + folgenden eckigen Klammer bestimmt. Das darauf folgende + SCHLÜSSELWORT legt fest, wie der + markierte Inhalt durch einen SGML-Prozessor + während der Verarbeitung behandelt werden soll. Der + markierte Inhalt selbst beginnt erst nach der + zweiten eckigen Klammer und erstreckt sich bis zu den zwei + schließenden eckigen Klammern am Ende des Bereiches. Mit + Hilfe des > Zeichens wird der mit + <! begonnene SGML-Kontext wieder + verlassen. + + + Schlüsselworte für markierte Bereiche + + + <literal>CDATA</literal> und <literal>RCDATA</literal> + + Die Schlüsselworte CDATA und + RCDATA bestimmen das + Inhaltsmodell für markierte + Bereiche. Dadurch ist es möglich, vom Standardmodell + abzuweichen. + + Ein SGML-Prozessor muss während der + Verarbeitung eines Dokuments zu jedem Zeitpunkt wissen, + welches Inhaltsmodell gerade anzuwenden + ist. + + Was ist ein Inhaltsmodell? Kurz gesagt beschreibt das + Inhaltsmodell, welche Art von Inhalt der Parser zu erwarten + und wie er damit umzugehen hat. + + Bei CDATA und + RCDATA handelt es sich wahrscheinlich um + die nützlichsten Inhaltsmodelle. + CDATA steht für + Zeichendaten + auf Englisch character + data. Trifft ein + Parser auf dieses Inhaltsmodell, wird er annehmen, dass + sich im zugehörigen Dokumentenbereich nur + gewöhnliche Zeichen befinden. Das + bedeutet, dass < und + & ihre besondere Bedeutung + verlieren und als einfache Zeichen behandelt werden. + + RCDATA steht für + Entitätenreferenzen und Zeichendatenauf + Englisch + Entity references and character + data. Für einen + Bereich mit diesem Inhaltsmodell, wird ein Parser davon + ausgehen, dass er sowohl Zeichen als auch + Enitätenreferenzen finden kann. < + verliert hier zwar auch seine besondere Bedeutung, doch + & wird weiterhin als Anfang einer + Entität interpretiert. + + Nützlich ist das CDATA-Modell + vor allem dann, wenn es darum geht Texte eins-zu-eins zu + übernehmen, in denen < und + & gehäuft + auftreten. Zwar kann man solche Texte überarbeiten und + jedes < durch ein + &lt; und jedes + & durch ein &amp; + ersetzen, doch es wird in den meisten Fällen + einfacher sein, für den betreffenden Text + CDATA als Inhaltsmodell festzulegen. Ein + SGML-Parser wird dann, sobald er auf + < oder & trifft, + diese als Zeichen in einem Text betrachten. + + + Bei der Verwendung von CDATA und + RCDATA als Inhaltsmodell für + SGML-Beispiele, wie sie in diesem Dokument enthalten sind, + muss bedacht werden, dass der Inhalt eines + CDATA-Bereiches nicht validiert wird. + dass das SGML in diesen Bereichen gültig ist, + muss auf andere Weise sichergestellt werden. Denkbar ist + beispielsweise, es in einem separaten Dokument zu + erstellen, dort zu prüfen und erst dann in das + eigentliche Dokument einzufügen. + + + + + CDATA als Inhaltsmodell für markierte Bereiche + + <para>Das ist ein Beispiel, wie man einen Text, + der viele &lt;- und &amp;- + Entitäten enthält, in ein Dokument einbinden kann. + Das Beispiel selbst, das sich innerhalb des markierten Bereiches befindet, + ist ein HTML-Fragment. Der diesen Text umschließende Tag, beginnend mit + mit para und endend mit /para, stammt aus der DocBook DTD.</para> + +<programlisting> + <![RCDATA[ Dieses Beispiel demonstriert die Verwendung von HTML-Elementen. + Da spitze Klammern so oft vorkommen, ist es einfacher, das + gesamte Beispiel als CDATA Abschnitt auszuweisen, als die + entsprechenden Entitäten zu nutzen.

+ +
    +
  • Das ist ein Listenelement.
  • +
  • Das ist ein zweites Listenelement.
  • +
  • Das ist ein drittes Listenelement.
  • +
+ +

Und das hier, das ist das Ende des Beispiels.

]]> + ]]> +</programlisting>
+ + Liest man die Quellen dieser Fibel, wird man + feststellen, dass diese Technik durchgängig + angewandt wurde. + +
+
+ + + <literal>INCLUDE</literal> und + <literal>IGNORE</literal> + + Das Schlüsselwort INCLUDE legt + fest, dass der Inhalt des betreffenden Abschnittes + mitverarbeitet wird. Demgegenüber bestimmt + IGNORE, dass er ignoriert wird, + dass heißt, dass er bei der Verarbeitung + übergangen wird und in der Ausgabe nicht enthalten + ist. + + + Anwendung von <literal>INCLUDE</literal> und + <literal>IGNORE</literal> in markierten + Abschnitten + + <![ INCLUDE [ + Dieser Text wird verarbeitet und eingebunden. +]]> + +<![ IGNORE [ + Dieser Text wird weder verarbeitet noch eingebunden. +]]> + + + Für sich alleine ist IGNORE als + Anweisung nicht besonders nützlich, da ein Bereich, der + von der Verarbeitung ausgenommen sein soll, auch + auskommentiert werden kann. + + Kombiniert man IGNORE hingegen mit + Parameterentitäten, + steht so ein Weg zur Verfügung, um dessen Anwendung + besser steuern zu können. Zwar können + Parameterentitäten nur in einem SGML-Kontext einsetzt + werden, da aber markierte Bereiche ebenfalls SGML-Konstrukte + sind, ist diese Einschränkung irrelevant. + + Soll beispielsweise ein und dasselbe Dokument in zwei + unterschiedlichen Varianten produziert werden, einer + gedruckten und einer digitalen, und soll nur die digitale + zusätzliche Informationen enthalten, kann dies mit + einem Trick erreicht werden. + + Man definiert eine Parameterentität, der man als + Wert die Zeichenkette INCLUDE zuweist und + deklariert den betreffenden Bereich, der nur in der + digitalen Variante erscheinen soll, als markierten Abschnitt + und setzt als Schlüsselwort die zuvor definierte + Parameterentität ein. + + Soll anstelle der digitalen die gedruckte Variante + produziert werden, muss lediglich der Entität + IGNORE als Wert zugewiesen und das + Ursprungsdokument erneut durch den SGML-Prozessor geschickt + werden. + + + Kontrolle von markierten Bereichen über + Parameterentitäten + + <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ +<!ENTITY % digitale.kopie "INCLUDE"> +]]> + +... + +<![ %digitale.kopie [ + Dieser Satz sollte nur in der digitalen Version enthalten sein. +]]> + + Bei der Produktion der gedruckten Variante muss + der Wert der Entität geändert werden. + + <!ENTITY % digitale.kopie "IGNORE"> + + Bei der Verarbeitung wird als Schlüsselwort in + beiden Fällen der von + %digitale.kopie repräsentierte + Wert verwendet. Im ersten Fall wird der Inhalt des + markierten Bereichs mitverarbeitet, im zweiten Fall + nicht. + + + +
+ + + Fingerübung… + + + + Legen Sie eine neue Datei + abschnitt.xml an, die folgenden + Inhalt hat: + + <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ +<!ENTITY % text.ausgabe "INCLUDE"> +]> + +<html> + <head> + <title>Ein Beispiel mit markierten Abschnitten</title> + </head> + + <body> + <p>Dieser Absatz <![CDATA[beinhaltet viele < + Zeichen (< < < < <). Weshalb es einfacher ist, + ihn als CDATA Bereich auszuweisen. ]]></p> + + <![ IGNORE [ + <p>Dieser Absatz wird NICHT in der Ausgabe enthalten sein.</p> + ]]> + + <![ [ + <p>Dieser Absatz wird in Abhängigkeit von %text.ausgabe + mitausgegeben.</p> + ]]> + </body> +</html> + + + + Normalisieren Sie den Inhalt dieser Datei mit Hilfe + von osgmlnorm und sehen Sie sich das + Ergebnis an. Achten Sie dabei darauf, welche Absätze + enthalten beziehungsweise nicht enthalten sind und was aus + den CDATA-Bereichen geworden ist. + + + + Ändern Sie die Definition von + text.ausgabe so, dass es den + Wert IGNORE zugewiesen bekommt. + Verarbeiten Sie dann die Datei erneut mit + osgmlnorm und vergleichen die Ausgabe mit + der vom ersten osgmlnorm Lauf. + + + + +
+ + + Schlussbemerkung + + Aus Platzgründen, und um der Verständlichkeit + Willen, wurden viele Gesichtspunkte nicht in aller Tiefe + beziehungsweise gar nicht besprochen. Trotzdem sollte in den + bisherigen Kapiteln genügend Wissen über SGML + vermittelt worden sein, um den Aufbau der Dokumentation des FDPs + zu verstehen. + + +
Property changes on: head/de_DE.ISO8859-1/books/fdp-primer/xml-primer/chapter.xml ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/sgml \ No newline at end of property