Signatur
Beschreibung
Die Eigenschaft target eines ProcessingInstruction-Knotens liefert den Namen der Anwendung, für die die Verarbeitungsanweisung gedacht ist. Das ist der erste Bezeichner nach <?. Bei <?xml-stylesheet href="style.css" type="text/css"?> ist das Ziel also "xml-stylesheet". Der Rest der Anweisung steht in data und hat mit target nichts zu tun.
Verarbeitungsanweisungen kommen fast nur in XML-Dokumenten vor, etwa in SVG-, XHTML- oder RSS-Dateien und in Daten, die Sie mit DOMParser als application/xml einlesen. Mit target finden Sie heraus, um welche Art von Anweisung es sich handelt. Typische Fälle sind das Aufspüren von Stylesheet-Verknüpfungen oder das Auswerten eigener, anwendungsspezifischer Anweisungen.
Der Wert ist immer derselbe wie bei Node.nodeName für diesen Knoten. Er wird beim Erzeugen festgelegt, entweder vom Parser oder mit document.createProcessingInstruction(target, data), und lässt sich danach nicht mehr ändern.
Rückgabewert
"xml-stylesheet". Entspricht nodeName des Knotens.Beispiele
Ziel einer geparsten Verarbeitungsanweisung auslesen
const xml = `<?xml version="1.0"?>
<?xml-stylesheet href="style.css" type="text/css"?>
<root/>`;
const doc = new DOMParser().parseFromString(xml, 'application/xml');
const pi = doc.firstChild; // Die XML-Deklaration ist kein Knoten
console.log(pi.nodeType === Node.PROCESSING_INSTRUCTION_NODE);
console.log(pi.target);
console.log(pi.data);
Verarbeitungsanweisung erzeugen und target prüfen
const doc = document.implementation.createDocument(null, 'config', null);
const pi = doc.createProcessingInstruction('my-app', 'mode="debug"');
doc.insertBefore(pi, doc.documentElement);
console.log(pi.target);
console.log(pi.target === pi.nodeName);
console.log(new XMLSerializer().serializeToString(doc));
Alle Stylesheet-Anweisungen eines XML-Dokuments finden
const findStylesheetPIs = (doc) => {
const walker = doc.createTreeWalker(doc, NodeFilter.SHOW_PROCESSING_INSTRUCTION);
const result = [];
while (walker.nextNode()) {
if (walker.currentNode.target === 'xml-stylesheet') {
result.push(walker.currentNode.data);
}
}
return result;
};
const xml = '<?xml-stylesheet href="a.css"?><?other x?><?xml-stylesheet href="b.xsl" type="text/xsl"?><feed/>';
const doc = new DOMParser().parseFromString(xml, 'application/xml');
console.log(findStylesheetPIs(doc));
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung an
targetwird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einenTypeErroraus. Wenn Sie ein anderes Ziel brauchen, erzeugen Sie einen neuen Knoten und tauschen ihn mitreplaceWith()aus. - XML-Deklaration:
<?xml version="1.0"?>ist keine Verarbeitungsanweisung und erscheint deshalb nicht als Knoten im DOM. Wenn Sietarget === 'xml'abfragen, finden Sie sie also nicht. - HTML-Dokumente: Der HTML-Parser macht aus
<?…?>einen Kommentar (Comment) statt einesProcessingInstruction-Knotens. Verarbeitungsanweisungen gibt es daher praktisch nur in XML-Dokumenten. - Erzeugen:
createProcessingInstruction()wirft einenInvalidCharacterError, wenn das Ziel kein gültiger XML-Name ist oder die Daten?>enthalten. Seit einer Aktualisierung des Standards ist der Aufruf auch in HTML-Dokumenten erlaubt. - Die Eigenschaft wird von allen Browsern unterstützt, ebenso von Node.js-DOM-Implementierungen wie jsdom.