The jQuery.isXMLDoc() utility returns true when a DOM node belongs to an XML document — or is the XML document itself. This tutorial covers syntax, official HTML vs XML examples, pairing with $.parseXML(), plugin guard patterns, and how jQuery uses the check internally.
01
Syntax
$.isXMLDoc(node)
02
Boolean
true / false
03
HTML
false
04
XML
true
05
parseXML
Common source
06
Plugins
Branch logic
Fundamentals
Introduction
Web pages you build every day live in an HTML document. But JavaScript also works with XML documents — AJAX responses, RSS/Atom feeds, configuration files, and strings parsed with jQuery.parseXML(). HTML and XML nodes are both DOM objects, yet they follow different rules for namespaces, tag names, and attributes.
jQuery provides jQuery.isXMLDoc() (also written $.isXMLDoc()) to answer: “Is this node part of an XML document?” jQuery’s selector engine and DOM helpers use that answer internally. Plugin authors use it to avoid treating XML nodes like ordinary HTML elements.
Concept
Understanding the jQuery.isXMLDoc() Method
jQuery.isXMLDoc(node) returns true when node is an XML document (nodeType 9) or any element, text, or attribute node whose owning document has a non-HTML root element.
On a typical web page, both document and document.body return false because the root element is <html>. Parsed XML from $.parseXML() returns true for the document and its elements.
💡
Beginner Tip
Think HTML page = false. Parsed XML string = true. The method checks the document root — not the node’s tag name alone.
Foundation
📝 Syntax
General form of jQuery.isXMLDoc:
jQuery
jQuery.isXMLDoc( node )
// or
$.isXMLDoc( node )
Parameters
node — a DOM node (document, element, etc.) to test.
Return value
true if node is or belongs to an XML document.
false for HTML document nodes and non-node values (in jQuery 3.7+).
Minimal workflow
jQuery
function handleNode(node) {
if ($.isXMLDoc(node)) {
return processXmlNode(node);
}
return processHtmlNode(node);
}
Cheat Sheet
⚡ Quick Reference
Node
$.isXMLDoc()
document (HTML page)
false
document.body
false
$.parseXML("<root/>")
true
XML documentElement
true
Child of parsed XML
true
null / undefined
false (jQuery 3.7+)
Plain object {}
false
Compare
📋 $.isXMLDoc vs $.type vs $.isPlainObject
Three different questions — XML context, generic type, and plain object shape.
$.isXMLDoc
XML doc?
DOM in XML context
$.type
"object"
HTML & XML nodes
$.isPlainObject
{} maps
Not for DOM nodes
$.parseXML
create XML
Pair with isXMLDoc
Hands-On
Examples Gallery
Each example uses $.isXMLDoc() with jQuery 3.7.1. Open DevTools or use the Try-it links to run them interactively.
📚 Getting Started
Official jQuery API examples — HTML document nodes return false.
Example 1 — HTML document and body Return false
The canonical cases from the jQuery documentation for a normal web page.
Your tutorial page uses an HTML document whose root is <html>. jQuery detects that root name and returns false — these nodes are not in an XML document.
📈 Practical Patterns
Parsed XML, element checks, guards, and traversal.
Example 2 — Parsed XML Document Returns true
Use $.parseXML() to create an in-memory XML document, then test it.
jQuery
var xmlDoc = $.parseXML("");
console.log($.isXMLDoc(xmlDoc)); // true
console.log(xmlDoc.documentElement.nodeName); // catalog
isXMLDoc walks to the owning document’s root element. If that root is not HTML, every node in that tree is treated as XML — including nested elements like <book>.
Example 4 — Guard Plugin Logic for HTML vs XML
Branch attribute reading — XML preserves case; HTML is often case-insensitive.
jQuery
function readTitle(node) {
if (!node || !node.getAttribute) {
return null;
}
if ($.isXMLDoc(node)) {
return node.getAttribute("title");
}
return node.getAttribute("title") || node.getAttribute("TITLE");
}
var xmlDoc = $.parseXML("");
var xmlNode = xmlDoc.documentElement;
console.log(readTitle(xmlNode)); // XML Title
console.log(readTitle(document.body)); // null or page attribute
Plugins that accept “any DOM node” must not assume HTML-only behavior. isXMLDoc is the first branch before case folding, .innerHTML, or other HTML-specific APIs.
Example 5 — Traverse Parsed XML With jQuery
Wrap XML nodes in a jQuery collection only after confirming XML context.
jQuery
var xmlDoc = $.parseXML(
""
);
var root = xmlDoc.documentElement;
if ($.isXMLDoc(root)) {
var books = $(root).find("book");
console.log("book count: " + books.length);
console.log("first id: " + books.eq(0).attr("id"));
}
jQuery can query XML nodes when you pass the XML root or elements as context. Confirming XML first prevents accidentally mixing HTML document queries with detached XML trees.
Applications
🚀 Common Use Cases
AJAX XML responses — detect XML before parsing or traversing.
parseXML pipelines — validate documents created from strings.
Plugin APIs — branch HTML vs XML DOM handling.
Attribute casing — preserve XML case-sensitive names.
Cross-format tools — utilities accepting any DOM node type.
Legacy jQuery internals — read how Sizzle distinguishes contexts.
🧠 How jQuery.isXMLDoc() Inspects the Document Root
1
Resolve owner document
Use node.ownerDocument or treat node as the document if it is one.
Document
2
Read documentElement
Get the root element — <html> for web pages, custom tags for XML.
Root
3
Compare to HTML
If the root is not an HTML document element, the node is XML.
Compare
4
✅
Return boolean
true for XML trees; false for normal HTML pages.
Important
📝 Notes
Available since jQuery 1.1.4 — still supported in jQuery 3.7.x (unlike deprecated isWindow).
Expect a DOM node — not a string, plain object, or jQuery collection.
Pair with $.parseXML() when building XML documents from strings.
HTML5 document on a web page always returns false.
SVG elements in HTML documents may behave differently from detached XML — test your target browsers.
jQuery.isXMLDoc() has been part of jQuery since jQuery 1.1.4+. It works wherever jQuery and DOM Level 2 documents are available — all modern browsers and legacy IE when paired with a supported jQuery build.
✓ jQuery 1.1.4+
jQuery jQuery.isXMLDoc()
Supported in jQuery 1.x, 2.x, and 3.x. Still present in current 3.7 releases — use with $.parseXML() for string-to-XML workflows.
100%With jQuery loaded
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
jQuery.isXMLDoc()Universal
Bottom line: Safe in any project that already includes jQuery. Validate nodes before calling — jQuery 3.7+ returns false for falsy input instead of throwing.
Wrap Up
Conclusion
The jQuery.isXMLDoc() utility tells you whether a DOM node lives in an XML document. On normal HTML pages, document and document.body return false; parsed XML from $.parseXML() returns true for the document and its elements.
Use it when plugins or utilities must branch between HTML and XML DOM rules — before assuming case-insensitive tags, innerHTML, or other HTML-only behavior.
Preserve XML attribute name casing when isXMLDoc is true
Test with both document and parsed XML in unit demos
❌ Don’t
Pass raw XML strings — parse first, then test nodes
Assume typeof node === "object" means XML
Use isPlainObject on DOM nodes
Apply HTML-only APIs like innerHTML to XML nodes blindly
Forget that this page’s document always returns false
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about jQuery.isXMLDoc()
Detect XML DOM contexts the jQuery way.
5
Core concepts
📄01
$.isXMLDoc
XML context
API
🌐02
HTML
false
Page
✅03
parseXML
true
XML
🔗04
Elements
Inherit
Tree
🛠05
Plugins
Branch
Pattern
❓ Frequently Asked Questions
jQuery.isXMLDoc(node) returns true when node is an XML document or a DOM node inside an XML document. It returns false for nodes in a normal HTML page — including document and document.body.
Both HTML and XML nodes often report as objects. isXMLDoc inspects the owning document's root element to see whether it is HTML (<html>) or an XML root — a specialized DOM check, not a generic type string.
Yes. After $.parseXML("<root/>"), both the returned XML document and its documentElement return true from $.isXMLDoc(). This is the most common way beginners encounter XML documents in jQuery.
Normal web pages use an HTML document. The root element is <html>, so jQuery correctly reports false. isXMLDoc is meant for XML contexts — RSS feeds, SVG-as-XML, AJAX XML payloads, and parsed XML strings.
Pass a real DOM node. In jQuery 3.7+, falsy input returns false safely. Older 3.4–3.5 builds could throw — always validate nodes before calling utility methods.
Use it when a plugin accepts arbitrary DOM nodes and must branch between HTML and XML handling — for example different attribute casing rules, namespace-aware traversal, or skipping HTML-only assumptions.
Did you know?
jQuery’s selector engine uses XML detection internally because XML documents follow different matching rules than HTML — tag names are case-sensitive and namespaces matter. That is why a tiny utility like isXMLDoc has existed since jQuery 1.1.4, long before most tutorials even mention parseXML.