Druck-Version
Deutsch Nederlands English
Inhaltsverzeichnis
Teile: Teil: XML Teil: PHP Quellenverzeichnis
Pfad: > Teil: XML > XSL-Transformationen
Benachbarte Abschnitte: Anwendung von XSLT Aufbau eines Stylesheets Grundlegende XSLT-Elemente Muster und Ausdrücke, XPath/XQuery Weitere XSLT-Elemente
1.4.2. Aufbau eines Stylesheets

Ein XSLT-Stylesheet muß die Anforderungen an ein gültiges XML-Dokument erfüllen. Dementsprechend fängt ein solches Dokument mit einer XML-Deklaration an und enthält ein einzelnes Root-Element.

Beispiel 48: Minimales XSL-Dokument
<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="2.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html"/> 
<xsl:template match="/"> 
	<xsl:value-of select="*"/> 
</xsl:template> 
</xsl:stylesheet> 

Im Beispiel wird gezeigt, dass das Root-Element stylesheet heissen muss. Es wird der Namensraum xls verwendet, der mit einer URL auf die w3.org-Seiten im Internet definiert wird.

Neben dieser Standalone-Lösung des Stylesheets ist es auch möglich, ein xsl:stylesheet-Element in einem normalen XML-Dokument (an beliebiger Stelle) abzulegen. Dieses Art des Stylesheets wird als embedded stylesheet module bezeichnet.

Eine weitere Form eines Stylesheets ist das sogenannte simplified stylesheet module. Dieses kann verwendet werden, wenn lediglich ein einziges Template definiert werden soll. In diesem Fall fallen das Templateelement und das xsl:stylesheet-Element zusammen.

Beispiel 49: simplified stylesheet module
<html xsl:version="2.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
	xmlns="http://www.w3.org/1999/xhtml"> 
	<head> 
		<title>Expense Report Summary</title> 
	</head> 
	<body> 
		<p>Total Amount:  
		<xsl:value-of select="expense-report/total"/> 
		</p> 
	</body> 
</html> 

Die eigentliche Arbeit im Stylesheet wird über die xsl:template-Elemente gesteuert. Im Beispiel ist eines vorhanden mit dem Attribut match="/". Der Wert des Attributs ist ein XPath-Ausdruck und der verwendete Wert gibt das Root-Element des Ausgangsdokuments zurück. Dementsprechend werden die in diesem Element enthaltenen Anweisungen auf das Root-Element angewendet. Da es möglich ist, dass verschiedene Templates auf ein einzelnes Element passen, gilt, dass jeweils das Template verwendet wird, welches am besten auf das Element passt.

Ein Template mit einem Match auf den Namen des Elements erhält in diesem Fall also den Vorzug zu einem Template mit einem Match auf * (alle Elemente).

Ist kein passendes Template im Stylesheet enthalten, so wird das build-in-Template aufgerufen. Dies hat zur folge, dass die die Templates der Kindelemente aufgerufen werden, bzw. der Textinhalt ausgegeben wird. Soll dies verhindert werden, empfielt sich die Verwendung eines leeren Templates mit einem match-Attribut mit dem Wert "*", damit es auf alle passt. Dieses wird dann verwendet, wenn keine Templates vorhanden sind für ein spezifisches Element, welches besser passen würde.