vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Tag 10

Die XML Link Language (XLink)

Das Web verdankt seinen Erfolg zum Teil der weit verbreiteten Unterstützung des Hyper- Linking, wie es durch das Anker-Tag (<A>) in HTML implementiert wird. Hyper-Links stellen eine effiziente Verbindung einer Webseite mit einer anderen dar. Die unidirektionale, einfache Linking-Funktionalität, die das Web von heute kennzeichnet, reicht für die wachsenden Bedürfnisse einer XML-Welt jedoch nicht aus. Die W3C- Empfehlung zum Linking bei XML heißt XML Link Language (XLink), die am 27. Juni 2001 in den Status einer Empfehlung erhoben wurde. Heute werden Sie Folgendes lernen:

10.1 Hypertext Linking

Hypertext ist ein Begriff, der in den frühen 60er Jahren von Ted Nelson geprägt wurde, der zu der Zeit ein graduierter Student an der Harvard Universität war und an einem Beschreibungsprojekt arbeitete, das später Projekt Xanadu genannt wurde. Frühere Referenzen auf ein solches Konzept für eine computerlesbare Textstruktur, die nicht sequenziell aufgebaut, sondern so organisiert ist, dass die aufeinander bezogenen Informationspunkte verbunden werden können, gehen bis ins Jahr 1945 zurück, als Vammevar Bush einen Artikel mit dem Titel »As We May Think« veröffentlichte (http:// www.theatlantic.com/unbound/flashbks/computer/bushf.htm). Bush nannte sein System Memex, gründend auf Microfilm Indexing (Mikrofilm-Indexierung). Nelson beschrieb bei der Nationalen Konferenz der Association for Computing Machinery im Jahr 1965 den ersten computergestützten Hypertext und einen Algorithmus, der als Reißverschlussliste bekannt wurde.

Der grundlegende Gedanke, der hinter dem Prinzip Hypertext stand, war, dass Dokumente, die in elektronischer Form gespeichert wurden, eine Sammlung von Instanzen oder Knoten umfassen können. Die Knoten würden wiederum Querverweise oder Links enthalten, die es einem Leser mithilfe eines interaktiven Browserprogramms erlauben würden, sich leicht von einem Dokument zum anderen zu bewegen. Das ist genau die heutige Bedeutung von Hypertext im Web. Dem W3C zufolge (http:// www.w3.org/Terms.html) wird die Erweiterung der Hypertexte, die andere Medien wie Sound, Video und Grafik einschließt, manchmal auch Hypermedia genannt, aber meistens bezeichnet man auch diese Media-Erweiterung als Hypertext.

Tatsächlich war seit der ersten Konzeptionslegung nie daran gedacht worden, dass das Web isolierte Informationsseiten umfassen würde. Es wurden statt dessen Mechanismen zur Verfügung gestellt, die die Beziehungen der Seiten untereinander anzeigen und erlauben, dass ein Link aktiviert wird. Das offensichtlichste Beispiel hierfür ist das Anker-Tag in HTML, das Programmierern eine Methode bietet, einen Link einzurichten, der durch einen Mausklick im Browserfenster aktiviert wird. Sie werden heute noch mehr über die Grenzen erfahren, die den HTML-Anker-Links inhärent sind, und wie die XML Link Language (XLink) darauf abzielt, den älteren Ansatz zu verbessern.

XLink ist ein standardisiertes XML-Vokabular, das Elementen im Dokument einer XML- Instanz eingefügt werden kann, um einfache oder auch sehr komplizierte erweiterte Links zwischen Ressourcen im Web zu beschreiben. Die Veröffentlichung von XLink zielte darauf ab, eine Methode anzubieten, wie die äußerst engen Link-Konzepte erweitert werden könnten, die bis dahin entweder auf die unidirektionalen Anker-Tags bei HTML oder das ID/IDREF-Konzept des internen Element-Linkings bei XML beschränkt waren. Sie kennen wahrscheinlich die HTML-Links. Wenn nicht, finden Sie im nächsten Abschnitt eine kurze Übersicht. Sie haben am 4., 5. und 6. Tag mehrere Ansätze kennen gelernt, wie man ID/IDREF-Links bei XML einsetzt.

HTML-Links

HTML ermöglicht durch die Verwendung des Anker-Tags (<A>), Hypertext-Links in Webdokumente einzubetten. Wenn ein Anker-Tag, das mit einem externen Referenzdokument verbunden ist, aktiviert wird, lädt es zum Beispiel den Inhalt einer anderen HTML-Seite herunter und fügt ihn anstelle der Seite ein, auf der der Link betätigt wurde. Die Linkung in HTML verläuft in eine Richtung, weil es keine Vorrichtung in der Linking-Syntax gibt, die zum Beispiel einen Link zurück auf das Ausgangsdokument bereitstellt. Viele Browser-Implementierungen stellen die Schaltfläche Zurück zur Verfügung, die speziell diesem Zweck dient, wenn der Link in einem Browserfenster aktiviert wird. Das Ziel eines HTML-Links wird als Wert eines HREF-Attributs für das HTML-<A>-Tag ausgedrückt. Das HTML-<A>-Tag fasst Text oder andere Objekte ein, die auf der Seite zur Schaltfläche werden. Der Link wird normalerweise aktiviert, wenn ein Anwender beim Browsen der Seite den Mauscursor auf den Link führt und die Maustaste drückt. Die einfachste Form eines HTML-Anker-Tags sieht so aus:

<A HREF="[URL]">[text|anderes HTML element]</A>

Das <A>-Tag in HTML akzeptiert jede beliebige URL als Wert für das HREF-Attribut. Der Inhalt eines Anker-Tags kann entweder Text oder ein anderes Element sein. Alles, was korrekt in das Anker-Tag eingefügt wird, wird zum Auslöser für den Link. Bei den meisten Browsern ist ein Link-Auslöser das Mittel, nach dem Anklicken durch den Anwender die Link-Funktion zu aktivieren. Alle Textzeichen oder anderen Elemente, die bis zum Erreichen des Schluss-Tags auftreten, dienen als Link-Auslöser. Listing 10.1 zeigt eine HTML-Seite mit einem eingebetteten HTML-Link.

Listing 10.1: Eine HTML-Seite mit eingebettetem Hyper-Link - HTML-Link01.html

 1: <!DOCTYPE XHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2: "http://www.w3.org/TR/html4/loose.dtd">
3:
4: <!-- Listing 10.1 - HTML-Link01.html -->
5:
6: <HTML>
7:
8: <HEAD>
9: <TITLE>HTML-Link-Dokument</TITLE>
10: </HEAD>
11:
12: <BODY>
13: <P>Dies ist eine einfache HTML-Seite mit einem eingebetteten
14: Link auf die <A HREF="http://www.archi-Tag.com">Archi-Tag</a> Website.</P>
15: </BODY>
16:
17: </HTML>

In den Zeilen 1 und 2 wird deklariert, dass diese HTML-Seite in der HTML-Version 4.01 transitional programmiert ist. Zeile 6 zeigt das Wurzelelement der HTML-Seite, das immer HTML ist. Die Zeilen 6-8 sind das HEAD-Elementknoten, das ein HTML-TITLE-Element und Textinhalt enthält. Die Zeilen 12-15 enthalten das BODY-Element. Ein abgeleitetes <p>-Element (in den Zeilen 13 und 14) liegt innerhalb des BODY-Elements. Das <p>-Element in HTML entspricht einem Absatz. In Zeile 14,

14:   <A HREF="http://www.archi-Tag.com">Archi-Tag</a> Website.</P>,

sehen Sie den Link, der in den Textstring eines abgeleiteten <A>-Elements des P-Elements eingebettet wurde. Ein Anwender, der diese Seite in einem kompatiblen Webbrowser ansieht, kann einen Hyper-Link aktivieren, der die Seite herunterlädt, die unter http://archi-Tag.com abgelegt ist, wenn er mit seiner Maus auf das Wort Archi-Tag fährt und die Maustaste betätigt.

Die Abbildung 10.1 zeigt eine Link-Beziehung zwischen zwei Webseiten, wie sie für das HTML-Anker-Tag typisch ist. Das Quelldokument enthält ein <A>-Element mit einer gültigen URL, die als Wert für das HREF-Attribut im <A>-Element bereitsteht. Wenn der Link aktiviert wird, normalerweise durch einen Mausklick, wird der Inhalt der Seite, die unter der URL abgelegt ist, heruntergeladen.

Wie Sie sehen konnten, sind HTML-Links relativ einfache, unidirektionale Mechanismen. Dennoch ist es zum Teil ihr Einfluss auf die Informationsübermittlung im Internet, der das World Wide Web revolutioniert und populär gemacht hat. Ein einfaches HTML-Anker- Tag kann zum Einfügen von Bildern verwendet werden oder es erlaubt einem Anwender, anscheinend von einem Webdokument zum Nächsten zu springen oder auch zu einem anderen Teil des gleichen Dokuments.

Abbildung 10.1:  Ein HTML-Link wird mit einem eingebetteten <A>-Tag eingerichtet.

Mehrere spezielle Attribute für das Anker-Tag bieten eine begrenzte Kontrolle der Link- Referenzen. Das Attribut rel zum Beispiel wird verwendet, um die Beziehung zu benennen, die zwischen einem Quelldokument und seinem Zieldokument besteht. Der folgende Code bietet dafür ein Beispiel:

<A HREF="http://www.archi-Tag.com" rel="gehezu_Archi-Tag">Archi-Tag</a> Website.</P>

Das rel-Attribut benennt den Link für die Verwendung durch einen Programmierer, vielleicht als Mittel, die Dokumentation zu verbessern, aber darüber hinaus hat es wenig Bedeutung. Es ist eine bloße Kennzeichnung. Das rev-Attribut soll einen umgekehrten Link beschreiben und gibt die Beziehung vom Zieldokument zurück zum Quelldokument an. Um es noch einmal zu sagen: eine Link-Referenz ist eine bloße Kennzeichnung, die aussieht wie folgender Code:

<A HREF="http://www.archi-Tag.com" rel="gehezu_Archi-Tag" rev"example_doc">
Archi-Tag</a> Website.</P>

Das rev-Attribut bietet eine Kennzeichnung für die umgekehrte Linkbeziehung, die den Pfad zurück zum ursprünglichen Dokument symbolisiert, aber es gibt keine Funktionalität, mit der dies in einen aktuellen Browser implementiert werden könnte.

Ein anderes Linking-Element in HTML wird mit dem <LINK>-Tag implementiert. <LINK> beschreibt die Position eines Dokuments in einer Hierarchie, aber der spezifizierte Link wird nicht wiedergegeben - nur ein Anker-Tag hat Einfluss auf die Link-Wiedergabe. Diese Art von Link ordnet ein anderes Dokument für die Verwendung durch einen spezifischen Prozess oder Client zu. Das LINK-Element wird zum Beispiel verwendet, um der HTML-Seite einen Cascading Stylesheet zuzuordnen, für Prozessoren, die in der Lage sind, eine Wiedergabe auf dieser Grundlage durchzuführen.

Das Linking bei HTML krankt an manchen Einschränkungen. URLs können beispielsweise nur auf ein Dokument zeigen. Wenn man auf einen Abschnitt im Zieldokument verweisen will, muss in diesem Dokument manuell ein benannter Anker platziert werden, bevor der Link aktiviert wird. Wenn Sie einen Link auf den vierten Satz im achten Absatz des dritten Abschnitts des gewünschten Dokuments haben wollen, muss an dieser Stelle im Dokument bereits ein benannter Anker stehen. Wenn Sie dann einen Link auf den 15. Satz drei Absätze vorher brauchen, muss auch dort ein benannter Anker vorhanden sein. Anders gesagt, diese Methode funktioniert weder bei Dokumenten, die nicht im Voraus mit bestimmten benannten Ankern auf dem Server gespeichert wurden, noch bei Dokumenten, auf die Sie lediglich Lesezugriff haben.

Auch wenn die Schaltfläche Zurück und die Verlaufsfunktion, die in die meisten Browser eingebaut ist, es Ihnen erlauben, den Browserpfad zurückzuverfolgen, der zur Zielseite führte, ist dieser Ansatz nicht ganz verlässlich. Nichts in einer HTML-Seite hält diesen Verlauf fest. Der Link auf eine andere Seite ist nur eine Einbahnstraße. Das Quelldokument hat Informationen über das Zieldokument, aber nicht umgekehrt.

Sie können in Ihrem XML-Dokument HTML-Links programmieren. Sie können dies mit XSLT tun, um eine XML-Instanz für die HTML-Wiedergabe in einem Browser umzuwandeln. Dieser Ansatz stellt ein einfaches Linking zur Verfügung; XLink aber verspricht ein leistungsfähigeres Linking.

10.2 Inwiefern verbessert XLink HTML-Links?

XLink ist eine Empfehlung des W3C für leistungsfähige Links zwischen Dokumenten. XLink wurde zur Zusammenarbeit mit XML gestaltet, um alles zu leisten, was mit HTML- Links möglich ist, aber zusätzlich dazu eine Methode zur Verfügung zu stellen, Links in mehrfacher Richtung zu unterstützen. Das bedeutet, dass Links zwischen Dokumenten in mehr als eine Richtung navigieren können. Mit XLink können Sie zwei unidirektionale Links zwischen Dokumenten einrichten: ein Link in mehrere Richtungen oder mehrere multidirektionale Links. Sie werden heute lernen, wie man XLinks erzeugt, um eine Vielzahl relationaler Verbindungen zwischen Dokumenten zu implementieren.

XLink wird in Form von Attributen und Elementen implementiert. Deshalb kann jedes Element als Link in einer XML-Instanz fungieren, anders als bei HTML, wo nur das <A>- Element einen Hypertext-Link transportieren kann. Links können in einer XML-Instanz oder in einer eigenen, verwandten Linkdatei gespeichert werden.

Wenn man XLink mit XPointer kombiniert, werden die Optionen noch bedeutender. Mit XPointer können Sie Links auf beliebige Positionen innerhalb eines XML-Dokuments einrichten und damit die Notwendigkeit umgehen, vorher benannte Anker in den Zieldokumenten einzurichten. Mehr über XPointer erfahren Sie morgen.

Man kann mit XLink nicht nur Dokumente verlinken. XLink kann Links zwischen Datenbankverzeichnissen, Video, Audio und beliebigen anderen Objekten einrichten, die man insgesamt als Ressourcen bezeichnen kann. Nehmen wir zum Beispiel an, dass Sie in einer Werbeagentur arbeiten. Sie wollen vielleicht Werbematerial mit allen Pressemeldungen, Broschüren usw., die mit diesem Material erzeugt wurden, verlinken. Dann wollen Sie das Material mit einem Audiotrack verbinden, der im Web verbreitet wird. Vielleicht wollen Sie das Werbematerial und den Audiotrack mit einem Video verknüpfen, um eine volle Multimedia-Präsentation zu erhalten. Nehmen wir als Nächstes an, dass dieses Werbepaket für ein internationales Publikum gedacht ist und der Videoteil mit Material und Audio in mehreren Sprachen verknüpft werden muss. Sie sehen langsam, dass diese ansonsten voneinander getrennten Ressourcen durch Verbindungen, die man mit Links ausdrücken kann, in eine einheitliche Sammlung zusammengeführt werden können. XLink bietet eine Methode, solch einer Ansammlung von aufeinander bezogenen Ressourcen Ausdruck zu verleihen.

Anwendungen, die XLink unterstützen, können die Links durchqueren, um Ressourcen zu verarbeiten, egal ob sie lokal oder extern ver-Linkt sind. Das heißt, dass Sie die Ressourcen unabhängig von ihrem Standort im Internet erreichen können. Diese Ressourcen können wiederum mit anderen verlinkt werden usw. Damit steht Ihnen eine unglaubliche Flexibilität zur Verfügung.

Die Grenzen von XLink

Die hauptsächliche Einschränkung bei XLink liegt darin, dass es von Browserherstellern nicht allgemein unterstützt wird. Diese mangelnde Unterstützung ist zum Teil darauf zurückzuführen, dass XLinks über die Funktionalität von Browsern hinausgehen. Mit der Zeit werden neue Geräteklassen und Clients entwickelt werden, die die komplexen multidirektionalen Links einsetzen können. Bis dahin gibt es beim Internet Explorer und dem Opera-Browser keine Unterstützung für XLink. Netscape in der Version 6.0 und der Mozilla-Browser bieten eine eingeschränkte Unterstützung für XLink, aber diese Unterstützung ist äußerst unzureichend.

10.3 Elemente verlinken

Ein Element, das XLink-Attribute verwendet, um einen Link ins Leben zu rufen und seine Natur zu beschreiben, wird in XML als verlinkendes Element betrachtet. Anders als bei HTML, wo ein Link mit einem LINK oder einem <A>-Tag eingerichtet wird, kann bei XLink jedes XML-Element zum verlinkenden Element werden. Ein XML-Element kann zum verlinkenden Element werden, wenn zwei Bedingungen erfüllt sind:

Auch wenn Sie ein beliebiges Präfix auswählen können, um XLink-Attribute in den XLink-Namensraum einzubinden, entspricht es einem guten Programmierstil, wenn Sie der Konvention folgen und XLink verwenden.

Die XLink-Attribute spielen bei der Beschreibung eines Links eine besondere Rolle.

XLink definiert acht Attribute, mit denen ein verlinkendes Element beschrieben wird. Diese Attribute, die zum XLink-Namensraum (http://www.w3.org/1999/xlink) gehören, werden den Elementen in Ihrem XML-Dokument hinzugefügt. Tabelle 10.1 fasst die Attribute zusammen, die die XML Linking Language ausmachen.

Attribut

Beschreibung

type

Ein String, der den Linktyp festlegt

href

Eine beliebige gültige URL, die den Standort der Zielressource bestimmt

from

Ein String, der eine Ressource deklariert, die die Quelle in einer Bogen-Beziehung ist

to

Ein String, der das Ziel in einer Bogen-Beziehung deklariert

show

Ein String, der deklariert, wie eine Ressource angezeigt wird

actuate

Ein String, der deklariert, wie ein Link aktiviert wird

role

Ein anwendungsspezifischer String, der verwendet wird, um die Funktion des Linkinhalts zu beschreiben

title

Eine Kennzeichnung für einen Link

Tabelle 10.1: Gültige Attribute, die das XLink-Vokabular ausmachen 

Sie werden in Kürze Beispiele zu den meisten dieser Attribute und einige gültige Werte für sie sehen.

Verlinkende Elemente bei XML enthalten ein xlink:type-Attribut, das die Natur des Links beschreibt, der eingegeben wird. Verlinkende Elemente sind entweder simple (einfach) oder extended (erweitert). Einfache Links (xlink:type="simple") sind Links, die eine Ressource mit einer anderen verknüpfen, ähnlich einem HTML-Link. Erweiterte Links (xlink:type="extended") sind dazu gedacht, mehrere Kombinationen von lokalen und externen Ressourcen zu ver-Linken. Das xlink:type-Attribut hat mehrere andere gültige Werte, unter anderem locator, arc, resource, title und none. Diese Werte werden in Kürze in den folgenden Abschnitten besprochen.

Das xlink:href-Attribut für ein verlinkendes Element hat als Wert die URL der Ressource, mit der es verknüpft wird. Das kann eine lokale oder eine externe Ressource sein und alle gültigen URLs sind als Wert für dieses Attribut zulässig.

Ein grundlegendes Beispiel für XLink

Sie wissen jetzt genug über die XLink-Syntax, um ein grundlegendes XML-Linking- Element für die Nachrichten verarbeitende Auszeichnungssprache der vergangenen Tage zu erzeugen. Um beim Szenario zu bleiben: Sie haben in den vergangenen neun Tagen mehrere unterschiedliche XML-Dokumente erstellt, die Nachrichten auszeichnen. Die Daten werden vermutlich von einer Anwendung aufgezeichnet, die Nachrichten empfängt, während der Empfänger nicht erreichbar ist. Angenommen, Sie wollen einen Link zwischen einer empfangenen Nachricht und einer externen Ressource einrichten, die Informationen über den Sender der Nachricht enthält. Sie können zum Beispiel auf eine externe Ressource zugreifen, die Informationen zur Identifikation enthält, etwa einen Namen, eine E-Mail-Adresse oder eine Telefonnummer.

Nehmen wir an, Sie richten den Link von einem nachricht-Element aus ein - also der lokalen Ressource - und in der Nachrichten-Auszeichnungssprache. Nehmen wir ferner an, dass es sich um einen simple-Link auf eine externe Ressource handelt, deren Standort http://archi-Tag.com ist. Sie müssen die beiden Attribute, die Sie vorhin kennen gelernt haben, wie folgt verwenden:

xlink:type="simple"
xlink:href="http://www.archi-Tag.com"

Das erste Attribut (xlink:type="simple") legt die Tatsache fest, dass das type-Attribut zum xlink-Namensraum gehört, der an anderer Stelle in der Elementauszeichnung oder dem Markup eines seiner Vorfahren deklariert wurde. Der Wert simple beschreibt eine einfache Beziehung zwischen zwei Ressourcen. Das Attribut xlink:href liefert die Adresse der Zielressource.

Diese Attribute werden in das verlinkende Element eingesetzt und der xlink-Namensraum wird in der Instanz deklariert. Listing 10.2 zeigt die komplette XML-Instanz mit dem einfachen Link-Element, das mit XLink programmiert wurde.

Listing 10.2: Ein einfaches verlinkendes Element in XML - nachricht01_10.xml

 1: <?xml version="1.0"?>
2: <!-- Listing 10.2 - nachricht01.xml -->
3:
4: <notiz xmlns:xlink="http://www.w3.org/1999/xlink">
5: <nachricht xlink:type="simple"
6: xlink:href="http://www.archi-Tag.com">
7: Denke daran, auf dem Nachhauseweg von der Arbeit Milch zu kaufen
8: </nachricht>
9: </notiz>

Der XML-Namensraum für XLink (http://www.w3.org/1999/xlink) wird in Zeile 4 deklariert und bekommt das Präfix xlink:. Die Attribute type und href werden in der lokalen Ressource programmiert (dem nachricht-Element), um einen einfachen Link auf eine entfernte Ressource einzurichten, die ihren Standort unter http://www.archi-Tag.com/devan/ks.html hat.

Haben Sie bemerkt, dass das nachricht-Element den semantischen Namen (nachricht) behält, der seinen Inhalt beschreibt, und dass es nicht den Link erhält, der darauf programmiert ist? Bei HTML beschreibt ein Link-Element die Funktion, nicht den Inhalt.

Fragen der Gültigkeit

Da diese Attribute für ein XML-Element programmiert werden, müssen Sie sie in ein Schema eingeben, wenn Ihr Dokument eine Validierung erfordert. Wenn Sie Ihre XML- Instanz mit einer DTD validieren, können Sie mit dem Attributs-Operanden #fixed den erforderlichen Wert für die Attribute setzen, der genau mit einem bekannten Wert übereinstimmen muss. Es gibt zum Beispiel nur einen gültigen Namensraum, den man für XLink verwenden kann, also kann er in der DTD festgeschrieben werden. Sie können weitere Attributswerte festschreiben. Listing 10.3 zeigt eine DTD, die zur Validierung der XML-Instanz aus Listing 10.2 verwendet werden kann, wenn sie dieser Instanz korrekt zugeordnet wird. Wenn Sie diese Zuordnung vorgenommen haben, können Sie das Dokument mit dem Microsoft Internet Explorer parsen, vorausgesetzt, Sie haben auf Ihrem System Version 5 oder höher installiert.

Listing 10.3: Eine DTD, die die Nachricht-Instanz validiert - nachricht01_10.dtd

 1: <!-- Listing 10.3 - nachricht01.dtd -->
2:
3: <!ELEMENT notiz (nachricht)>
4: <!ATTLIST notiz
5: xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
6: >
7: <!ELEMENT nachricht (#PCDATA)>
8: <!ATTLIST nachricht
9: xlink:type CDATA #FIXED "simple"
10: xlink:href CDATA #REQUIRED
11: >

Das notiz-Element enthält ein nachricht-Element und hat das Attribut xmlns:xlink, für das nur der Wert "http://www.w3.org/1999/xlink" gültig ist. Das nachricht-Element enthält Textdaten und hat zwei Attribute: xlink:type und xlink:href. Das type-Attribut lässt nur den Wert "simple" zu, während das href-Attribut einen beliebigen Datenstring als Wert haben kann.

Gegenwärtig verwendet man am häufigsten DTDs zur Validierung bei XLink; Sie können die gleiche Validierung aber auch mit einer anderen Schemasprache wie XDR oder XSD durchführen. Zu Vergleichszwecken zeigt Listing 10.4 ein XML Schema Language (XSD)-Schema für die Validierung der Instanz.

Listing 10.4: Ein XML-Schema für die Validierung der Nachricht-Instanz - nachricht01_10.xsd

 1: <?xml version="1.0" encoding="UTF-8"?>
<!-- Listing 10.4 - nachricht01.xsd -->
2: <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
3: <xsd:element name="notiz">
4: <xsd:complexType>
5: <xsd:sequence>
6: <xsd:element name="nachricht" type="messageType"/>
7: </xsd:sequence>
8: <xsd:attribute name="xmlns:xlink" type="xsd:string"
use="fixed" value="http://www.w3.org/1999/xlink"/>
9: </xsd:complexType>
10: </xsd:element>
11: <xsd:complexType name="messageType">
12: <xsd:simpleContent>
13: <xsd:restriction base="xsd:string">
14: <xsd:attribute name="xlink:type"
type="xsd:string" use="fixed" value="simple"/>
15: <xsd:attribute name="xlink:href"
type="xsd:string" use="required"/>
16: </xsd:restriction>
17: </xsd:simpleContent>
18: </xsd:complexType>
19: </xsd:schema>

Zeile 2 weist den Standard-Namensraum für ein Dokument der XSD-Instanz zu (http://www.w3.org/2000/20/XMLSchema). Die Deklarationen für das notiz-Element sind in den Zeilen 3-10 enthalten. Das notiz-Element enthält das Element nachricht, was in Zeile 6 deklariert wird, und hat das Attribut xmlns:xlink mit dem einzig gültigen (use="fixed") Wert "http://www.w3.org/1999/xlink". Nach der Element-Deklaration für nachricht in Zeile 6 ist sein Inhalt als complexType mit dem Namen "messageType" definiert, was in den Zeilen 11-18 zu sehen ist. Das xlink:type-Attribut für das nachricht-Element wird als fixed xsd:string mit dem Wert simple definiert. Das xlink:href-Attribut kann einen beliebigen xsd:string als Inhalt haben. Beide Attribute müssen in einem entsprechenden Dokument der XML-Instanz vorhanden sein.

Beschreibende XLink-Attribute

Die Attribute xlink:title und xlink:role aus Tabelle 10.1 helfen dabei, den Link zu beschreiben. Das title-Attribut ist ein beschreibender Titel, der dem Link zugewiesen wird. Das role-Attribut ist ein anwendungsspezifischer String (eine URI), der verwendet wird, um die Funktion des Linkinhalts zu beschreiben. Listing 10.5 zeigt erneut das Nachricht-Dokument, mit zugewiesenen xlink:title- und xlink:role-Attributen.

Listing 10.5: Ein Beispiel für einen einfachen XLink - nachricht02_10.xml

 1: <?xml version="1.0"?>
2: <!-- Listing 10.5 - nachricht02_10.xml -->
3:
4: <notiz xmlns:xlink="http://www.w3.org/1999/xlink">
5: <nachricht
6: xlink:type="simple"
7: xlink:href="http://www.archi-Tag.com"
8: xlink:role="nachricht"
9: xlink:title="nachricht verarbeitung beispiel">
10: Denke daran, auf dem Nachhauseweg von der Arbeit Milch zu kaufen
11: </nachricht>
12: </notiz>

Die Zeilen 8 und 9 zeigen die hinzugefügten Attribute xlink:role und xlink:title.

10.4 Einfaches Linkverhalten

Die Links, die Sie bislang untersucht haben, sind einfache Links, die nur eine Verbindungsmöglichkeit einrichten. Wenn Sie Attribute zum Linkverhalten hinzufügen, können Sie mit einer die XLink unterstützenden Anwendung die Auswirkungen steuern, die das Durchqueren dieses Links hat. Auf diese Art und Weise können Sie die Anwendung anweisen, der lokalen Ressource auf verschiedene vordefinierte Arten externe Ressourcen zuzuweisen.

Darstellung

Mit dem Attribut xlink:show wird die erwünschte Darstellung der externen Ressource durch einen XLink-fähigen Prozessor bestimmt. Betrachten Sie die Funktion eines HTML-Anker-Links im Ersetzungsstil. Wenn der Anwender per Mausklick an der korrekten Stelle im Browserfenster einen Link auslöst, wird der Inhalt der aktuellen Seite häufig durch den Inhalt der Ziel-URI ersetzt. XLink kennt den Wert replace (ersetzen) für das show-Attribut, der das Gleiche in einem Browser leistet, der XLink unterstützt. Anders gesagt, die lokale Ressource wird durch die externe Ressource ersetzt, wenn der XLink xlink:show="replace" aktiviert wird.

Tabelle 10.2 fasst die möglichen Werte für dieses Attribut zusammen.

Wert

Beschreibung

replace

Lädt die externe Ressource in das Fenster der lokalen Ressource und ersetzt den sichtbaren Inhalt

new

Öffnet ein neues Fenster der Anwendung, in dem der Inhalt der externen Ressource angezeigt wird

embed

Bettet die externe Ressource in die aktuelle Ressource ein. Eine Grafik- oder eine Sound-Datei können zum Beispiel in eine Dokument-Instanz eingebettet werden.

other

Bezieht sich auf einen anwendungsspezifischen Aufruf. Der Wert wird durch die XLink-Spezifikation nicht beschränkt, aber seine Verwendung wird von einer Applikation bestimmt.

none

Nicht beschränkt

Tabelle 10.2: Mögliche Werte für das xlink:show-Attribut 

Aktivierung

Ein weiteres Attribut zum Verhalten ist das xlink:actuate-Attribut, das verwendet wird, um das Timing der Durchquerung zur externen Ressource festzulegen. Um wieder HTML als Beispiel zu nehmen, betrachten Sie die Auslösesequenz für einen Anker-Link. Ohne zusätzliches Scripting wird der Anker-Link ausgelöst, wenn der Anwender auf einen gekennzeichneten Bereich der Anzeige klickt, wie etwa die Stelle, an der das Anker-Tag auf dem Anzeigebildschirm programmiert ist. XLink enthält den Aktivierungswert onRequest, der das Gleiche erreicht. Es gibt verschiedene weitere Optionen für das xlink:actuate-Attribut, die Sie in Tabelle 10.3 sehen.

Wert

Beschreibung

onRequest

Ähnlich dem HTML-Anker-Link: ein Anwender löst eine Steuerung für die verarbeitende Anwendung aus, etwa einen Mausklick, mit dem die Linkdurchquerung beginnt.

onLoad

Damit wird die externe Ressource geladen, sobald die lokale Ressource von der verarbeitenden Anwendung in den Speicher eingelesen wurde. Ein Browser, der XLink unterstützt, lokalisiert die externe Ressource, sobald die Seite mit dem Link geladen ist.

other

Anwendungsspezifischer Aufruf. Er wird von der XLink-Spezifikation nicht beschränkt, aber die Aktion wird von der Anwendung ausgelöst.

none

Nicht beschränkt. Auch dieser Wert wird von der XLink-Spezifikation nicht beschränkt und nicht von einer Anwendung implementiert.

Tabelle 10.3: Mögliche Werte für das Attribut xlink:actuate 

Übungen zum XLink-Verhalten

Zum Zeitpunkt der Drucklegung dieses Buchs gibt es nicht viele Browser oder generische Anwendungen, die XLink unterstützen. Einer, der zumindest eine teilweise Unterstützung bereitstellt, ist der Netscape-Browser in der Version 6.0 (http://home.netscape.com/ browsers/index.html?cp=hop06d16). Er kann verwendet werden, um die nächsten paar Beispiele auszutesten. Im Internet Explorer können Sie keinen XLink-Code ausführen.

Modifizieren Sie Ihr Dokument nachricht02.xml und fügen Sie ihm ein xlink:actuate- Attribut mit dem Wert onRequest hinzu sowie ein xlink:show-Attribut mit dem Wert replace. Die neuen Attribute sehen so aus:

xlink:actuate="onRequest"
xlink:show="replace"

Speichern Sie das modifizierte XML-Dokument unter nachricht03_10.xml. Listing 10.6 zeigt das vollständige Dokument.

Listing 10.6: Eine Nachricht-Instanz mit XLink-Verhaltens-Attributen - nachricht03_10.xml

 1: <?xml version="1.0"?>
2: <!-- Listing 10.6 - nachricht03_10.xml -->
3:
4: <notiz xmlns:xlink="http://www.w3.org/1999/xlink">
5: <nachricht
6: xlink:type="simple"
7: xlink:href="http://www.archi-Tag.com"
8: xlink:role="nachricht"
9: xlink:title="nachricht verarbeitung beispiel"
10: xlink:actuate="onRequest"
11: xlink:show="replace">
12: Denke daran, auf dem Nachhauseweg von der Arbeit Milch zu kaufen
13: </nachricht>
14: </notiz>

Die Zeilen 10 und 11 enthalten die Attribute xlink:actuate und xlink:show. Die Aktivierung für den Link ist auf onRequest gesetzt. Das heißt, dass ein Anwender einen Befehl für die Anwendung auslösen muss - einen Mausklick auf einen Hypertext-Link im Browserfenster etwa - um den Prozessor zu veranlassen, den Link zu durchqueren. Sobald der Link verfolgt wird, wird der Inhalt der lokalen Ressource durch den Inhalt der externen Ressource ersetzt.

Wenn Sie den vollständigen Code in Netscape 6 laden, werden Sie nur den Textinhalt von nachricht03_10.xml sehen. Er ist aber unterstrichen, genau wie der Inhalt eines HTML- <A>-Elements. Das passiert, weil der XLink-Prozessor so programmiert wurde, dass er Hypertext-Links auf diese Weise anzeigt. Denken Sie daran, dass ein anderer Prozessor den Link vielleicht auf andere Art und Weise verarbeitet. Wenn Sie den Link anklicken, wird der Inhalt der lokalen Seite (den Abbildung 10.2 zeigt) durch den Inhalt der Seite ersetzt, die unter der externen Webadresse http://www.archi-Tag.com gespeichert ist (den Abbildung 10.3 zeigt).

Abbildung 10.2:  Das Dokument nachricht03.xml wird im Netscape-Browser 6.0  angezeigt.

Abbildung 10.3:  Das Resultat der Aktivierung des XLinks

Bearbeiten Sie das Dokument nachricht03_10.xml und versuchen Sie, den Wert für Ihr xlink:show-Attribut in Zeile 11 auf new zu setzen. Speichern Sie die Änderungen unter nachricht04_10.xml und führen Sie den Link im Netscape 6 aus. Der Browser öffnet ein neues Fenster, um das Resultat nach dem Herunterladen des Inhalts aus der externen Ressource anzuzeigen. Sie können auch versuchen, das xlink:actuate-Attribut in Zeile 10 auf onLoad zu setzen. Der resultierende Link kann so schnell ausgelöst werden, sodass Sie nicht erkennen, dass er zu dem Zeitpunkt durchquert wurde, als das lokale Dokument geladen wurde. Netscape 6 unterstützt die meisten anderen Werte für diese Attribute zurzeit nicht.

10.5 Erweiterte Links

Wie bereits beschrieben, gehen die Möglichkeiten von XLink weit über einfache Links hinaus. Erweiterte Links lassen Mehrfachkombinationen lokaler und externer Ressourcen in verschiedene Richtung zu. Erweiterte Links umfassen einen Ressourcensatz und einen Verbindungssatz zwischen diesen Ressourcen. Die Ressourcen können lokal oder extern sein. Lokale Ressourcen sind Teil des verlinkenden Elements, wogegen externe Ressourcen sich außerhalb des Linking-Elements befinden. Externe Ressourcen befinden sich üblicherweise in einem anderen Dokument, aber relativ zum verlinkenden Element müssen sie nicht als extern betrachtet werden. Jede Ressource kann entweder Ziel oder Quelle eines Links sein oder auch beides. Wenn ein Link keine lokalen Ressourcen enthält, wird er Out-of-line-Link genannt.

Ein erweiterter Link wird mit dem Wert extended für das xlink:type-Attribut eingegeben. Erweiterte Links zeigen in der Regel auf mehrere externe Ressourcen. Sie können ihren Ursprung auch in mehr als einer Quelle haben. Das Konzept lokal versus extern kommt etwas durcheinander, weil es stark referentiell geprägt ist. Eine Ressource kann im Kontext eines XLinks lokal sein, sie kann aber auch eine externe Ressource sein, wenn ein anderer XLink durchquert wird. Gegenwärtig gibt es nicht genügend Softwareprodukte oder Geräte, die ein komplexes erweitertes Linking hinreichend unterstützen. Wenn diese Tools einmal zur Verfügung stehen, verspricht das Prinzip der erweiterten Links leistungsstarke Optionen, die heute noch nicht möglich sind.

Lokatoren

Wie bereits erwähnt, sind externe Ressourcen diejenigen, die außerhalb des erweiterten Link-Elements liegen. XLink bietet das Konzept der Lokatorelemente an, die festzustellen helfen, wo sich die externen Ressourcen befinden. Lokatorelemente können einen beliebigen Namen bekommen, aber sie müssen ein xlink:type-Attribut mit dem Wert "locator" haben. Das xlink:href-Attribut ist für ein Lokatorelement erforderlich und dient dazu, die externe Ressource anzuzeigen. Mit den locator-Elementen verwandt sind die resource-Elemente, die auf die gleiche Weise gestaltet werden, aber dazu dienen, lokale Ressourcen zu lokalisieren, nicht externe Ressourcen.

Angenommen, das Nachrichtenverarbeitungssystem, mit dem Sie die heutigen Beispiele untersucht haben, zeichnet nicht nur die Nachrichten und die Sender dieser Nachrichten auf, sondern auch die Aktionen, die mit den Nachrichten zusammenhängen. Sie kennen wahrscheinlich die vorgedruckten Blöcke für Telefonnachrichten, wo Felder für Informationen und Aktionen des Anrufers vorgesehen sind. Stellen Sie sich zum Beispiel vor, dass Ihr automatisiertes System die Art von Aktionen aufzeichnet, die normalerweise auf einer handgeschriebenen Telefonnotiz stehen. Einige der Aktionen, die mit der Nachricht zusammenhängen, können anzeigen, dass der Absender der Nachricht

Folgen wir diesem Szenario ein wenig weiter: eine Nachricht kann mit mehreren Aktionen verbunden sein. Die erweiterten Links von XLink bieten eine Methode, wie man Einer-an- Viele- und auch Viele-an-Viele-Beziehungen programmiert. Angenommen, ein einziges Nachrichtelement ist mit mehreren der aufgezählten Aktionen verlinkt. Sie können dann eine erweiterte Linkbeziehung eingeben, wie in Listing 10.7 gezeigt. Da derzeit keine Browser erweiterte Links unterstützen, können Sie die folgenden Beispiele nicht im Netscape 6 anzeigen.

Listing 10.7: Erweiterter XLink mit Lokatoren - nachricht05_10.xml

 1: <?xml version="1.0"?>
2: <!-- Listing 10.7 - nachricht05_10.xml -->
3:
4: <notiz xmlns:xlink="http://www.w3.org/1999/xlink"
5: xlink:type="extended">
6: <nachricht xlink:type="resource">
7: Denke daran, auf dem Nachhauseweg von der Arbeit Milch zu kaufen
8: </nachricht>
9:
10: <action xlink:type="locator"
11: xlink:href="telefoniert.xml"/>
12:
13: <action xlink:type="locator"
14: xlink:href="bis_bald.xml"/>
15:
16: <action xlink:type="locator"
17: xlink:href="Rufe_zurueck.xml"/>
18:
19: </notiz>

Das notiz-Element beschreibt einen erweiterten Link (Zeile 5) mit vier Ressourcen. Die erste Ressource ist die lokale nachricht-Ressource (Zeilen 6-8). Die drei action-Lokatoren sind externe Ressourcen (Zeilen 10, 13 und 16). Beachten Sie, dass alle vier Ressourcen abgeleitete Elemente des Containerelements für den erweiterten Link notiz sind. (Zeilen 4-19). Da es sich bei dem nachricht-Element um eine lokale Ressource handelt, hat es den xlink:type-Wert resource (Zeile 6) anstelle des Werts locator, der externen Ressourcen zugewiesen wird. Alle externen action-Lokatoren enthalten eine URL (Zeilen 11, 14 und 17), die die Adresse der externen Ressource deklariert.

Bögen

Als Sie vorhin einfache Links erzeugten, konnten Sie mit den Attributen xlink:show und xlink:actuate definieren, wie und wann die Links durchquert werden sollen. Bei den erweiterten Links wird die Lage bei weitem komplizierter, wegen der großen Anzahl der potenziellen Links, die man zu einem beliebigen Zeitpunkt aktivieren kann. Betrachten Sie nur die 16 möglichen Links zwischen den Ressourcen, die in nachricht05_10.xml (Listing 10.7) programmiert sind.

Jeder der verschiedenen Links zwischen den Ressourcen kann andere Regeln haben, die sein Verhalten beschreiben, wie die Aktivier- und Anzeigeanweisungen. Man nennt bei XLink jede dieser Beziehungen einen Bogen und sie werden mit dem Wert arc für das xlink:type-Attribut eingegeben. Die Verhaltensregeln werden bei jeder Bogen- Deklaration angegeben und beschreiben, wie und wann Links durchquert werden. Außerdem haben arc-Elemente xlink:from- und xlink:to-Attribute, die ausdrücklich angeben, auf welche Ressourcen die Bögen gerichtet sind oder wo sie herkommen. Damit dieser Prozess erfolgreich sein kann, müssen die Ressourcen xlink:label-Attribute haben, die als referentielle Kennzeichnung für die from- und to-Zeiger dienen.

Beispiel für einen komplexen erweiterten Link

Angenommen, Ihr Nachrichtenverarbeitungssystem kann Nachrichten aufzeichnen, die Links auf mehrere Aktionen enthalten, wie sie vorher beschrieben wurden, und außerdem auf externe Ressourcen, die mit mehreren Absendern verbunden sind. Die externen sender-Ressourcen geben vielleicht die Namen und Kontaktinformationen für jeden dieser Absender an. Man kann diese Beziehungen mit einem komplexen Listing für einen erweiterten Link ausdrücken. Das Listing 10.8 fügt dem Listing 10.7 zwei Absender und zwei Bögen hinzu. Jeder sender wird zu einem locator-Element, mit dem eine externe Ressource adressiert wird. Die arc-Elemente zeigen die Durchquerung an, die in Richtung auf verschiedene benannte Ressourcen und zurück stattfindet.

Listing 10.8: Ein Beispiel für einen komplexen erweiterten Link - nachricht06_10.xml

 1: <?xml version="1.0"?>
2: <!-- Listing 10.8 - nachricht06_10.xml -->
3:
4: <notiz xmlns:xlink="http://www.w3.org/1999/xlink"
5: xlink:type="extended">
6:
7: <nachricht xlink:type="ressource"
8: xlink:role="nachricht"
9: xlink:href="nchr.xml"/>
10:
11: <sender xlink:type="locator"
12: xlink:href="ks.xml"
13: xlink:role="sender"/>
14:
15: <sender xlink:type="locator"
16: xlink:href="gs.xml"
17: xlink:role="sender"/>
18:
19: <action xlink:type="locator"
20: xlink:href="telefoniert.xml"
21: xlink:role="action"/>
22:
23: <action xlink:type="locator"
24: xlink:href="bis_bald.xml"
25: xlink:role="action"/>
26:
27: <action xlink:type="locator"
28: xlink:href="Rufe_zurueck.xml"
29: xlink:role="action"/>
30:
31: <relate xlink:type="arc"
32: xlink:from="nachricht"
33: xlink:to="sender"/>
34:
35: <relate xlink:type="arc"
36: xlink:from="nachricht"
37: xlink:to="action"/>
38:
39: <relate xlink:type="arc"
40: xlink:from="sender"
41: xlink:to="action"/>
42:
43: </notiz>

Die Zeilen 7-9 enthalten das nachricht-Element mit einem role-Attribut, dessen Wert gleich nachricht ist. Alle Lokatorelemente haben entweder einen sender oder eine action, die durch den Wert ihres jeweiligen Attributs angezeigt werden. Die drei relate-Elemente enthalten xlink:to- und xlink:from-Attribute, die die Bögen zwischen verschiedenen Ressourcen auf Grund ihrer role-Namen definieren. Es wird zum Beispiel zwischen dem Ressourcenelement nachricht und jedem locator-Ressourcenelement sender ein arc definiert.

Sie haben nun etwas über spannende theoretische Konstrukte gelesen, die derzeit von den Tools noch nicht voll unterstützt werden. Wenn diese Technologie jedoch Wirklichkeit wird, wird Sie Ihnen neue Methoden zur Verfügung stellen, wie man Daten aus mehreren Quellen unabhängig von ihrem Ursprungsort im Internet miteinander verbinden kann.

10.6 Zusammenfassung

Die XML Link Language (XLink) stattet XML mit wesentlich leistungsstärkeren Linking- Möglichkeiten aus, als sie HTML zur Verfügung stehen. XLink kann leicht einfache und erweiterte Links einrichten, die lokale und externe Ressourcen lokalisieren können, nicht nur Dokumente. XLink bietet mit der Programmierung verlinkender Elemente eine reichhaltige Funktionalität für die Aktivierung und die Anzeige von Ressourcen. Die Auszeichnung, die spezifiziert, auf welche Weise ein Link durchquert werden soll, nennt man einen Bogen. arc identifiziert zusammen mit den Verhaltens-Attributen einen Anfangs- und einen Endpunkt für einen Link. XLink wird von Prozessoren und Browsern nicht breit unterstützt, auch wenn es wahrscheinlich ist, dass sich die Browser weiterentwickeln und am Ende eine Unterstützung für XLink bereitstehen wird. Es ist außerdem anzunehmen, dass neue und einzigartige Geräte und Clients entwickelt werden, die die Kraft dieser Technologie in der Zukunft ausschöpfen können.

10.7 Fragen und Antworten

Frage:
Was ist der Unterschied zwischen den beiden grundlegenden Typen bei XLink?

Antwort:
Ein einfacher Link ist ein Link in eine Richtung, ähnlich den HTML-Links, er hat aber mehr Funktionalität anzubieten. Ein erweiterter Link stellt mehrere Links in verschiedene Richtungen und auf unterschiedliche Ressourcen zur Verfügung.

Frage:
Müssen XLink-Attribute validiert werden?

Antwort:
Da XLink-Attribute nur zusätzliche Attribute für ein Element der XML-Instanz sind, müssen sie validiert werden, wenn der Instanz eine DTD oder eine andere Schemaform zugeordnet ist.

Frage:
Welche Rolle spielt ein Lokator bei XLink?

Antwort:
Der Lokator liefert die Adresse für eine externe Ressource, in der Regel eine URL. Die URL bezeichnet den Endpunkt für den Bogen, der bei der Ausführung des XLinks durchquert wird.

10.8 Übung

Im Lauf der vergangenen 1½ Wochen haben Sie Ihre Music Collection Markup Language (MCML) immer wieder mit neuen Features versehen. Heute fügen Sie einem der CD- Elemente einen einfachen Link hinzu, der durch einen Mausklick aktiviert wird. Als Resultat wird das aktuelle Browserfenster durch einen neuen Inhalt ersetzt, der aus dem Dokument regal.xml stammt. Sie müssen regal.xml erzeugen und ihm eine Beschreibung eingeben, die angibt, wo die CD zu finden ist. Überprüfen Sie Ihre Lösung, indem Sie den Link mit Netscape 6 ausführen.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbackKapitelanfangnächstes Kapitel


© Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH