Adobe
Produkte
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
Weitere Produkte
Lösungen
Digitales Marketing
Digitale Medien
Bildungseinrichtungen
Finanzdienstleistungen
Behörden
Web Experience Management
Weitere Lösungen
Lernressourcen Hilfe Downloads Über Adobe
Kaufen
Home-Office für privaten Gebrauch und Heim­arbeits­platz
Education für Schüler, Studierende, Lehrkräfte, Dozenten und Mitarbeiter
Business Kleine und mittlere Unternehmen
Lizenzprogramme für Unternehmen, Bildungs- und Regierungs­ein­richtungen
Weitere Bestell­möglich­keiten
Sonder­angebote
Suchen
 
Info Anmelden
Willkommen, Mein Warenkorb Meine Bestellungen Mein Adobe
Mein Adobe
Meine Bestellungen
Meine Daten
Meine Einstellungen
Abmelden
Vorteile der Registrierung Als registrierter Anwender erhalten Sie Zugriff auf Ihr Konto, Testversionen, Produkterweiterungen, bestimmte Community-Bereiche u. v. m..
Adobe
Produkte Bereiche Kaufen   Suchen  
Lösungen Über Adobe
Hilfe Lernressourcen
Anmelden Abmelden Meine Bestellungen Mein Adobe
Voraussichtliche Verfügbarkeit bei VorbestellungDateIhre Kreditkartenkonto wird erst dann belastet, wenn das Produkt ausgeliefert wird. Änderungen des voraussichtlichen Verfügbarkeitsdatums sind vorbehalten. Voraussichtliche Verfügbarkeit bei VorbestellungDateIhre Kreditkartenkonto wird erst dann belastet, wenn das Produkt zum Download bereit ist. Änderungen des voraussichtlichen Verfügbarkeitsdatums sind vorbehalten.
Mge:
Für Ihre Bestellung ist ein Berechtigungsnachweis erforderlich.
Zwischensumme
Bestellung prüfen
Developer Connection / Dreamweaver Developer Center /

XSL-Übersicht

Von Marius Zaharia

Marius Zaharia
  • www.interaktonline.com

Content

  • Was ist XSL, und wann wird es eingesetzt?
  • Wie arbeiten XML und XSL zusammen?
  • Was ist ein Namespace?
  • Was ist XPath?
  • Filtern, Sortieren und Bedingungen verwenden, um Inhalte selektiv anzuzeigen

Geändert

22 August 2005

Seitentools

Auf Facebook posten
Auf Twitter posten
Auf LinkedIn posten
Lesezeichen
Drucken
Dreamweaver extensibility RSS XHTML XML XSL XSLT

Voraussetzungen

Niveau

Fortgeschrittene

Tutorials und Beispieldateien

  • xsl_overview_samples.zip (4 KB)

Zusätzliche Anforderungen

Dreamweaver MX 2004 oder höher (optional)

  • Testen
  • Kaufen
  • Die Installation von Dreamweaver wird empfohlen, um die Beispiele in diesem Tutorial nachzuarbeiten. Sie können zwar auch einen beliebigen anderen Texteditor verwenden, Sie können dann aber nicht die native XSL-Unterstützung von Dreamweaver nutzen.
  • Sie benötigen keine XSL-Vorkenntnisse. Dieser Artikel soll erklären, wie Sie XML-Daten mit XSL verarbeiten können.
  • Erfahrungen mit HTML, WWW und dem Erstellen von Webseiten sind vorteilhaft.

Sie sollten meinen vorigen Artikel, XML-Übersicht, gelesen haben.

Wenn Sie meinen früheren Artikel, XML-Übersicht, gelesen haben, wissen Sie, dass XML für den Datenaustausch entwickelt wurde. Die meisten Webanwendungen werden jedoch mit Blick auf den Endbenutzer entwickelt. Deshalb sollten die Informationen in einem lesbaren Format präsentiert werden. Hier kommt XSL ins Spiel: XSL nimmt die Daten aus den XML-Strukturen und verarbeitet sie, damit sie sinnvoll ausgegeben werden. Natürlich können Sie Perl, Java oder PHP verwenden, um das Transformieren von XML-Dokumenten zu umgehen. Da XML jedoch immer wichtiger wird, sollten Sie XSL und die zugrundeliegenden Funktionsweisen verstehen.

Zum Glück ermöglicht Dreamweaver 8 eine visuelle Herangehensweise für XSL-Transformationen, sodass Sie XML-basierte Daten ganz ohne manuelles Kodieren verarbeiten können. Um zu verdeutlichen, wie XML und XSL zusammen verwendet werden können, um Informationen zu verarbeiten und anzuzeigen, gehe ich in diesem Artikel auf XLS-Grundlagen und einige Anwendungsmöglichkeiten ein. Ich beschreibe die grundlegenden XSL-Syntaxregeln und nenne einige Beispiel für das Anwenden von Stilen mit XLS, und ich erläutere den Unterschied zwischen einer serverseitigen und einer clientseitigen Transformation.

Was ist XSL, und wann wird es eingesetzt?

XSL ist für XML, was CSS für HTML ist. XSL steht für EXtensible Stylesheet Language. Es handelt sich um eine Sprache, die zur Darstellung von XML-Daten in einem lesbaren Format dient. XSL besteht tatsächlich aus zwei Teilen:

  • XSLT – eine Sprache zum Transformieren von XML-Dokumenten
  • XPath – eine Sprache zum Navigieren in XML-Dokumenten

XSLT steht für XSL Transformations und ist der wichtigste Teil von XSL.

XSLT transformiert ein XML-Dokument in ein anderes XML-Dokument, in eine XHTML-Ausgabe oder in einfachen Text. Dies geschieht normalerweise durch das Transformieren der einzelnen XML-Elemente in HTML-Elemente. XSL ist erforderlich, da XML-Tags benutzerdefiniert sind und Browser deshalb nicht wissen, wie die einzelnen Tags zu interpretieren oder wiederzugeben sind. Sie sollen von Menschen, nicht von Maschinen gelesen werden können.

XLST kann auch die folgenden Vorgänge für eine XML-Struktur ausführen:

  • Elemente hinzufügen und entfernen
  • Attribute hinzufügen und entfernen
  • Elemente neu anordnen und sortieren
  • bestimmte Elemente ein- oder ausblenden
  • bestimmte Elemente suchen oder auswählen

Wenn Sie Ihre Kenntnisse über die XML-Syntax auffrischen möchten, lesen Sie den Abschnitt über die XML-Syntax in meinem vorigen Artikel über XML.

XSL-Syntax

Wie Sie vielleicht noch aus dem Artikel XML-Übersicht wissen, beginnen alle XML-Dokumente mit einer XML-Deklaration. Das gilt auch für XSL-Stylesheets. Die erste Zeile eines XSL-Dokuments ist tatsächlich eine XML-Deklaration:

<?xml version="1.0" encoding="ISO-8859-1"?>

Ist XSL also dasselbe wie XML?

Ja und nein. Ja, weil dieselben Syntaxregeln gelten (abgesehen von einigen Unterschieden, die ich gleich noch nennen werde). Nein, weil sie unterschiedlichen Zwecken dienen: XML enthält Daten, XSL formatiert sie.

Nach der XML-Deklaration folgt eine XSL-Deklaration, so wie:

<xsl:stylesheet>

oder

<xsl:transform>

In den meisten echten Anwendungen sieht die XSL-Deklaration jedoch etwas komplexer aus:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

Dies liegt daran, dass auch der Namespace und die Version der XSL-Spezifikation angegeben werden, gemäß den Empfehlungen des W3 Consortiums.

Anders als die XML-Deklaration, die in eine einzelne Zeile geschrieben wird und über kein schließendes Tag verfügt, braucht die XSL-Deklaration ein schließendes Tag, welches das Ende des XSL-Stylesheets kennzeichnet:

</xsl:stylesheet>

Dies verstößt nicht gegen die XML-Syntaxregeln: ein XSL-Stylesheet ist ein gültiges XML-Dokument, da es über ein einzelnes Stammelement verfügt, das durch das Tag <xsl:stylesheet> festgelegt wird.

Wo sollte XSL verwendet werden?

XSL wurde für wenige, spezielle Ziele entwickelt, wodurch es für einige Entwicklungssituationen perfekt geeignet ist, während es in anderen Fällen überhaupt nicht angebracht ist.

  • XSL wurde entwickelt, um XML-Dokumente zu verarbeiten und die XML-Syntax zu beachten. Deshalb sollten Sie XSL nur in Verbindung mit XML in XML-unterstützenden Anwendungen einsetzen. XML und XSL eignen sich hervorragend für: Webportale, Nachrichten-Aggregatoren, Community-Websites oder andere Webanwendungen, die Informationen an verschiedene Geräte und eine große Anzahl von Clients ausgeben.
  • XSLT ist eine Sprache, die auf Mustererkennung basiert. Sie sucht nach Knoten, die bestimmte Bedingungen erfüllen, und wendet dann die entsprechenden Regeln an. Deshalb fehlt die Rechenleistung der meisten Programmiersprachen. XSL kann zum Beispiel den Wert von Variablen zur Laufzeit nicht ändern. XSL sollte nicht verwendet werden, um Werte aus dynamischen Datenquellen mithilfe komplizierter Formeln zu berechnen (zum Beispiel in einem Online-Shop). Dazu sind Programmiersprachen viel besser geeignet.
  • XSL wurde nicht als Ersatz oder Ergänzung von CSS entwickelt. Es kann nicht verwendet werden, um HTML-Dokumente zu formatieren. Sie können es jedoch für Websites verwenden, die häufig grafisch umgestaltet werden, deren Layout oft geändert wird, und die in einem flexiblen Format mit Daten umgehen müssen.
  • XSL ist kein ContentPath-Management-Tool. Es kann nicht verwendet werden, um den Inhalt von XML-Dokumenten zu ändern oder Informationen zu bearbeiten. Sie können XML und XSL jedoch für ContentPath-Management-Systeme einsetzen, die Dokumente in mehreren unterschiedlichen Formaten verarbeiten oder ausgeben müssen.

Wie arbeiten XML und XSL zusammen?

Wie passt XSL in das Gesamtbild? Um die fertigen HTML-Seiten für die Besucher Ihrer Website zu produzieren, müssen Sie ein XSL-Stylesheet auf Ihre XML-Datenquelle anwenden. Die eigentliche Transformation kann entweder von Ihrem Webserver oder vom Browser des Clients ausgeführt werden. Die fertige Ausgabe kann eine vollständige HTML-Seite oder ein Teil davon sein, der auf verschiedenen Seiten verwendet wird.

Serverseitig und clientseitig im Vergleich

Sowohl der serverseitige als auch der clientseitige Ansatz haben ihre Vor- und Nachteile. Die serverseitige Transformation ermöglicht die Verarbeitung von XML-Dokumenten entweder von Ihrem Server oder von einer anderen Stelle im Internet. Der Server führt den eigentlichen Vorgang aus, bei dem eine HTML-Ausgabe erstellt wird, die jeder Browser laden kann. Auf der anderen Seite benötigen Sie für eine serverseitige XSL-Transformation einen richtig konfigurierten Anwendungsserver, der XML und XSL unterstützt. Nicht alle Hosting-Server sind darauf vorbereitet. Deshalb werde ich in einem meiner nächsten Artikel erläutern, wie die erforderlichen XML/XSL-Bibliotheken für PHP-Server installiert und konfiguriert werden. Dreamweaver 8 unterstützt XSL-Transformationen für ColdFusion-, ASP-, ASP.NET- und PHP-Seiten.

Im folgenden Diagramm sehen Sie den Ablauf der serverseitigen Transformation:

Der Ablauf der serverseitigen XSL-Transformation
Abbildung 1. Der Ablauf der serverseitigen XSL-Transformation

Beachten Sie, dass sich das XML-Dokument nicht auf dem Webserver befinden muss. Es kann auch auf einer Remote-Website platziert werden, von wo es bei Bedarf auf Ihren Server geladen wird.

Bei der clientseitigen Transformation erledigt der Browser des Clients die ganze Arbeit. Der Nachteil dabei ist, dass nicht alle Browser XML/XSL unterstützen, weshalb einige der Clients Ihre Seiten womöglich nicht anzeigen können. Eine Liste aktueller Browser, die über XML/XSL-Funktionen verfügen, finden Sie auf dieser Seite der Website des W3 Consortiums. Außerdem sind Sie mit dem clientseitigen Ansatz auf die Verarbeitung lokaler XML-Dateien beschränkt. Wenn Sie zum Beispiel einen RSS-Datenstrom von einer anderen Website importieren möchten, müssen Sie eine Kopie davon herunterladen und diese dann auf Ihren Server hochladen. Bei jeder Änderung der ursprünglichen RSS-Datei auf der Remote-Website müssen Sie die Datei erneut herunterladen und auf Ihren Webserver platzieren.

Um dem Browser mitzuteilen, welches XSL-Stylesheet für die Verarbeitung des XML-Dokuments verwendet werden muss, müssen Sie die folgende Deklaration direkt nach der XML-Deklaration in die XML-Datei einfügen:

<?xml-stylesheet type="text/xsl" href="company.xsl"?>

Das Attribut href gibt den Pfad zum zu verwendenden XSL-Stylesheet an. Der Mechanismus ähnelt dem Verweis auf ein externes CSS-Stylesheet am Anfang einer HTML-Seite. Im folgenden Diagramm sehen Sie den clientseitigen Ablauf einer XSL-Transformation:

Der Ablauf der clientseitigen XSL-Transformation
Abbildung 2. Der Ablauf der clientseitigen XSL-Transformation

Was ist ein Namespace?

Ich habe schon erwähnt, dass die XSL-Deklaration auch den Namespace des Dokuments enthält. Ein Namespace ist – wie der Name schon sagt – ein "Raum für Namen". Er gibt den Satz von Elementnamen und Attributnamen an, die Sie in einem bestimmten Dokument verwenden dürfen. Der Zweck eines Namespace ist es, Namenskonflikte zu vermeiden. Da XML und andere, XML-bezogene Sprachen benutzerdefiniert sind, könnten Namenskonflikte auftreten. So kann zum Beispiel <table> auf eine Datenbanktabelle, eine Layout-Tabelle, ein Möbelstück oder einen Tisch in einem Restaurant verweisen. Da die meisten Anwendungen mehrere XML-Dokumente gleichzeitig verarbeiten, ist es nicht ungewöhnlich, verschiedene XML-Dokumente zu kombinieren, wobei dann ein bestimmtes Elemente mehrere Bedeutungen haben kann. Indem derselbe Namespace für verschiedene Dokumente verwendet wird, kann sichergestellt werden, dass das Element jeweils dieselbe Bedeutung hat. Auf der anderen Seite gewährleistet die Verwendung unterschiedlicher Namespaces, dass die Elemente unterschiedliche Bedeutungen haben.

In XML werden Namespaces durch das Attribut xmlns der Dokumentdeklaration festgelegt. Sie bestehen aus einem URI (Uniform Resource Identifier), d. h. aus der Adresse einer Website (z. B. http://www.w3.org/1999/XSL/Transform). Der Grund dafür ist, dass URIs eindeutig und einmalig sind, deshalb werden die entsprechenden Namespaces ebenfalls eindeutig sein.

Hinweis: Der URI in der Dokumentdeklaration wird einfach als Name verwendet. Er ist nicht als Hyperlink zu einem XML-Schema oder als Hinweis auf den Eigentümer des Dokuments (das Unternehmen oder die Website, von der das Dokument stammt) gedacht.

Da Sie jetzt eine Vorstellung von Namespaces haben, komme ich zur XSL-Syntax zurück. So wie XML-Dokumente aus einer hierarchisch angeordneten Menge von Elementen bestehen, setzen sich XSL-Dokumente aus Vorlagen oder Regeln zusammen. Jede Vorlage definiert die Regeln, die auf einen bestimmten XML-Knoten angewendet werden. Eine XSL-Vorlage sieht so aus:

<xsl:template match=""> </xsl:template>

Das Attribut match verknüpft eine XSL-Vorlage mit einem XML-Element. Der entsprechende Knoten wird als XPath-Ausdruck angegeben. Über XPath werde ich im nächsten Abschnitt schreiben.

Was ist XPath?

XSL verwendet XPath, um einzelne Elemente der XML-Baumstruktur zu identifizieren, die verarbeitet werden müssen. Einfach ausgedrückt ist XPath ein Navigations-Tool für die Suche nach XML-Elementen. XPath verwendet dieselbe Syntax wie Systempfade in Betriebssystemen (z. B. C:\Programme\Macromedia\ oder /usr/bin/perl). Vergleichbar ist company/department/employee der XPath-Ausdruck, der auf das Element employee in einem XML-Dokument mit Informationen über ein Unternehmen (company) und dessen Abteilungen (department) zeigt. Dreamweaver 8 bietet eine visuelle Benutzeroberfläche und erstellt XPath-Ausdrücke für Sie, dennoch sollten Sie die Grundlagen von XPath verstehen, damit Sie XML-Daten von XSL-Stylesheets aus bearbeiten können.

Im Wesentlichen beachtet die XPath-Spezifikation dieselben Regeln wie die Dateisystemadressierung:

  • Wenn der XPath-Ausdruck mit einem Schrägstrich (/) beginnt, stellt er den absoluten Pfad zum XML-Element dar (beginnend beim Stamm des XML-Dokuments).
  • Wenn der XPath-Ausdruck mit einem doppelten Schrägstrich (//) beginnt, werden alle Elemente des aktuellen Dokuments, die die angegebenen Kriterien erfüllen, ausgewählt, unabhängig von ihrer Position im XML-Dokument. So sucht //employee beispielsweise alle employee-Knoten aus dem XML-Dokument.
  • Das Sternchen (*) wählt alle XML-Elemente aus, die sich im vorangehenden Pfad befinden. So wählt der Ausdruck /company/department/* zum Beispiel alle untergeordneten Knoten einer Abteilung (department) aus, also alle Mitarbeiter.
  • Ein Punkt (.) wählt den aktuellen Knoten aus, zwei Punkte (..) wählen den übergeordneten Knoten aus. Der XPath-Ausdruck, der die Abteilung eines Mitarbeiters auswählt, lautet zum Beispiel ../employee.
  • Um Attribute auszuwählen, verwenden Sie das Zeichen @. Der Ausdruck /company/department/employee[@retired] wählt zum Beispiel alle Mitarbeiter aus, für die das Attribut retired festgelegt wurde.

Der Inhalt des Elements <xsl:template> ist die Regel, die angewendet werden muss. Dies ist normalerweise HTML-Code, der an den Browser ausgegeben wird.

Erinnern Sie sich an das Dokument company.xml aus meinem vorigen Artikel? Stellen Sie sich vor, Sie müssten eine Regel auf den employee-Knoten anwenden, um die Mitarbeiter in einer Tabelle anzuzeigen:

Eine Regel auf den employee-Knoten anwenden
Abbildung 3. Eine Regel auf den employee-Knoten anwenden

Die XSL-Regel sieht dann folgendermaßen aus:

<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> </table> </xsl:template>

Beachten Sie, dass es sich bei dem Inhalt zwischen den Tabellen-Tags um reinen HTML-Code handelt. Der Code teilt dem Browser mit, dass die Mitarbeiter in einer Tabelle mit den folgenden Spaltenüberschriften angezeigt werden: Name, Job und Salary.

Der Ausdruck <xsl:template> definiert, wie ein Knoten im Browser aussieht. Um jedoch den tatsächlichen Inhalt des Knotens anzuzeigen, müssen Sie ein weiteres XSL-Konstrukt einsetzen: <xsl:value-of>. Der Name ist schon ziemlich aussagekräftig. Der Knoten, dessen Wert (value) angezeigt wird, wird durch das select-Attribut festgelegt, das einen XPath-Ausdruck als Wert nimmt. Angenommen, Sie möchten den Namen eines Mitarbeiters aus dem Dokument company.xml anzeigen. Der Code wird folgendermaßen aussehen:

<xsl:value-of select="/company/department/employee/name"/>

Zurück zum vorigen Beispiel (die Anzeige des Dokuments company.xml als Tabelle): Um die Werte der Knoten <name>, <job> und <salary> in der definierten XSL-Vorlage anzuzeigen, müssen Sie den folgenden Code schreiben:

<xsl:template match="/"> <table boder="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <tr> <td><xsl:value-of select="company/department/employee/name"/></td> <td><xsl:value-of select="company/department/employee/job"/></td> <td><xsl:value-of select="company/department/employee/salary"/></td> </tr> </table> </xsl:template>

Um im Browser zu sehen, wie sich der Code auswirkt, führen Sie die folgenden Schritte aus:

  1. Laden Sie die Beispieldateien xsl_overview_samples.zip herunter und entpacken Sie sie. Den Hyperlink zu der ZIP-Datei finden Sie am Anfang dieses Artikels.
  2. Öffnen Sie die Datei company.xml und suchen Sie die Dokumentdeklaration am Anfang der Datei:

    <?xml version="1.0" encoding="iso-8859-1"?>
  3. Erstellen Sie eine neue leere Zeile danach, und fügen Sie den folgenden Code in diese Zeile ein:
<?xml-stylesheet type="text/xsl" href="ex_01.xsl"?>

Hinweis: Was dieser Code bewirkt, habe ich im Abschnitt über die clientseitige Transformation weiter oben in diesem Artikel beschrieben. Der Code teilt dem Browser mit, welches XSL-Stylesheet für die Verarbeitung des XML-Dokuments verwendet werden soll. Das Attribut href gibt den Pfad zum zu verwendenden XSL-Stylesheet an.

  1. Speichern Sie die Datei, und drücken Sie <F12> (Windows) bzw. <Wahl> + <F12>, um eine Vorschau im Browser anzuzeigen. Beachten Sie, dass nur der erste Mitarbeiter angezeigt wird:
Das XSL-Stylesheet wird mit nur einem Mitarbeiter im Browser angezeigt
Abbildung 4. Das XSL-Stylesheet wird mit nur einem Mitarbeiter im Browser angezeigt

Um alle Mitarbeiter in der Tabelle anzuzeigen, müssen Sie ein weiteres gebräuchliches XSL-Konstrukt verwenden:

<xsl:for-each select=""> </xsl:for-each>

Der Wert des select-Attributs ist ein XPath-Ausdruck, der den Knotensatz, der angezeigt werden soll, festlegt. Wenn Sie mit anderen Programmiersprachen vertraut sind, merken Sie, dass das Konstrukt <xsl:for-each> die Aufgabe einer typischen for-Schleife übernimmt.

Jetzt sollen alle Mitarbeiter des Unternehmens angezeigt werden:

<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:for-each> </table> </xsl:template>

Beachten Sie, dass die XPath-Ausdrücke für Name, Job und Salary nicht den übergeordneten Knoten einschließen oder mit dem Dokumentstamm beginnen müssen. Dies liegt daran, dass der Pfad zu diesen Elementen anhand des XPath-Ausdrucks ermittelt wird, der im Konstrukt <xsl:for-each> angegeben ist. Damit Sie sehen, wie der Code in Ihrem Browser wirkt, öffnen Sie erneut die Datei company.xml, und ändern Sie den Wert des Attributs href in ex_02.xsl. Zeigen Sie dann eine Vorschau in Ihrem Browser an. Sie sollten die folgende HTML-Tabelle sehen:

Das XSL-Stylesheet wird mit allen Mitarbeitern im Browser angezeigt
Abbildung 5. Das XSL-Stylesheet wird mit allen Mitarbeitern im Browser angezeigt

Filtern, Sortieren und Bedingungen verwenden, um Inhalte selektiv anzuzeigen

Mit XLS haben Sie die Möglichkeit, Elemente zu filtern und zu sortieren sowie Inhalte anhand bestimmter Bedingungen anzuzeigen.

Elemente filtern

Mit dem Konstrukt <xsl:for-each> können Sie die Ausgabe anhand einer Bedingung filtern. Angenommen, Sie möchten nur diejenigen Mitarbeiter anzeigen, die als Programmierer tätig sind.

<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee[job='Programmer']"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:for-each> </table> </xsl:template>

Damit Sie sehen, wie der Code in Ihrem Browser wirkt, öffnen Sie erneut die Datei company.xml und ändern Sie den Wert des Attributs href in ex_03.xsl. Zeigen Sie dann eine Vorschau in Ihrem Browser an. Sie sehen, dass nur die Programmierer aus dem Dokument company.xml in einer HTML-Tabelle aufgelistet werden:

Das gefilterte XSL-Stylesheet in der Browseransicht
Abbildung 6. Das gefilterte XSL-Stylesheet in der Browseransicht

Bedingungen für XML-Knoten können Sie mit den folgenden Operatoren definieren:

  • gleich (=)
  • ungleich (!=). Zum Beispiel: name!='Ben Walker'
  • kleiner als (<). Zum Beispiel: salary<2750
  • kleiner als oder gleich (<=)
  • größer als (>)
  • größer als oder gleich (>=)

Elemente sortieren

Elemente lassen sich auch alphabetisch sortieren. Verwenden Sie einfach das Konstrukt <xsl:sort />, und geben Sie den Knoten an, nach dem sortiert werden soll. Das Element <xsl:sort /> muss in einem Element <xsl:for-each> verschachtelt sein, damit die Anwendung alle Elemente durchläuft. So können Sie die Mitarbeiter in alphabetischer Reihenfolge anzeigen:

<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <xsl:sort select="name" /> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:for-each> </table> </xsl:template>

Beachten Sie, dass das sort-Element kein entsprechendes schließendes Tag hat. Damit Sie sehen, wie der Code in Ihrem Browser wirkt, öffnen Sie erneut die Datei company.xml und ändern Sie den Wert des Attributs href in ex_04.xsl. Zeigen Sie dann eine Vorschau in Ihrem Browser an. Sie sehen, dass alle Mitarbeiter aus dem Dokument company.xml alphabetisch sortiert in einer HTML-Tabelle angezeigt werden:

Das sortierte XSL-Stylesheet in der Browseransicht
Abbildung 7. Das sortierte XSL-Stylesheet in der Browseransicht

Selbstverständlich können Sie problemlos zwischen aufsteigender und absteigender Reihenfolge wechseln, indem Sie einfach ein zusätzliches Attribut in das Element <xsl:sort /> einfügen:

<xsl:sort select="/name" order="descending"/>

Beachten Sie, dass der oben aufgeführte XSL-Code die Struktur des ursprünglichen XML-Dokuments nicht verändert. Die Mitarbeiter werden lediglich in dem generierten HTML-Code, der nach der XSL-Transformation an den Browser gesendet wird, in alphabetischer Reihenfolge aufgeführt.

Einfache und mehrfache Bedingungen

Wie mit den meisten Sprachen haben Sie auch mit XSL die Möglichkeit, bestimmte Inhalte anhand von Bedingungen anzuzeigen.

Eine einfache Bedingung wird mithilfe der folgenden Syntax definiert:

<xsl:if test="expression"> </xsl:if>

Damit alle Elemente anhand der Bedingung getestet werden und nur diejenigen angezeigt werden, die die Bedingung erfüllen, muss das Konstrukt xsl:if in einem xsl:for-each-Element verschachtelt sein. Im folgenden Beispiel werden nur die Mitarbeiter mit einem Gehalt von mehr als 2700 Dollar angezeigt:

<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <xsl:if test="salary &gt; 2700"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:if> </xsl:for-each> </table> </xsl:template>

Beachten Sie, dass die Zeichen für "kleiner als" (<) und "größer als" (>) durch die entsprechenden HTML-Escape-Sequenzen (&lt und &gt) ersetzt wurden. Andernfalls könnten sie leicht mit dem Anfang oder Ende eines Tags verwechselt werden. Damit Sie sehen, wie der Code in Ihrem Browser wirkt, öffnen Sie erneut die Datei company.xml und ändern Sie den Wert des Attributs href in ex_05.xsl. Zeigen Sie dann eine Vorschau in Ihrem Browser an. Sie sehen, dass nur diejenigen Mitarbeiter aus dem Dokument company.xml in der HTML-Tabelle angezeigt werden, deren Gehalt über 2700 Dollar liegt:

Das XSL-Stylesheet in einem Browser, wobei nur die Mitarbeiter mit einem Gehalt von mehr als 2700 Dollar angezeigt werden
Abbildung 8. Das XSL-Stylesheet in einem Browser, wobei nur die Mitarbeiter mit einem Gehalt von mehr als 2700 Dollar angezeigt werden

Die Operatoren, die Sie in den test-Ausdrücken verwenden können, sind die üblichen konditionalen Operatoren:

  • < (kleiner als)
  • > (größer als)
  • = (gleich)
  • != (ungleich)

Wenn Sie einen Wert mit einer Zeichenfolge vergleichen möchten, müssen Sie die Zeichenfolge in einfache Anführungszeichen setzen (zum Beispiel <xsl:if test="job = 'Software Analyst'">).

Sie können auch komplexere Bedingungen definieren, die den in den meisten Programmiersprachen verwendeten IF-ELSE-Konstrukten ähneln. Die Syntax ist einleuchtend:

<xsl:choose> <xsl:when test="expression"> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose>

Damit die Bedingungen für mehrere XML-Knoten getestet werden, muss das Konstrukt <xsl:choose> in einer <xsl:for-each>-Schleife verschachtelt sein.

Angenommen, Sie möchten alle Mitarbeiter, die weniger als 2700 Dollar verdienen, in Grün hervorheben, und alle Mitarbeiter mit einem Gehalt von mehr als 2700 Dollar in Blau:

<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <xsl:choose> <xsl:when test="salary > 2700"> <tr bgcolor="#66CCFF"> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:when> <xsl:otherwise> <tr bgcolor="#00CC99"> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </xsl:template>

Das Element <xsl:otherwise> legt die Regeln fest, die standardmäßig angewendet werden sollen, wenn die erste Testbedingung vom XML-Knoten nicht erfüllt wird.

Damit Sie sehen, wie der Code in Ihrem Browser wirkt, öffnen Sie erneut die Datei company.xml und ändern Sie den Wert des Attributs href in ex_06.xsl. Zeigen Sie dann eine Vorschau in Ihrem Browser an. Sie sollten die folgende HTML-Tabelle sehen:

Das XSL-Stylesheet in der Browseransicht, wobei Mitarbeiter mit einem Gehalt unter 2700 Dollar in Grün und Mitarbeiter mit einem Gehalt über 2700 Dollar in Blau angezeigt werden
Abbildung 9. Das XSL-Stylesheet in der Browseransicht, wobei Mitarbeiter mit einem Gehalt unter 2700 Dollar in Grün und Mitarbeiter mit einem Gehalt über 2700 Dollar in Blau angezeigt werden

Sie sehen, dass die Mitarbeiter mit weniger als 2700 Dollar Gehalt in Grün und die Mitarbeiter mit einem höheren Gehalt in Blau angezeigt werden.

Das Konstrukt <xsl:choose> kann unkompliziert erweitert werden, um mehrere Bedingungen zu testen, indem Sie ein oder mehrere <xsl:when>-Elemente hinzufügen. Unabhängig davon, wie viele <xsl:when>-Elemente es gibt, muss es immer ein einziges Element <xsl:otherwise> geben, das alle anderen Fälle, in denen die erste Testbedingung nicht erfüllt wird, regelt. Versuchen Sie übungshalber doch einmal, die Liste der Mitarbeiter mit den folgenden Hervorhebungen anzuzeigen:

  • Gelb für Mitarbeiter mit einem Gehalt unter 2500 Dollar.
  • Grün für Mitarbeiter mit einem Gehalt zwischen 2500 und 3000 Dollar.
  • Blau für Mitarbeiter mit einem Gehalt über 3000 Dollar.

Neu in Dreamweaver 8: Codehinweise

Eine der neuen Funktionen in Dreamweaver 8, die das Kodieren beschleunigen und vereinfachen, sind die die Codehinweise. Wenn Sie <xsl: eingeben, zeigt Dreamweaver eine Liste mit Optionen zur Vervollständigung der Eingabe an:

Die neuen XSL-Codehinweise in Dreamweaver 8
Abbildung 10. Die neuen XSL-Codehinweise in Dreamweaver 8

Um einen Knoten oder eine Funktion auszuwählen, heben Sie den entsprechenden Eintrag in der Liste hervor, und drücken Sie die Eingabetaste Windows bzw. den Zeilenschalter Macintosh . Mithilfe der Bildlaufpfeile können Sie durch die Liste mit Vorschlägen scrollen. Codehinweise helfen Ihnen, Code fehlerfrei zu schreiben oder zu bearbeiten.

Weitere Schritte

In diesem Artikel habe ich einen kurzen Überblick über XSL geschrieben, sodass Sie nun einige Richtlinien zur Verwendung von XSL in Ihren Webentwicklungsprojekten kennen sollten. Der Artikel geht kurz auf einige neue XML-Authoring-Funktionen in Dreamweaver 8 ein, die Sie als Entwicklungs-Tools für Ihre XML-basierten Anwendungen sicherlich hilfreich finden. Erforschen Sie die vielfältigen Möglichkeiten von XML und XSL.

  • Wenn Sie mehr über die neuen XML/XSL-Funktionen von Dreamweaver 8 erfahren möchten, lesen Sie die MAX-Vorschau von Alexandru Costin: Using the Power of XML with Dreamweaver. Beim MAX 2005-Treffen können Sie ihn und andere Entwickler treffen, und Sie haben Gelegenheit zu praktischen Übungen mit dem neuen Macromedia Studio 8.
  • Den Umgang mit XPath-Ausdrücken erlernen Sie in diesem Tutorial von W3 Schools.
  • Um Ihre XSL-Kenntnisse auszuprobieren, lesen Sie dieses interaktive Tutorial auf ZVON.org.

In meinen beiden nächsten Artikeln beschreibe ich die Verwendung eines RSS-Datenstroms in Ihrer Site mit Dreamweaver 8 sowie die Konfiguration Ihres Servers für serverseitige XSL-Transformationen. Dreamweaver 8 ist bereits erhältlich. Wenn Sie sich über das Macromedia Affiliate Program von InterAKT Online anmelden, erhalten Sie auch eine kostenlose Ausgabe von ImpAKT.

More Like This

  • Creating user-defined functions for ColdFusion 8 in Dreamweaver CS4
  • XML in the real world
  • Creating dynamic tables with the Spry framework
  • Creating a Spry XML data set
  • Creating a scoreboard in Spry in five easy steps
  • XML-Übersicht
  • Creating a ColdFusion upload page in Dreamweaver CS4
  • Creating custom server behaviors and Dreamweaver extensions
  • Creating and consuming ColdFusion components and web services with Dreamweaver CS4
  • Exchanging data using the Spry framework for Ajax and PHP

Tutorials and samples

Tutorials

  • Understanding HTML5 semantics: Changed and absent elements
  • Mobile app with PhoneGap: Submitting to the Apple App Store
  • PhoneGap and Dreamweaver: Releasing on iOS
  • Mobile app with PhoneGap: Creating a release build for Android

Samples

  • Responsive design with jQuery marquee
  • Customizable starter design for jQuery Mobile
  • Customizable starter design for HTML5 video
  • Customizable starter design for multiscreen development

Dreamweaver user forum

More
04/23/2012 Resolution/Compatibility/liquid layout
04/20/2012 using local/testing server with cs5 inserting images look fine in the split screen but do not show
04/18/2012 Ap Div help
04/23/2012 Updating

Dreamweaver Cookbook

More
11/07/2011 Simple social networking share buttons
09/20/2011 Registration form that will generate email for registrant to validate
08/21/2011 Spry Accordion - Vertical Text - Auto Start on Page Load - Mouse Over Pause
08/17/2011 Using cfdump anywhere you like

Produkte

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • Photoshop
  • Touch Apps
  • Weitere Apps

Lösungen

  • Inhaltserstellung
  • Digitales Marketing
  • Web Experience Management

Branchen

  • Bildungswesen
  • Finanzdienstleistungen
  • Behörden

Hilfe

  • Produktspezifische Support-Seiten
  • Bestellungen und Retouren
  • Download und Installation
  • Mein Adobe

Lernressourcen

  • Adobe Developer Connection
  • Adobe TV
  • Schulung und Zertifizierung
  • Foren
  • Design Center

Bestellmöglichkeiten

  • Für privaten Gebrauch und Heim­arbeits­platz
  • Für Schüler, Studierende, Lehrkräfte und Dozenten
  • Für kleine und mittlere Unternehmen
  • Für Unternehmen und Organisationen
  • Sonderangebote

Downloads

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

Über Adobe

  • Presse
  • Partnerprogramme
  • Soziales Engagement
  • Offene Stellen
  • Investoren
  • Veranstaltungen
  • Rechtliche Informationen
  • Softwarepiraterie
  • Impressum
  • Sicherheit
  • Kontakt
Region wählen Deutschland (Ändern)
Region wählen Schließen

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright 2012 Adobe Systems Incorporated. All rights reserved.

Nutzungsbedingungen | Richtlinien für den Datenschutz und Cookies (Aktualisiert)

AdAuswahl