Evaluates to the root node of the document that this element belongs to. If this element doesn’t belong to a document, but does belong to another Element, the parent’s root will be returned, until the earliest ancestor is found.
Note that this is not the same as the document element. In the following example, <a> is the document element, and the root node is the parent node of the document element. You may ask yourself why the root node is useful: consider the doctype and XML declaration, and any processing instructions before the document element… they are children of the root node, or siblings of the document element. The only time this isn’t true is when an Element is created that is not part of any Document. In this case, the ancestor that has no parent acts as the root node. d = Document.new ‘<a><c/>’ a = d ; c = a d.root_node == d # TRUE a.root_node # namely, d c.root_node # again, d
# File lib/rexml/element.rb, line 119 def root_node parent.nil? ? self : parent.root_node end