Default-Namensraum für Literal Result Elements

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)

Hierfür gibt es zwei mögliche Wege. Zunächst könnte man weiterhin auf ein Präfix verzichten und (dies erfolgt wieder im Stylesheet-Element) einen sogenannten Default-Namensraum vereinbaren. Dies geschieht zusätzlich zum XSLT-Namensraum:

Code-Beispiel: kap01/1.6/stylesheet3.xsl.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
  <xsl:template match="/">
    <html>
      <body>
        <h1 align="center">Dies ist ein Ergebnisdokument.</h1>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Das xmlns-Pseudoattribut wird hier ohne Nennung eines Präfixes verwendet. Der so vereinbarte Namensraum bezieht sich auf alle Elemente im Inneren des Stylesheet-Elements, denen kein Präfix vorangestellt ist: Sobald ein Default-Namensraum vereinbart ist, befinden sich alle präfixlosen Elemente automa­tisch im Default-Namensraum.

In diesem speziellen Fall handelt es sich bei dem Default-Namensraum um einen XHTML-Namensraum, dem dann automatisch alle präfixlosen Elemente zugeordnet werden. Diese Kennzeichnung wird (als Namensraum­-Dekla­ration) auch in das Ergebnisdokument weitergereicht.

Wenn Sie dies ausprobieren, werden Sie merken, dass der XSLT-Prozessor in diesem Fall ein XML-Dokument im XHTML-Namensraum erzeugt und nicht (wie vielleicht erwartet) ein korrektes XHTML-Dokument.

Code-Beispiel: kap01/1.6/transformation3.html (leider nur scheinbar XHTML).

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Ergebnisdokument</title>
  </head>
  <body>
    <h1 align="center">XSLT-Transformation (Version b)</h1>
    <p>Das ist ein Testinhalt aus 'dummy.xml'.</p>
  </body>
</html>

Der XML-Prolog stört nicht. Vermisst wird aber die in XHTML obligatorische DOCTYPE-Deklaration. Schön immerhin, dass der Default-Namensraum als Namensraum-Deklaration im Wurzelelement gelandet ist. Dennoch reicht die Übergabe eines Namensraums offensichtlich nicht aus, um XHTML zu erzeugen.

Ein zusätzliches, interessantes Detail ist die Tatsache, dass das Encoding des Stylesheets und des Quelldokuments (beide ISO-8859-1) keinen Einfluss auf das des Ergebnisdokuments hat. Das Ergebnis besitzt ein Encoding gemäß UTF-8. Beachten Sie auch das erzeugte Meta-Element. Auch dieses steuern zu können, wäre wünschenswert.

   

<< 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