Aufteilen in mehrere Dateien
Ein XML-Dokument kann bei Bedarf in mehrere Dateien aufgeteilt werden, die dann zu einem Gesamtdokument zusammengeführt werden. Dieser Zusammenführungsvorgang muss im Fall eines edML Kurses eigenständig vor dem Anzeigen des Kurses mit dem edML Player durchgeführt werden, weil der edML Player nur vollständige XML-Dokumente verarbeitet.
Damit lassen sich beispielsweise bei einem großen Kurs die Seiten in eigene XML-Dateien auslagern, was die Arbeit an den Kursquellen für die Autoren angenehmer machen kann.
Zusammenführen von Dokumenten mit XInclude
XInclude ist ein Standard zum Zusammenführen von XML-Dateien, der von der W3C-Organisation entwickelt wurde. XInclude wird von vielen XML-Editoren und Programmen unterstützt.
Zur Verwendung von XInclude-Anweisungen sind folgende Schritte notwendig:
- Der offizielle XInclude Namensraum muss mit einem
xmlns:xi
Attribut am Wurzelelement des Hauptdokuments bekannt gemacht werden. - Die Teildokumente können dann im Hauptdokument mit dem Element
xi:include
eingebunden werden. Dieses Element ist kein Bestandteil der edML-Sprache. - Die eingebundenen Dateien müssen an ihrem Wurzelelement den edML-Namensraum mit dem
xmlns
Attribut angeben.
Zum Zusammenführen der Dateien mit XInclude kann etwa das Programm xmllint
(Bestandteil von libxml2) oder die Python-Bibliothek ElementTree verwendet werden.
Example
Angenommen, wir wollen die Seiten eines edML-Kurses in eigene Dateien auslagern.
Hauptdatei course.xml
:
<course xmlns="https://edml.mint-kolleg.kit.edu" edmlversion="0.5.0-dev"
xmlns:xi="http://www.w3.org/2001/XInclude">
<variant lang="en">
<title>My course</title>
<navigation>
<navlist>
<navitem>
<ref to="page-a">A</ref>
</navitem>
<navitem>
<ref to="page-B">B</ref>
</navitem>
</navlist>
</navigation>
<pages>
<xi:include href="pages/page-a.xml"/>
<xi:include href="pages/page-b.xml"/>
</pages>
</variant>
</course>
Datei pages/page-a.xml
:
<page xmlns="https://edml.mint-kolleg.kit.edu">
<textbox>
<p>Willkommen zur Seite A</p>
</textbox>
...
</page>
Datei pages/page-b.xml
: