Signatur
Beschreibung
Die Methode removeParameter() gehört zur Schnittstelle XSLTProcessor. Sie löscht einen Parameterwert, den du vorher mit setParameter() gesetzt hast. Der Parameter wird über seinen Namensraum-URI und seinen lokalen Namen angegeben. Das Stylesheet selbst ändert sich dabei nicht. Bei der nächsten Transformation mit transformToFragment() oder transformToDocument() gilt wieder der Standardwert, der im Stylesheet im <xsl:param>-Element über select oder den Elementinhalt festgelegt ist.
Du brauchst die Methode vor allem, wenn du einen Prozessor mehrfach verwendest. Das ist zum Beispiel der Fall, wenn ein Stylesheet einmal importiert und dann mit wechselnden Filter- oder Sortierparametern immer wieder auf XML-Daten angewendet wird. Mit removeParameter() setzt du einen einzelnen Parameter gezielt zurück. clearParameters() entfernt dagegen alle Parameter auf einmal.
Parameter ohne Namensraum sprichst du mit null oder einem leeren String als namespaceURI an. Gibt es keinen Parameter mit diesem Namen, passiert nichts. Es wird kein Fehler ausgelöst.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $namespaceURI Pflicht | string | null | Namensraum-URI des Parameters. Für Parameter ohne Namensraum (der Normalfall) null oder "" übergeben. |
|
| $localName Pflicht | string | Lokaler Name des Parameters, also der Wert des name-Attributs von <xsl:param>. |
Rückgabewert
undefined).Beispiele
Parameter entfernen – wieder den Standardwert verwenden
const xslText = `<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="gruss" select="'Hallo'"/>
<xsl:template match="/"><xsl:value-of select="$gruss"/>, <xsl:value-of select="/person/name"/>!</xsl:template>
</xsl:stylesheet>`;
const parser = new DOMParser();
const xsl = parser.parseFromString(xslText, 'application/xml');
const xml = parser.parseFromString('<person><name>Anna</name></person>', 'application/xml');
const processor = new XSLTProcessor();
processor.importStylesheet(xsl);
processor.setParameter(null, 'gruss', 'Servus');
console.log(processor.transformToFragment(xml, document).textContent);
// Parameter entfernen, danach gilt wieder der Standardwert aus <xsl:param>
processor.removeParameter(null, 'gruss');
console.log(processor.transformToFragment(xml, document).textContent);
Filter in einer Tabellenansicht zurücksetzen
// processor wurde bereits mit einem Stylesheet mit <xsl:param name="kategorie"/> konfiguriert
const renderProdukte = (processor, xmlDoc, kategorie) => {
if (kategorie) {
processor.setParameter(null, 'kategorie', kategorie);
} else {
// „Alle anzeigen“: Filterparameter entfernen
processor.removeParameter(null, 'kategorie');
}
const fragment = processor.transformToFragment(xmlDoc, document);
document.querySelector('#produkte').replaceChildren(fragment);
};
document.querySelector('#filter').addEventListener('change', (event) => {
renderProdukte(processor, produktXml, event.target.value);
});
Prüfen, ob der Parameter wirklich entfernt wurde
const processor = new XSLTProcessor();
processor.setParameter(null, 'sortierung', 'preis');
console.log(processor.getParameter(null, 'sortierung'));
processor.removeParameter(null, 'sortierung');
console.log(processor.getParameter(null, 'sortierung'));
// Ein nicht vorhandener Parameter löst keinen Fehler aus
processor.removeParameter(null, 'gibtEsNicht');
// Wichtig · Fallstricke
- Namensraum muss genau passen: Du musst dieselbe Kombination aus
namespaceURIundlocalNameangeben wie beisetParameter(). Sonst wird nichts entfernt. Die Methode meldet dabei keinen Fehler. - Stylesheet bleibt unverändert: Die Methode entfernt nur den Wert, der von außen gesetzt wurde. Die
<xsl:param>-Deklaration im Stylesheet bleibt bestehen. Hat sie keinen Standardwert, ergibt der Parameter danach einen leeren String. - Nur für Transformationen danach: Bereits erzeugte Fragmente oder Dokumente ändern sich nicht. Du musst die Transformation neu ausführen.
- Kompatibilität: Wird von Chrome, Edge, Firefox und Safari unterstützt, aber nicht von Node.js. Dort brauchst du Bibliotheken wie
xslt-processorodersaxon-js. Chromium hat angekündigt, die XSLT-Unterstützung im Browser langfristig zu entfernen. Für neue Projekte solltest du deshalb Alternativen einplanen, etwa eine Transformation auf dem Server oder DOM-Manipulation per JavaScript. - Die Browser unterstützen nur XSLT 1.0.