Signatur
Beschreibung
Die Methode reset() setzt einen XSLTProcessor in den Zustand zurück, den er direkt nach new XSLTProcessor() hatte. Dabei werden alle per setParameter() gesetzten Parameter gelöscht und auch das per importStylesheet() geladene Stylesheet entfernt.
Das ist praktisch, wenn Sie eine Prozessor-Instanz nacheinander für verschiedene Transformationen verwenden möchten, z. B. wenn Nutzer zwischen mehreren Darstellungen (Tabelle, Liste, Export) umschalten. Statt jedes Mal ein neues Objekt anzulegen, rufen Sie reset() auf und importieren danach das nächste Stylesheet.
Bitte beachten Sie den Unterschied zu clearParameters(): Diese Methode entfernt nur die Parameter, das Stylesheet bleibt erhalten. reset() ist also die „harte“ Variante. Nach einem reset() müssen Sie vor der nächsten Transformation unbedingt wieder importStylesheet() aufrufen.
Rückgabewert
undefined).Beispiele
Prozessor für mehrere Stylesheets wiederverwenden
const parser = new DOMParser();
const xml = parser.parseFromString(
'<users><user>Anna</user><user>Ben</user></users>',
'application/xml'
);
const xslListe = parser.parseFromString(`
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ul><xsl:for-each select="users/user"><li><xsl:value-of select="."/></li></xsl:for-each></ul>
</xsl:template>
</xsl:stylesheet>`, 'application/xml');
const xslAnzahl = parser.parseFromString(`
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<p>Anzahl: <xsl:value-of select="count(users/user)"/></p>
</xsl:template>
</xsl:stylesheet>`, 'application/xml');
const processor = new XSLTProcessor();
processor.importStylesheet(xslListe);
const liste = processor.transformToFragment(xml, document);
document.body.append(liste);
// Stylesheet und Parameter entfernen, dann neues Stylesheet laden
processor.reset();
processor.importStylesheet(xslAnzahl);
const anzahl = processor.transformToFragment(xml, document);
document.body.append(anzahl);
console.log(document.body.textContent.trim());
reset() entfernt auch Parameter
const processor = new XSLTProcessor();
processor.setParameter(null, 'titel', 'Bericht');
console.log(processor.getParameter(null, 'titel'));
processor.reset();
console.log(processor.getParameter(null, 'titel'));
Unterschied zu clearParameters()
const xsl = new DOMParser().parseFromString(`
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="gruss" select="'Hallo'"/>
<xsl:template match="/"><p><xsl:value-of select="$gruss"/></p></xsl:template>
</xsl:stylesheet>`, 'application/xml');
const xml = new DOMParser().parseFromString('<root/>', 'application/xml');
const processor = new XSLTProcessor();
processor.importStylesheet(xsl);
processor.setParameter(null, 'gruss', 'Servus');
// Nur Parameter weg – Stylesheet bleibt, Standardwert greift
processor.clearParameters();
console.log(processor.transformToFragment(xml, document).textContent);
// Alles weg – ohne neues importStylesheet() kein sinnvolles Ergebnis
processor.reset();
console.log(processor.transformToFragment(xml, document));
// Wichtig · Fallstricke
- Stylesheet neu laden: Nach
reset()hat der Prozessor kein Stylesheet mehr. Rufen Sie vortransformToDocument()odertransformToFragment()wiederimportStylesheet()auf. Andernfalls liefern die Browser unterschiedliche Ergebnisse, z. B.null, ein leeres Ergebnis oder eine Ausnahme. - Nur Parameter löschen? Dann ist
clearParameters()die richtige Wahl, dennreset()entfernt zusätzlich das Stylesheet. - Zukunft von XSLT im Browser: Die Browserhersteller (vor allem Chrome) haben angekündigt, die XSLT-Unterstützung im Browser abzuschaffen. Für neue Projekte sollten Sie Transformationen auf dem Server erledigen oder eine JavaScript-Bibliothek verwenden.
- Umgebung:
XSLTProcessorgibt es nur im Browser, nicht in Node.js und nicht in Web Workern. - Sicherheit: Wenn Sie das Ergebnis einer Transformation ins DOM einfügen, prüfen Sie, woher XML und Stylesheet stammen. Stylesheets aus unsicheren Quellen können HTML erzeugen, das Skripte ausführt (XSS).