Signatur
Beschreibung
Mit getParameter() lesen Sie den aktuellen Wert eines Stylesheet-Parameters aus einer XSLTProcessor-Instanz. Solche Parameter werden im XSLT-Stylesheet als globale <xsl:param>-Elemente angelegt. Von JavaScript aus belegen Sie sie vor der Transformation mit setParameter().
Die Methode liefert nur Werte, die Sie selbst per setParameter() gesetzt haben. Den Standardwert aus dem Stylesheet, also das select-Attribut oder den Inhalt von <xsl:param>, gibt sie nicht zurück. Ein Parameter wird über ein Paar aus Namensraum-URI und lokalem Namen angesprochen. Für Parameter ohne Namensraum übergeben Sie null oder einen leeren String.
Typische Anwendungsfälle sind das Debuggen von Transformationen, bedingte Logik („Ist der Parameter schon gesetzt?“) und das Wiederverwenden eines Prozessors für mehrere Transformationen mit wechselnden Parametern.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $namespaceURI Pflicht | string | null | Namensraum-URI des Parameters. Für Parameter ohne Namensraum null oder "" übergeben. |
|
| $localName Pflicht | string | Lokaler Name des Parameters, also der Wert von name im <xsl:param>-Element. |
Rückgabewert
setParameter() gesetzte Wert. Ist der Parameter nicht gesetzt, liefert Firefox null, Chromium- und WebKit-Browser liefern undefined. Chromium und WebKit geben Werte immer als String zurück.Beispiele
Parameter setzen und wieder auslesen
const xslText = `<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="titel" select="'Standard'"/>
<xsl:template match="/">
<h1><xsl:value-of select="$titel"/></h1>
</xsl:template>
</xsl:stylesheet>`;
const parser = new DOMParser();
const xsl = parser.parseFromString(xslText, 'application/xml');
const processor = new XSLTProcessor();
processor.importStylesheet(xsl);
processor.setParameter(null, 'titel', 'Produktliste');
console.log(processor.getParameter(null, 'titel'));
Standardwert aus dem Stylesheet wird nicht zurückgegeben
const processor = new XSLTProcessor();
processor.importStylesheet(xsl); // Stylesheet aus dem ersten Beispiel
// Nichts gesetzt: Der select-Standardwert 'Standard' wird NICHT geliefert
const wert = processor.getParameter(null, 'titel');
console.log(wert ?? '(nicht gesetzt)');
Prozessor wiederverwenden und Parameter prüfen
const renderMitSprache = (processor, xmlDoc, sprache) => {
if (processor.getParameter(null, 'lang') !== sprache) {
processor.setParameter(null, 'lang', sprache);
}
return processor.transformToFragment(xmlDoc, document);
};
const xml = new DOMParser().parseFromString('<daten/>', 'application/xml');
const fragment = renderMitSprache(processor, xml, 'de');
document.body.append(fragment);
console.log(processor.getParameter(null, 'lang'));
// Wichtig · Fallstricke
- Uneinheitlicher Rückgabewert: Ein nicht gesetzter Parameter ergibt in Firefox
nullund in Chrome/Safariundefined. Prüfen Sie deshalb mit== nulloder??statt mit=== null. - Nur Strings in Chromium/WebKit: Diese Browser speichern jeden Wert als String, zum Beispiel wird
42zu\"42\". Firefox behält auch Zahlen, Wahrheitswerte und Knoten bei. - Nach
clearParameters()oderremoveParameter()gibt die Methode wieder „nicht gesetzt“ zurück.reset()entfernt ebenfalls alle Parameter. - Die Namensraum-URI muss exakt stimmen. Ein Parameter mit Präfix im Stylesheet, etwa
my:param, wird über die URI angesprochen, nicht über das Präfix. XSLTProcessorgibt es nur im Browser. In Node.js brauchen Sie dafür externe Bibliotheken.