xsl:character-map

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

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

 

Die Deklaration xsl:character-map dient dazu, eine Liste aus Zeichenersatzvorschriften xsl:output-character zu einem benannten Character-Mapping (Zuordnungstabelle) zusammenzufassen.

Klassifizierung Deklaration
Funktionsgruppe Ausgabeformatdefinition
Einführung XSLT 2.0

Position im Stylesheet und erlaubte Inhalte:

xsl:character-map ist eine Deklaration und tritt nur als Kindelement der Wurzelelemente xsl:stylesheet oder xsl:transform auf.

Einzig gestatteter Inhalt sind ein oder mehrere xsl:output-character-Instruktionen. Alternativ kann das Element leer sein.

Attribute:

Es gelten die Standardattribute. Die Deklaration besitzt desweiteren zwei elementspezifische Attribute – ein obligatorisches name-Attribut und ein optionales use-character-maps-Attribut.

name

Wert

QName

Verwendung

Obligatorisch

Einführung

XSLT 2.0

Der Bezeichner der Deklaration in Form eines QNames, um das definierte Character-Mapping in eine xsl:output-Deklaration oder eine andere xsl:character-map-Deklaration einbinden zu können.

use-character-maps

Wert

QNames (von Character-Map-Deklarationen)

Verwendung

Optional

Einführung

XSLT 2.0

Optional. Der Attributwert von use-character-maps nennt in Form einer leerzeichengetrennten Tokenliste die QNames einer oder mehrerer weiterer, in die Deklaration einzubindender xsl:character-map-Deklarationen. Die Reihenfolge der Nennung in der Liste ist relevant.

Verwendung:

Das Element xsl:character-map dient zur Deklaration einer benannten Zuordnungstabelle für Zeichenersetzungen im Ergebnisbaum (final result tree). Jede einzelne Zeichenersetzung wird in einer xsl:output-character-Instruktion festgelegt, die entweder unmittelbar in der xsl:character-map-Deklara­tion selbst enthalten ist oder sich in einer anderen, gleichartigen Deklaration befindet, die mit Hilfe des use-character-maps-Attributs über ihren Namen eingebunden wurde.

Der Bezeichner einer Character-Map-Deklaration ist ein QName, der über das obligatorische name-Attribut vergeben wird. Durch Import oder Inklusion wei­terer Stylesheetmodule können externe Deklarationen hinzugefügt werden. Bei Namensgleichheit entscheidet die Importpräzedenz, welche Deklaration ver­wendet wird (beispielsweise, wenn eine xsl:output-Deklaration auf sie Bezug nimmt). Es wird als statischer Fehler gewertet, wenn zwei gleich benannte Dekla­rationen mit identischer Importpräzedenz vorhanden sind (ERR XTSE1580), da diese nicht unterscheidbar wären.

In die benannte Sammlung von Zeichenersetzungen können weitere xsl:cha­racter-map-Deklarationen eingebunden werden. Hierfür wird die einzubin­dende Deklaration über ihren Namen im use-character-maps-Attribut refe­renziert.

Die Character-Map-Deklaration darf sich dabei nicht selbst in einen Zirkelbe­zug einbinden – dies wäre ein statischer Fehler (ERR XTSE1600). Ebenso als Fehler gilt, wenn zu einer Referenz in use-character-maps keine entsprechend benannte xsl:character-map-Deklaration auffindbar ist (ERR XTSE1590).

Treten durch die Einbindung anderer Deklarationen für ein Zeichen Dopplungen bei Ersetzungsvorschriften auf, so gilt die jeweils als letzte erfolgte Vorschrift. Innerhalb der Deklaration wird dies durch die Dokumentreihenfolge bestimmt.

Bei der Einbindung anderer Deklarationen spielt die Reihenfolge ihrer Referen­zierung eine Rolle, d.h. die Abfolge der Token im Attributwert von use-cha­racter-maps: Die Vorschrift der zuletzt eingebundenen Sammlung unter denen, die eine entsprechende Dublette enthalten, hat Vorrang.

Tritt ein Konflikt zwischen eingebundenen und innerhalb der Deklaration selbst erfolgten Vorschriften auf, so hat die eingebundene Vorschrift Vorrang (dies ist analog zum Verhalten für Templateregeln bei der Inklusion – nicht beim Import! – von Stylesheetmodulen). Es ist daher nicht möglich, eine einge­bundene Vorschrift durch eine interne Vorschrift zu überschreiben, wohl aber umgekehrt.

Ein xsl:character-map-Element ohne Inhalt kann dann sinnvoll sein, wenn es dazu dient, mittels seines use-character-maps-Attributs andere xsl:cha­racter-map-Deklarationen zu einer benannten Gruppe zusammenzufassen.

Beispiel:

Ein Beispiel befindet sich bei den Erläuterungen zu xsl:out­put-character.

Elementdefinition:

XSLT 1.0:

Element in XSLT 1.0 nicht verfügbar.

XSLT 2.0:

<!-- Category: declaration -->
<xsl:character-map
     name = qname
     use-character-maps? = qnames>

     <!-- Content: (xsl:output-character*) -->
</xsl:character-map>
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