The Document Object Model (DOM) is set of conventions by which web browsers access and manipulate objects within a web page.
What is most important to us as web designers learning CSS is the way the DOM organizes elements in a web page in a mathematical tree. We need to understand this tree structure and the concepts associated with it to use advanced CSS selectors.
Here is the element tree for the inline.html document that you
worked with in the exercises from the last lesson:
We will use this example to illustrate the relationships among elements in the tree.
The root of our element tree is the html element. It is
the only element at the top level of the tree.
A path is a sequence of connected elements moving down from a given
element away from the root. Each element in a path has to be below the
previous one, so section--p--sub and
footer--a--strong are paths, but a--footer--a
is not, because the first connection, a--footer, is going up
instead of down.
With an understanding of path, it is possible to describe the following relationships among elements in our element tree:
h1, section, and the footer elements
  all have the body element as their parent.
  section element has four children, all of which are paragraphs.
  a elements that are children of the footer
  element are siblings. So are the four p elements that are
  children of the section element.
  html) to the given element is called an ancestor of
  that element. The body element is the ancestor of all the
  p elements. The footer element is the ancestor
  of two of the strong elements. The parent of a given element
  is also its ancestor, but so is its parent's parent, and so forth.
  kbd
  element is the decendent of the section element. Two of the
  strong elements are decendents of the footer
  element.
  kbd element.footer element.code element.html element at the root (top) of the element tree.head element has the required meta
    and title elements as children to be a valid html 5 document,
    and a style child element for CSS.body element has a header element, two
    section elements, and a footer element, in that
    order, as children.header element has an h1 element followed
    by a nav element as children.nav element has five a elements as
    children.section elements have the same children: an
    h2 element followed by an h3 element followed by
    an ol element followed by another h3 element and
    then another ol element.ol elements have four li elements
    as children.footer element has two a elements as
    children, and each of the a elements has a single
    strong element as a child.webskills.html with all the
  elements from the element tree you drew in the previous exercise.
  (Note: You should work from the diagram you created in the previous
  exercise. Do not include any data or meta-data).<!DOCTYPE html>