Start · Sprachen · JavaScript · Referenz · XSLTProcessor.getParameter()

XSLTProcessor.getParameter()

Methode

Gibt den Wert eines XSLT-Parameters (<code>&lt;xsl:param&gt;</code>) zurück, der zuvor mit <code>setParameter()</code> im <code>XSLTProcessor</code> gesetzt wurde.

seit JavaScript Baseline: alle Browser (Chrome, Edge, Firefox, Saf deprecated seit ja Kategorie: webapi

Signatur

XSLTProcessor.prototype.getParameter(namespaceURI, localName)

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

Typ
string | number | boolean | Node | Node[] | null | undefined
Beschreibung
Der mit 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'));
Produktliste

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)');
(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'));
de

// Wichtig · Fallstricke

  • Uneinheitlicher Rückgabewert: Ein nicht gesetzter Parameter ergibt in Firefox null und in Chrome/Safari undefined. Prüfen Sie deshalb mit == null oder ?? statt mit === null.
  • Nur Strings in Chromium/WebKit: Diese Browser speichern jeden Wert als String, zum Beispiel wird 42 zu \"42\". Firefox behält auch Zahlen, Wahrheitswerte und Knoten bei.
  • Nach clearParameters() oder removeParameter() 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.
  • XSLTProcessor gibt es nur im Browser. In Node.js brauchen Sie dafür externe Bibliotheken.