Literal Result Elements unter der Lupe
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)
Die Template-Regel des allerersten Beispiels beinhaltete ausschließlich »Literal Result Elements«, aus denen dann das Ergebnisdokument gebildet wurde:
<xsl:template match="/">
<html>
<head>
<title>Ergebnisdokument</title>
</head>
<body>
<h1 align="center">Die erste XSLT-Transformation</h1>
<p>Ein Textabsatz. Später mehr.</p>
</body>
</html>
</xsl:template>
Es wurde schon gezeigt, dass diese in der gleichen Form, in der sie in der Template-Regel stehen, wieder im Ergebnisdokument auftauchen. Dies betrifft auch Zeilenumbrüche und Einrückungen, also die Whitespace-Zeichen.
Die ganze Zeit war klammheimlich von Literal Result Elements die Rede, obwohl hier ganz offensichtlich nicht nur Elemente im Spiel sind. Unter anderem enthält das Beispiel eine kurze Textpassage in Form der Zeichenkette Die erste XSLT-Transformation, die ebenfalls kopiert wird.
In der Tat stimmt die Bezeichnung »Literal Result Element« in diesem Fall nicht wirklich, es müsste korrekt Literal Data Characters heißen. In der Praxis unterscheidet man zwischen beidem jedoch nicht.
Attribute in Literal Result Elements
In Literal Result Elements enthaltene Attribute werden unverändert mitkopiert. Im vorgestellten Beispiel gilt dies für das Präsentationsattribut align="center" der HTML-Überschrift <h1> (richtig, das align-Attribut ist veraltet – als Beispiel ist es hier jedoch gut genug). Im Fall mehrerer kopierter Attribute bleibt deren Reihenfolge erhalten.
Das Attributwert-Template kurz vorgestellt
Ein Attribut ist jedoch kein Element. Es besitzt neben einem Namen auch einen veränderlichen Wert; statt "center" könnte bei align ja auch "right" oder "left" stehen. Es ist jedoch nicht immer möglich, sich in allen Fällen bereits beim Schreiben des Stylesheets auf einen Attributwert festzulegen.
Dem wird auch in Literal Result Elements (LRE) Rechnung getragen: Es besteht die Möglichkeit, den Wert eines kopierten Attributs bei der Instanzierung des Templates dynamisch zu bestimmen, wodurch das LRE-Konzept wesentlich an Flexibilität gewinnt.
Wir wollen uns hier (noch) nicht damit auseinander setzen, wo der eingesetzte Wert letzten Endes herkommt. Die Syntax für einen variablen Attributwert sieht allgemein jedenfalls so aus:
<h1 align="{XPath-Ausdruck}"> ... </h1>
Das Prinzip wird als Attributwert-Template (AVT, Attribute Value Template) bezeichnet. Es beruht darauf, anstelle des Attributwertes einen Platzhalter zu verwenden, der zur Laufzeit durch einen konkreten Wert ersetzt wird. (Anmerkung: Sie dürfen sich durch den offiziellen Bezeichner Attributwert-»Template« nicht irritieren lassen. Das Konzept ist ein anderes als bei der Template-Regel. Der Begriff »Platzhalter« wäre in der Tat treffender.) Dieser wird durch die Auswertung eines XPath-Ausdrucks bestimmt. Beginn und Ende eines AVT-Bereichs innerhalb eines Attributwerts wird durch geschweifte Klammern markiert.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn