Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the root node in XML?

Tags:

xml

xslt

I was reading an ebook and it has following xml code.

<?xml version="1.0"?>
<?xml-stylesheet href="sonnet.xsl" type="text/xsl"?>
<?cocoon-process type="xslt"?>
<!DOCTYPE sonnet [
  <!ELEMENT sonnet (auth:author, title, lines)>
  <!ATTLIST sonnet public-domain CDATA "yes"
      type (Shakespearean | Petrarchan) "Shakespearean">
  <!ELEMENT auth:author (last-name,first-name,nationality,
      year-of-birth?,year-of-death?)>
  <!ELEMENT last-name (#PCDATA)>
  <!ELEMENT first-name (#PCDATA)>
  <!ELEMENT nationality (#PCDATA)>
  <!ELEMENT year-of-birth (#PCDATA)>
  <!ELEMENT year-of-death (#PCDATA)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT lines (line,line,line,line,
      line,line,line,line,line,line,line,
      line,line,line)>
  <!ELEMENT line (#PCDATA)>
]>
<!-- Default sonnet type is Shakespearean, the other allowable -->
<!-- type is "Petrarchan." -->
<sonnet type="Shakespearean">
  <auth:author xmlns:auth="http://www.authors.com/">
    <last-name>Shakespeare</last-name>
    <first-name>William</first-name>
    <nationality>British</nationality>
    <year-of-birth>1564</year-of-birth>
    <year-of-death>1616</year-of-death>
  </auth:author>
  <!-- Is there an official title for this sonnet? They're
  sometimes named after the first line. -->
  <title>Sonnet 130</title>
  <lines>
    <line>My mistress' eyes are nothing like the sun,</line>
    <line>Coral is far more red than her lips red.</line>
    <line>If snow be white, why then her breasts are dun,</line>
    <line>If hairs be wires, black wires grow on her head.</line>
    <line>I have seen roses damasked, red and white,</line>
    <line>But no such roses see I in her cheeks.</line>
    <line>And in some perfumes is there more delight</line>
    <line>Than in the breath that from my mistress reeks.</line>
    <line>I love to hear her speak, yet well I know</line>
    <line>That music hath a far more pleasing sound.</line>
    <line>I grant I never saw a goddess go,</line>
    <line>My mistress when she walks, treads on the ground.</line>
    <line>And yet, by Heaven, I think my love as rare</line>
    <line>As any she belied with false compare.</line>
  </lines>
</sonnet>
<!-- The title of Sting's 1987 album "Nothing like the sun" is -->
<!-- from line 1 of this sonnet.

problem is when I continue the rest of the reading I thought I have misunderstand what root element is. According to my knoweledge root node is <sonnet> node.

But in the book I find next this

Unlike other nodes, the root node has no parent. It always has at least one child, the document element. The root node also contains comments or processing instructions that are outside the document element. In our sample document, the two processing instructions named xmlstylesheet and cocoon-process are both children of the root node, as are the comment that appears before the tag and the comment that appears after the tag.

accordning to that whole document is considered as root. If so what is ? It is clear that processing instructions and comments are not child of node.

do I minunderstand?

UPdate

<?xml version="1.0"?> 
<Food> 
  <Cateogry> Vegetable</Cateogry>
  <Cateogry> Fruits</Cateogry>
  <Cateogry> other</Cateogry>
</Food>

what is the root element here? isnt it food?

like image 657
newday Avatar asked Feb 06 '13 10:02

newday


People also ask

How many root nodes are there in XML?

While a properly formed XML file can only have a single root element, an XSD or DTD file can contain multiple roots.

What is the root of an XML tree?

XML documents must contain a root element (one that is the parent of all other elements). All elements in an XML document can contain sub elements, text and attributes. The tree represented by an XML document starts at the root element and branches to the lowest level of elements.

What are nodes called in XML?

In the XML DOM, each node is an object. Objects have methods and properties, that can be accessed and manipulated by JavaScript.

What is root element for XML schema?

The <schema> element is the root element of every XML Schema. The <schema> element may contain some attributes, but only the first attribute is mandatory.


1 Answers

The root node has no visual manifestation or textual representation. It is a conceptual node that contains everything else in the document. In the example of your document, it would be like this:

/ (root node)
   |-- processing-instruction() xml-stylesheet
   |-- processing-instruction() cocoon-process 
   |-- comment()
   |-- comment()
   |-- sonnet   (document element)
        |-- auth:author
             |-- last-name
             |-- ....
        |-- comment()
        |-- title
        |-- lines
             |-- line
             |-- line
             |-- ....
   |-- comment()
   |-- comment()

As shown here, the root node in your example has 2 processing instructions, 4 comments, and 1 element as children.

This single child element (sonnet) is what's called the "document element". It's also sometimes called the "root element", but many people like to avoid this term to minimize confusion with the "root node", since they are two completely separate things.

like image 66
JLRishe Avatar answered Oct 02 '22 05:10

JLRishe