Signatur
Beschreibung
Die Eigenschaft Document.xmlVersion gibt als Zeichenkette die XML-Version zurück, die in der XML-Deklaration am Anfang eines XML-Dokuments steht. Bei <?xml version="1.1" encoding="UTF-8"?> ist der Wert "1.1". Fehlt die Deklaration, ist laut der alten Spezifikation "1.0" der Standardwert.
Die Eigenschaft stammt aus DOM Level 3 Core. Sie gilt nur für XML-Dokumente, also etwa für Dokumente, die mit DOMParser und dem Typ application/xml erzeugt oder über XMLHttpRequest.responseXML geladen wurden. Bei HTML-Dokumenten war der Wert je nach Browser null. In älteren Implementierungen konnte man die Eigenschaft auch beschreiben. Dann wurde eine NOT_SUPPORTED_ERR-Ausnahme ausgelöst, wenn die Version nicht unterstützt war.
Seit DOM4 bzw. dem WHATWG DOM Living Standard ist xmlVersion nicht mehr Teil des Standards. Gecko hat die Eigenschaft entfernt, andere Engines nutzen sie nicht mehr aktiv. Verwende sie in neuem Code nicht. Wenn du die XML-Version wirklich brauchst, lies sie direkt aus dem Quelltext der XML-Deklaration aus (siehe Beispiele).
Rückgabewert
"1.0", "1.1"). Ohne Deklaration ist der Wert "1.0". Bei HTML-Dokumenten kann der Wert null sein, in Browsern ohne Unterstützung ist er undefined.Beispiele
Unterstützung prüfen und Wert auslesen
const xml = '<?xml version="1.1" encoding="UTF-8"?><root/>';
const doc = new DOMParser().parseFromString(xml, 'application/xml');
if ('xmlVersion' in doc) {
console.log('XML-Version:', doc.xmlVersion);
} else {
console.log('Document.xmlVersion wird nicht unterstützt');
}
Standardersatz: Version aus der XML-Deklaration lesen
const getXmlVersion = (source) => {
// Die XML-Deklaration muss ganz am Anfang des Dokuments stehen
const match = /^\s*<\?xml\s+version\s*=\s*(["'])([^"']+)\1/.exec(source);
return match ? match[2] : '1.0'; // ohne Deklaration gilt 1.0
};
console.log(getXmlVersion('<?xml version="1.1"?><feed/>'));
console.log(getXmlVersion('<feed/>'));
Version einer per fetch geladenen XML-Datei ermitteln
const loadXml = async (url) => {
const response = await fetch(url);
const text = await response.text();
const doc = new DOMParser().parseFromString(text, 'application/xml');
// Zuerst die veraltete Eigenschaft versuchen, dann den Quelltext auswerten
const version = doc.xmlVersion
?? /^\s*<\?xml\s+version\s*=\s*["']([^"']+)/.exec(text)?.[1]
?? '1.0';
return { doc, version };
};
const { version } = await loadXml('/data/katalog.xml');
console.log(`katalog.xml nutzt XML ${version}`);
// Wichtig · Fallstricke
- Veraltet: Die Eigenschaft wurde aus DOM4 bzw. dem WHATWG DOM Standard entfernt. Firefox unterstützt sie seit Version 10 nicht mehr, dort ist der Wert
undefined. Auch in anderen Browsern solltest du dich nicht darauf verlassen. - Die Eigenschaft ist nur für XML-Dokumente gedacht. Bei HTML-Dokumenten wie
window.documenteiner normalen Webseite ist der Wertnulloderundefined. - Browser-Parser verarbeiten XML 1.1 in der Regel wie XML 1.0. Eine gemeldete Version
"1.1"heißt also nicht, dass Besonderheiten von XML 1.1 unterstützt werden. - Die zugehörigen Eigenschaften
xmlEncodingundxmlStandalonesind ebenfalls veraltet. Für die Zeichenkodierung gibt esDocument.characterSet. - Der Schreibzugriff (Zuweisung einer neuen Version) hatte schon früher kaum Wirkung und wird von modernen Engines ignoriert.