<?xml version="1.0" encoding="utf-8"?>
<spec xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax" w3c-doctype="wd">

   <header>
  
      <title>XQuery 1.0 and XPath 2.0 Data Model</title>
  
      <version/>
  
      <w3c-designation>WD-xpath-datamodel-20050211</w3c-designation>
  
      <w3c-doctype>W3C Working Draft</w3c-doctype>
  
      <pubdate>
    
         <day>11</day>
    
         <month>February</month>
    
         <year>2005</year>
  
      </pubdate>
  
      <publoc>
     
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2005/WD-xpath-datamodel-20050211/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2005/WD-xpath-datamodel-20050211/</loc>
  
      </publoc>
  
      <altlocs>
    
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2005/WD-xpath-datamodel-20050211/data-model.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML</loc>
  
      </altlocs>
  
      <latestloc>
    
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xpath-datamodel/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/xpath-datamodel/</loc>
  
      </latestloc>
  
      <prevlocs>
    
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2004/WD-xpath-datamodel-20041029/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2004/WD-xpath-datamodel-20041029/</loc>
    
         <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/2004/WD-xpath-datamodel-20040723/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2004/WD-xpath-datamodel-20040723/</loc>
  
      </prevlocs>
  
      <authlist>
    
         <author>
      
            <name>Mary Fernández (XML Query WG)</name>
      
            <affiliation>AT&amp;T Labs</affiliation>
      
            <email xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:mff@research.att.com" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">mff@research.att.com</email>
    
         </author>
    
         <author>
      
            <name>Ashok Malhotra (XML Query and XSL WGs)</name>
      
            <affiliation>Oracle Corporation</affiliation>
      
            <email xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:ashok.malhotra@alum.mit.edu" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">ashok.malhotra@alum.mit.edu</email>
    
         </author>
    
         <author>
      
            <name>Jonathan Marsh (XSL WG)</name>
      
            <affiliation>Microsoft</affiliation>
      
            <email xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:jmarsh@microsoft.com" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">jmarsh@microsoft.com</email>
    
         </author>
    
         <author>
      
            <name>Marton Nagy (XML Query WG)</name>
      
            <affiliation>Science Applications International Corporation (SAIC)</affiliation>
      
            <email xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:marton.nagy@saic.com" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">marton.nagy@saic.com</email>
    
         </author>
    
         <author>
      
            <name>Norman Walsh (XSL WG)</name>
      
            <affiliation>Sun Microsystems</affiliation>
      
            <email xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:Norman.Walsh@Sun.COM" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">Norman.Walsh@Sun.COM</email>
    
         </author>
  
      </authlist>


      <status>

         <p>
            <emph>This section describes the status of this document at the time
of its publication. Other documents may supersede this document. A
list of current W3C publications and the latest revision of this
technical report can be found in the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C technical reports index</loc> at
http://www.w3.org/TR/.</emph>
         </p>

<!--
<p>This is an internal Working Draft for review by members of the
XSL and XML Query Working Groups and
other interested parties.
Publication as a Working Draft does not imply endorsement by the W3C
Membership. This is a draft document and may be updated, replaced or
obsoleted by other documents at any time. It is inappropriate to cite
this document as other than work in progress.</p>
-->


         <p>This is a Public Working Draft for review by W3C Members and
other interested parties.
Publication as a Working Draft does not imply endorsement by the W3C
Membership. This is a draft document and may be updated, replaced or
obsoleted by other documents at any time. It is inappropriate to cite
this document as other than work in progress.</p>



         <p>The XQuery 1.0 and XPath 2.0 Data Model has been defined jointly by
the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/XML/Query" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML Query Working Group</loc>
and the
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Style/XSL/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XSL Working Group</loc>
(both part of the
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/XML/Activity.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML Activity</loc>).
</p>


         <p>This working draft adds support for <att>xml:id</att> and addresses
several internal review comments from WG members.  There are a number of
internal review comments still to be addressed and the editor will
continue to work on the draft.</p>


         <p>This document reflects decisions taken up to and including the
face-to-face meeting in Redwood Shores, CA during the week of November 8,
2004. These decisions are recorded in the Last Call
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/02/data-model-issues.html" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">issues list</loc>
(http://www.w3.org/2005/02/data-model-issues.html).
However, some of these decisions may not yet have been made in
this document.
</p>


         <p>Public comments on this document and its open issues are invited.
Comments should be sent to the W3C mailing list
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="mailto:public-qt-comments@w3.org" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-qt-comments@w3.org</loc>.
(archived at
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://lists.w3.org/Archives/Public/public-qt-comments/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://lists.w3.org/Archives/Public/public-qt-comments/</loc>) with “[DM]”
at the beginning of the subject field.</p>


         <p>The patent policy for this document is the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">5 February
2004 W3C Patent Policy</loc>. 
Patent disclosures relevant
to this specification may be found on the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2002/08/xmlquery-IPR-statements" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML Query
Working Group's patent disclosure page</loc> and the <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Style/XSL/Disclosures" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XSL Working Group's
patent disclosure page</loc>. An individual who has actual knowledge of
a patent which the individual believes contains Essential Claim(s) with
respect to this specification should disclose the information in
accordance with <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">section
6 of the W3C Patent Policy</loc>.
</p>

      </status>


      <abstract>

         <p>This document defines the W3C XQuery 1.0 and XPath 2.0 Data Model,
which is the data model of <bibref ref="xpath20"/>,
<bibref ref="xslt20"/>, and <bibref ref="xquery"/>, and any other
specifications that reference it. This data model is based on the
<bibref ref="xpath"/> data model and earlier work on an
<bibref ref="XQDM00"/>. This document is the result of joint
work by the <bibref ref="XSLWG"/> and the <bibref ref="XQWG"/>.</p>

      </abstract>


      <langusage>

         <language id="en">English</language>

      </langusage>


      <revisiondesc>

         <p>See the CVS changelog.</p>

      </revisiondesc>

   </header>


   <body>


      <div1 id="intro">

         <head>Introduction</head>


         <p>This document defines the XQuery 1.0 and XPath 2.0 Data Model,
which is the data model of <bibref ref="xpath20"/>, <bibref ref="xslt20"/> and
<bibref ref="xquery"/>
         </p>


         <p>The XQuery 1.0 and XPath 2.0 Data Model (henceforth "data model")
serves two purposes.
First, it defines the information contained in the input to an
XSLT or XQuery processor.  Second, it defines all permissible values of
expressions in the XSLT, XQuery, and XPath languages.  A
language is <emph>closed</emph> with respect to a data model if the value
of every expression in the language is guaranteed to be in the data model.
XSLT 2.0, XQuery 1.0, and XPath 2.0 are all closed with respect to
the data model.</p>


         <p>The data model is based on the <bibref ref="xml-infoset"/>
(henceforth "Infoset"), but it requires the following new features to
meet the <bibref ref="xpath20req"/> and <bibref ref="xquery-requirements"/>:</p>


         <ulist>
  
            <item>
    
               <p>Support for XML Schema types. The XML Schema recommendations
    define features, such as structures (<bibref ref="xmlschema-1"/>)
    and simple data types (<bibref ref="xmlschema-2"/>), that extend
    the XML Information Set with precise type information.</p>
  
            </item>
  
            <item>
    
               <p>Representation of collections of documents and of
    complex values. (<bibref ref="xquery-requirements"/>)</p>
  
            </item>
  
            <item>
    
               <p>Support for typed atomic values.</p>
  
            </item>
  
            <item>
    
               <p>Support for ordered, heterogeneous sequences.</p>
  
            </item>

         </ulist>


         <p>As with the Infoset, the XQuery 1.0 and XPath 2.0 Data Model
specifies what information in the documents is accessible, but it does
not specify the programming-language interfaces or bindings used to
represent or access the data.</p>


         <p>The data model can represent various
values including not only the input and the output of a stylesheet or query, but all
values of expressions used during the intermediate calculations.
Examples include the input document or document repository (represented
as a Document Node or a sequence of Document Nodes), the result of a
path expression (represented as a sequence of nodes), the result of an
arithmetic or a logical expression (represented as an atomic value),
a sequence expression resulting in a sequence of items, etc.
</p>


         <p>This document provides a precise definition of the properties of nodes
in the XQuery 1.0 and XPath 2.0 Data Model, how they are accessed, and how
they relate to values in the Infoset and PSVI.</p>


      </div1>


      <div1 id="concepts">

         <head>Concepts</head>


         <p>This section outlines a number of general concepts that apply throughout
this specification.</p>


         <div2 id="terminology">

            <head>Terminology</head>


            <p>For a full glossary of terms, see <specref ref="glossary"/>.</p>


            <p>In this specification the words <rfc2119>must</rfc2119>,
<rfc2119>must not</rfc2119>,
<rfc2119>should</rfc2119>,
<rfc2119>should not</rfc2119>,
<rfc2119>may</rfc2119> and
<rfc2119>recommended</rfc2119>
are to be interpreted as described in <bibref ref="RFC2119"/>.</p>


            <p>This specification distinguishes between the data model as a general
concept and specific items (documents, elements, atomic values, etc.)
that are concrete examples of the data model by identifying all concrete
examples as <termref def="dt-instance">instances of the data model</termref>.
</p>


            <p>
               <termdef id="dt-instance" term="instance of the data model">Every
<term>instance of the data model</term> is a
<termref def="dt-sequence">sequence</termref>.</termdef>.
</p>


            <p>
               <termdef id="dt-sequence" term="sequence">A <term>sequence</term>
is an ordered collection of zero or more <termref def="dt-item">items</termref>.</termdef> A sequence cannot be a member
of a sequence. A single item appearing on its own is modeled as a
sequence containing one item. Sequences are defined in <specref ref="sequences"/>.</p>


            <p>
               <termdef id="dt-item" term="item">An <term>item</term>
is either a
<termref def="dt-node">node</termref> or an
<termref def="dt-atomic-value">atomic value</termref>
               </termdef>,
</p>


            <p>Every node is one of the seven kinds of nodes defined in <specref ref="Node"/>. Nodes form a tree that consists of a root node plus
all the nodes that are reachable directly or indirectly from the root node
via the <function>children</function>,
<function>attributes</function>, and <function>namespaces</function>
accessors. Every node belongs to exactly one tree, and every tree has
exactly one root node.</p>


            <p>
               <termdef id="dt-document" term="document">A
tree whose root node is a Document Node is referred to as a
<term>document</term>.</termdef>
            </p>


            <p>
               <termdef id="dt-fragment" term="fragment">A tree whose root node is not a Document Node is
referred to as a <term>fragment</term>.</termdef>
            </p>


            <p>
               <termdef id="dt-atomic-value" term="atomic value">An
<term>atomic value</term> is a value in the value space
of an <termref def="dt-atomic-type">atomic type</termref> and is labeled with
the name of that atomic type.</termdef>
            </p>


            <p>
               <termdef id="dt-atomic-type" term="atomic type">An <term>atomic type</term>
is a <termref def="dt-primitive-simple-type">primitive simple type</termref>
or a type derived by restriction from
another atomic type.</termdef>
(Types derived by list or union are not atomic.)
</p>


            <p>
               <termdef id="dt-primitive-simple-type" term="primitive simple type">There are 24
<term>primitive simple types</term>: the 19 defined in
<xspecref spec="XS2" ref="built-in-primitive-datatypes"/>
of <bibref ref="xmlschema-2"/> and
<code>xdt:anyAtomicType</code>, <code>xdt:untyped</code>,
<code>xdt:untypedAtomic</code>, <code>xdt:dayTimeDuration</code>,
and <code>xdt:yearMonthDuration</code>
               </termdef>, defined in <specref ref="types"/>.</p>


            <p>A type is represented in the data model by an
<termref def="dt-expanded-qname">expanded-QName</termref>.
</p>


            <p>
               <termdef id="dt-expanded-qname" term="expanded-QName">An <term>expanded-QName</term>
is a pair of values consisting of a possibly empty namespace URI and
a local name. They belong to the value space of the XML Schema type
<code>xs:QName</code>. References to <code>xs:QName</code> in this document
always
mean the value space, i.e. a namespace URI, local name pair (and not
the lexical space referring to constructs of the form
“<code>prefix:local-name</code>”).</termdef>

            </p>


            <p>
               <termdef id="dt-implementation-defined" term="implementation defined">
                  <term>Implementation-defined</term> indicates an aspect that
may differ between implementations, but must be specified by the
implementor for each particular implementation.</termdef>
            </p>


            <p>
               <termdef id="dt-implementation-dependent" term="implementation dependent">
                  <term>Implementation-dependent</term> indicates an aspect
that may differ between implementations, is not specified by this or
any W3C specification, and is not required to be specified by the
implementor for any particular implementation.</termdef>
            </p>


            <p>In all cases where this specification leaves the behavior
implementation-defined or implementation-dependent, the implementation
has the option of providing mechanisms that allow the user to
influence the behavior.</p>


         </div2>


         <div2 id="notation">

            <head>Notation</head>


            <p>In addition to prose, this specification defines a set of accessor
functions to explain the data model. The accessors are shown with the
prefix <emph>dm:</emph>. This prefix is always shown in italics to
emphasize that these functions are abstract; they exist to explain the
interface between the data model and specifications that rely on the
data model: they are not accessible directly from the host
language.</p>


            <p>Several prefixes are used throughout this document for notational
convenience. The following bindings are assumed.</p>


            <olist>

               <item>
                  <p>
                     <code>xs:</code> bound to
<code>http://www.w3.org/2001/XMLSchema</code>

                  </p>
               </item>

               <item>
                  <p>
                     <code>xsi:</code> bound to
<code>http://www.w3.org/2001/XMLSchema-instance</code>

                  </p>
               </item>

               <item>
                  <p>
                     <code>xdt:</code> bound to
<code>http://www.w3.org/2005/02/xpath-datatypes</code>

                  </p>
               </item>

               <item>
                  <p>
                     <code>fn:</code> bound to
<code>http://www.w3.org/2005/02/xpath-functions</code>

                  </p>
               </item>

            </olist>


            <p>In practice, any prefix that is bound to the appropriate URI may be used.</p>


            <p>The signature of accessor functions is shown using the same style as
<bibref ref="xpath-functions"/>, described in
<xspecref spec="FO" ref="func-signatures"/>.</p>


            <p>This document relies on the <bibref ref="xml-infoset"/> and PSVI. Information items
and properties are indicated by the styles <emph role="info-item">information
item</emph> and <emph role="infoset-property">infoset property</emph>, respectively.</p>


            <p>Some aspects of type assignment rely on the ability to access properties of
the schema components. Such properties are indicated by the style
{component property}. Note that this does not mean a lightweight schema processor
cannot be used, it only means that the application must have some mechanism to
access the necessary properties.</p>


         </div2>


         <div2 id="node-identity">

            <head>Node Identity</head>


            <p>Each node has a unique identity. Every <termref def="dt-node">node</termref> in an instance of the data model is unique: identical to
itself, and not identical to any other node. (<termref def="dt-atomic-value">Atomic values</termref> do not have identity;
every instance of the value “5” as an integer is identical to every
other instance of the value “5” as an integer.)
</p>


            <note>

               <p>The concept of node identity should not be confused with the
concept of a unique ID, which is a unique name assigned to an element
by the author to represent references using ID/IDREF correlation.</p>

            </note>

         </div2>


         <div2 id="document-order">

            <head>Document Order</head>


            <p>
               <termdef id="dt-document-order" term="document order">A
<term>document order</term> is defined among all the nodes
accessible during a given query or transformation. Document order is a
total ordering, although the relative order of some nodes is
implementation-dependent. Informally, document order is the order in
which nodes appear in the XML serialization of a document.</termdef>

               <termdef id="dt-stable" term="stable">Document order is
<term>stable</term>, which means that the relative order of two
nodes will not change during the processing of a given query or
transformation, even if this order is implementation-dependent.</termdef>
            </p>


            <p>Within a tree, document order satisfies the following constraints:</p>


            <olist>

               <item>

                  <p>The root node is the first node.
</p>

               </item>


               <item>

                  <p>Every node occurs before all of its children and descendants.</p>

               </item>


               <item>

                  <p>Namespace Nodes immediately follow the Element Node with which
they are associated. The relative order of Namespace Nodes is
stable but implementation-dependent.</p>

               </item>


               <item>

                  <p>Attribute Nodes immediately follow the Namespace Nodes of the
element with which they are associated. If there are no
Namespace Nodes associated with a given element, then the
Attribute Nodes associated with that element immediately
follow the element. The relative order of Attribute Nodes is
stable but implementation-dependent.</p>

               </item>


               <item>

                  <p>The relative order of siblings is the order in which they occur in
the <emph role="dm-node-property">children</emph> property of their parent node.</p>

               </item>


               <item>

                  <p>Children and descendants occur before following siblings.</p>

               </item>

            </olist>


            <p>The relative order of nodes in distinct trees is stable but
implementation-dependent, subject to the following constraint: If
any node in a given tree, <code>T1</code>, occurs before any node in a different
tree, <code>T2</code>, then all nodes in <code>T1</code> are before all nodes in
<code>T2</code>.</p>

         </div2>


         <div2 id="sequences">

            <head>Sequences</head>


            <p>An important characteristic of the data model is that there is no
distinction between an item (a node or an atomic value) and a
singleton sequence containing that item. An item is
equivalent to a singleton sequence containing that item and vice
versa.</p>


            <p>A sequence may contain nodes, atomic values, or any mixture of
nodes and atomic values. When a node is added to a sequence its
identity remains the same. Consequently a node may occur in more than
one sequence and a sequence may contain duplicate items.</p>


            <p>Sequences never contain other sequences; if sequences are combined,
the result is always a “flattened” sequence. In other words, appending
“(d e)” to “(a b c)” produces a sequence of length 5: “(a b c d e)”.
It <emph>does not</emph> produce a sequence of length 4: “(a b c (d e))”,
such a nested sequence never occurs.</p>


            <note>

               <p>Sequences replace node-sets from XPath 1.0. In XPath 1.0, node-sets
do not contain duplicates. In generalizing node-sets to sequences in
XPath 2.0, duplicate removal is provided by functions on node
sequences.</p>

            </note>

         </div2>


         <div2 id="types">

            <head>Types</head>


            <p>The data model supports strongly typed languages such as
<bibref ref="xpath20"/> and <bibref ref="xquery"/>
that have a type system based on <bibref ref="xmlschema-1"/>. The 
type system is formally defined in <bibref ref="xquery-semantics"/>.</p>


            <p>Every <termref def="dt-item">item</termref> in the data model has both
a value and a type.
In addition to nodes, the data model can represent atomic values like
the number 5 or the string “Hello World.” For each of these
atomic values, the data model contains both the value of the item
(such as 5 or “Hello World”) and its type name (such as
<code>xs:integer</code> or <code>xs:string</code>).</p>


            <div3 id="types-representation">

               <head>Representation of Types</head>


               <p>The data model uses
<termref def="dt-expanded-qname">expanded-QNames</termref> to
represent the names of schema types, which include the built-in
types defined by <bibref ref="xmlschema-2"/>, five additional types
defined by this specification, and may include other user- or
implementation-defined types.</p>


               <p>For XML Schema types, the namespace name of the expanded-QName 
is the <emph role="infoset-property">target namespace</emph> property
of the type definition, and its local name is the <emph role="infoset-property">name</emph> property of the type
definition.</p>


               <p>The data model relies on the fact that an expanded-QName uniquely
identifies every named type. (Although it is possible for different
schemas to define different types with the same expanded-QName, at
most one of them can be used in any given validation episode.)
</p>


               <p>For anonymous types, the processor <rfc2119>must</rfc2119> construct an
<termref def="dt-anonymous-type-name">anonymous type name</termref>
that is distinct from the name of every named type and the name of
every other anonymous type.
<termdef id="dt-anonymous-type-name" term="anonymous type name">An
<term>anonymous type name</term> is an implementation dependent,
unique type name provided by the processor for every anonymous
type declared in the schemas available in the static context.</termdef>
Anonymous type names
<rfc2119>must</rfc2119>
be globally unique across all anonymous types that are accessible to
the processor. In the formalism of this specification,
the anonymous type names are assumed to be <code>xs:QNames</code>, but in practice
implementations are not required to use <code>xs:QNames</code> to
represent the implementation-dependent names of anonymous types.</p>


               <p>The scope over which the names of anonymous types must be
meaningful and distinct is depends on the processing context.
It is the responsibility of the host language to define the
size and scope of the processing context.</p>


               <p>The data model associates schema type information with Element Nodes,
Attribute Nodes and atomic values. The item is guaranteed to be an
instance of that kind of item with the given schema type.
</p>


               <p>The data model does not represent element or attribute declaration
schema components, but it supports various type-related operations.
The semantics of other operations, for example, checking if a particular
instance of an Element Node has a given schema type is defined in
<bibref ref="xquery-semantics"/>.
</p>

            </div3>


            <div3 id="types-predefined">

               <head>Predefined Types</head>


               <p>In addition to the 19 types defined in
<xspecref spec="XS2" ref="built-in-primitive-datatypes"/>
of <bibref ref="xmlschema-2"/>, the data model defines five
additional types: <code>xdt:anyAtomicType</code>,
<code>xdt:untyped</code>, <code>xdt:untypedAtomic</code>,
<code>xdt:dayTimeDuration</code>, and
<code>xdt:yearMonthDuration</code>:</p>


               <glist role="newTypes">

                  <gitem id="xdt-anyAtomicType">

                     <label>
                        <code>xdt:anyAtomicType</code>
                     </label>

                     <def>

                        <p>The abstract datatype <term>xdt:anyAtomicType</term> is derived from
<term>xs:anySimpleType</term> and is the base type for all the
primitive atomic types described in <bibref ref="xmlschema-2"/>. This
datatype cannot be used in <bibref ref="xmlschema-1"/> type declarations,
nor can it be used as a base for user-defined atomic types. It can be
used, as discussed in
<xspecref spec="XP" ref="id-sequencetype-syntax"/>,
to define a required type (for example in a function signature) to
indicate that any of the primitive atomic types or
<code>xdt:untypedAtomic</code> is acceptable.
</p>

                     </def>

                  </gitem>


                  <gitem id="xdt-untyped">

                     <label>
                        <code>xdt:untyped</code>
                     </label>

                     <def>

                        <p>The datatype <term>xdt:untyped</term> is derived from
<term>xs:anyType</term> and serves as a special type
annotation to indicate a node that has not been validated by
a XML Schema or a DTD. This type cannot be
used in <bibref ref="xmlschema-1"/> type declarations, nor can it be used
as a base for user-defined types.  It can be used, as discussed in
<xspecref spec="XP" ref="id-sequencetype-syntax"/>,
to define a required type (for example in a function signature) to indicate that
only an untyped node is acceptable.</p> 

                     </def>

                  </gitem>


                  <gitem id="xdt-untypedAtomic">

                     <label>
                        <code>xdt:untypedAtomic</code>
                     </label>

                     <def>

                        <p>The datatype <term>xdt:untypedAtomic</term> is derived from
<term>xdt:anyAtomicType</term> and serves as a special type
annotation to indicate atomic values that have not been validated by
a XML Schema or a DTD or have received an instance type annotation of
<code>xs:anySimpleType</code> in the PSVI. This datatype cannot be
used in <bibref ref="xmlschema-1"/> type declarations, nor can it be used
as a base for user-defined atomic types.
It can be used, as discussed in 
<xspecref spec="XP" ref="id-sequencetype-syntax"/>,
to define a required type (for example in a function signature) to
indicate that only an untyped atomic value is acceptable.</p>

                     </def>

                  </gitem>


                  <gitem id="xdt-dayTimeDuration">

                     <label>
                        <code>xdt:dayTimeDuration</code>
                     </label>

                     <def>

                        <p>The type <code>xdt:dayTimeDuration</code> is derived from
<code>xs:duration</code> by restricting its lexical representation to
contain only the days, hours, minutes and seconds components. The
value space of <code>xdt:dayTimeDuration</code> is the set of
fractional second values. The components of
<code>xdt:dayTimeDuration</code> correspond to the day, hour, minute
and second components defined in Section 5.5.3.2 of
<bibref ref="ISO8601"/>, respectively. <code>xdt:dayTimeDuration</code> is
derived from <code>xs:duration</code> as follows:</p>


                        <eg xml:space="preserve">
&lt;xs:simpleType name='dayTimeDuration'&gt;
  &lt;xs:restriction base='xs:duration'&gt;
    &lt;xs:pattern value="[\-]?P([0-9]+D(T([0-9]+(H([0-9]+(M([0-9]+(\.[0-9]*)?S
        |\.[0-9]+S)?|(\.[0-9]*)?S)|(\.[0-9]*)?S)?|M([0-9]+
        (\.[0-9]*)?S|\.[0-9]+S)?|(\.[0-9]*)?S)|\.[0-9]+S))?
        |T([0-9]+(H([0-9]+(M([0-9]+(\.[0-9]*)?S|\.[0-9]+S)?
        |(\.[0-9]*)?S)|(\.[0-9]*)?S)?|M([0-9]+(\.[0-9]*)?S|\.[0-9]+S)?
        |(\.[0-9]*)?S)|\.[0-9]+S))"/&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;</eg>

<p>To make the long pattern easier to read, it has been formatted on
six lines using additional new line and space characters in the
pattern string. These additional characters should not be interpreted
as part of the pattern.</p>

</def>

                  </gitem>


                  <gitem id="xdt-yearMonthDuration">

                     <label>
                        <code>xdt:yearMonthDuration</code>
                     </label>

                     <def>

                        <p>The type <code>xdt:yearMonthDuration</code> is derived from
<code>xs:duration</code> by restricting its lexical representation to
contain only the year and month components. The value space of
<code>xdt:yearMonthDuration</code> is the set of
<code>xs:integer</code> month values. The year and month components of
<code>xdt:yearMonthDuration</code> correspond to the Gregorian year
and month components defined in section 5.5.3.2 of
<bibref ref="ISO8601"/>, respectively.</p>


                        <p>The type <code>xdt:yearMonthDuration</code> is derived from
<code>xs:duration</code> as follows:</p>


                        <eg xml:space="preserve">&lt;xs:simpleType name='yearMonthDuration'&gt;
  &lt;xs:restriction base='xs:duration'&gt;
    &lt;xs:pattern value="[\-]?P[0-9]+(Y([0-9]+M)?|M)"/&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;</eg>
</def>

                  </gitem>

               </glist>


               <p>An non-normative schema for the <code>xdt:dayTimeDuration</code>
and <code>xdt:yearMonthDuration</code> types is provided at
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/2005/02/xpath-datatypes.xsd" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/2005/02/xpath-datatypes.xsd</loc>.</p>


            </div3>


            <div3 id="types-hierarchy">

               <head>Type Hierarchy</head>


               <p>The diagram below shows how the nodes,
<termref def="dt-primitive-simple-type">primitive
simple types</termref>, and user defined types fit together into
a hierarchy.</p>


               <p>The <code>xs:IDREFS</code>, <code>xs:NMTOKENS</code>,
<code>xs:ENTITIES</code> and <code>user-defined list and union
types</code> are special types in that these types are lists or unions
rather than true subtypes.</p>


               <graphic xmlns:xlink="http://www.w3.org/1999/xlink" source="type-hierarchy.png" alt="Type hierarchy graphic" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>

            </div3>


            <div3 id="AtomicValue">

               <head>Atomic Values</head>


               <p>An atomic value can be constructed from a lexical
representation. Given a string and an atomic type, the atomic value is
constructed in such a way as to be consistent with validation. If the
string does not represent a valid value of the type, an error is
raised. When <code>xdt:untypedAtomic</code> is specified as the type,
no validation takes place. The details of the construction are
described in <xspecref spec="FO" ref="constructor-functions"/>
and the related <xspecref spec="FO" ref="casting"/>
section of <bibref ref="xpath-functions"/>.
</p>

            </div3>


            <div3 id="StringValue">

               <head>String Values</head>


               <p>A string value can be constructed from an atomic value.
Such a value is constructed by
converting the atomic value to its string representation as described
in <xspecref spec="FO" ref="casting"/>.
Using the canonical lexical representation for atomic values
may not always be compatible with XPath 1.0. These and other backwards
incompatibilities are described in
<xspecref spec="XP" ref="id-backwards-compatibility"/>.</p>

            </div3>


         </div2>

      </div1>


      <div1 id="construction">

         <head>Data Model Construction</head>


         <p>This section describes the constraints on instances of the data model.</p>


         <p>The data model supports well-formed XML documents conforming to
<bibref ref="REC-xml-names"/> or <bibref ref="xml-names11"/>.
Documents that are not well-formed are,
by definition, not XML. XML documents that do not conform to
<bibref ref="REC-xml-names"/> or <bibref ref="xml-names11"/>
are not supported (nor are they supported by
<bibref ref="xml-infoset"/>).</p>


         <p>In other words, the data model supports the following classes
of XML documents:</p>


         <ulist>
  
            <item>
    
               <p>Well-formed documents conforming to <bibref ref="REC-xml-names"/> or
<bibref ref="xml-names11"/>.</p>
  
            </item>
  
            <item>
    
               <p>DTD-valid documents conforming to <bibref ref="REC-xml-names"/> or
<bibref ref="xml-names11"/>, and</p>
  
            </item>
  
            <item>
    
               <p>W3C XML Schema-validated documents.</p>
  
            </item>

         </ulist>


         <p>This document describes how to construct an instance of the data
model from an <bibref ref="xml-infoset"/> or a Post Schema Validation
Infoset (PSVI), the augmented infoset produced by an XML Schema
validation episode.</p>


         <p>An instance of the data model can also be constructed directly through
application APIs, or from non-XML sources such as relational tables in
a database.</p>


         <p>The data model supports some kinds of values that are not supported
by <bibref ref="xml-infoset"/>. Examples of these are
<termref def="dt-fragment">document fragments</termref>
and sequences of Document Nodes.
The data model also supports values that are not nodes. Examples of
these are sequences of <termref def="dt-atomic-value">atomic values</termref>,
or sequences mixing nodes and atomic
values. These are necessary to be able to represent the results of
intermediate expressions in the data model during expression
processing.
</p>


         <div2 id="const-other">

            <head>Direct Construction</head>


            <p>Although this document describes construction of an instance of the data model in
terms of infoset properties, an infoset is not an absolutely necessary
precondition for building an instance of the data model.</p>


            <p>There are no constraints on how an instance of the data model may be
constructed directly, save that the resulting instance
<rfc2119>must</rfc2119> satisfy all of the constraints described in
this document.</p>


         </div2>


         <div2 id="const-infoset">

            <head>Construction from an Infoset</head>


            <p>An instance of the data model can be constructed from an <bibref ref="xml-infoset"/>
that satisfies the
following general constraints:</p>


            <ulist>

               <item>
                  <p>All general and external parsed entities must be fully expanded. The
Infoset must not contain any <emph role="info-item">unexpanded entity
reference information items</emph>.</p>

               </item>

               <item>
                  <p>The infoset <rfc2119>must</rfc2119> provide all of the properties identified as
<quote>required</quote> in this document.
The properties identified as <quote>optional</quote>
may be used, if they are present. All other properties are ignored.</p>

               </item>

            </ulist>


            <p>An instance of the data model constructed from an information set
<rfc2119>must</rfc2119> be consistent with the description provided
for each node kind.</p>

         </div2>


         <div2 id="const-psvi">

            <head>Construction from a PSVI</head>


            <p>An instance of the data model can be constructed from a PSVI, whose
element and attribute information items have been strictly assessed,
laxly assessed, or have not been assessed. Constructing an instance of
the data model from a PSVI <rfc2119>must</rfc2119> be consistent with
the description provided in this section and with the description
provided for each node kind.</p>


            <p>Data model construction requires that the PSVI provide unique names
for all anonymous schema types.</p>


            <note>

               <p>
                  <bibref ref="xmlschema-1"/> does not require all schema processors to
provide unique names for anonymous schema types. In order to build an
instance of the data model
from a PSVI produced by a processor that does not provide the names,
some post-processing will be required in order to assure that they are
all uniquely identified before construction begins.</p>

            </note>


            <p>
               <termdef id="dt-incompletely-validated" term="incompletely validated">An
<term>incompletely validated</term> document is an XML document that has a
corresponding schema but whose schema-validity assessment has resulted
in one or more element or attribute information items being assigned
values other than 'valid' for the <emph role="infoset-property">validity</emph>
property in the PSVI.</termdef>
            </p>


            <p>The data model supports incompletely validated documents. Elements
and attributes that are not valid are treated as having unknown schema types.</p>


            <p>The most significant difference between Infoset construction and PSVI
construction occurs in the area of schema type assignment. Other differences
can also arise from schema processing: default attribute and element values
may be provided, white space normalization of element content may occur, and the
user-supplied lexical form of elements and attributes with atomic schema types
may be lost.</p>


            <div3 id="PSVI2Types">

               <head>Mapping PSVI Additions to Node Properties</head>


               <p>A PSVI element or attribute information item may have a
<emph role="infoset-property">validity</emph> property.
The <emph role="infoset-property">validity</emph> property may be
<quote>
                     <emph>valid</emph>
                  </quote>, <quote>
                     <emph>invalid</emph>
                  </quote>,
or <quote>
                     <emph>notKnown</emph>
                  </quote>
and reflects the outcome of schema-validity assessment. In the data
model, precise schema type information is exposed for Element and
Attribute Nodes that are <quote>
                     <emph>valid</emph>
                  </quote>. Nodes
that are not <quote>
                     <emph>valid</emph>
                  </quote> are treated as if they
were simply well-formed XML and only very general schema type
information is associated with them.
</p>


               <div4 id="PSVI2NodeTypes">

                  <head>Element and Attribute Node Type Names</head>


                  <p>The precise definition of the schema type of an element or attribute
information item depends on the properties of the PSVI.
In the PSVI, <bibref ref="xmlschema-1"/>
only guarantees the existence of either the
<emph role="infoset-property">type definition</emph> property,
or the
<emph role="infoset-property">type definition namespace</emph>,
<emph role="infoset-property">type definition name</emph> and
<emph role="infoset-property">type definition anonymous</emph>
properties.
If the type definition refers to a union type, there
are further properties defined, that refer to the type definition
which actually validated the item's normalized value. These properties
are not used to determine the schema type of the node.
</p>


                  <p>If the <emph role="infoset-property">validity</emph> and
<emph role="infoset-property">validation attempted</emph> properties exist
and have the values <quote>
                        <emph>valid</emph>
                     </quote> and
<quote>
                        <emph>full</emph>
                     </quote>, respectively,
the schema type of an element or attribute information item is
represented by an <termref def="dt-expanded-qname">expanded-QName</termref>
whose namespace and local name correspond
to the first applicable items in the following list:
</p>


                  <ulist>

                     <item>

                        <p>If the <emph role="infoset-property">type definition</emph> property exists:</p>
  
                        <ulist>
    
                           <item>
                              <p>If the {name} property is not absent, the {target namespace} and {name}
properties of the <emph role="infoset-property">type definition</emph>
property;</p>
    
                           </item>
    
                           <item>
                              <p>Otherwise, the namespace and local name of the appropriate
<termref def="dt-anonymous-type-name">anonymous type name</termref>.</p>
    
                           </item>
   
                        </ulist>

                     </item>


                     <item>

                        <p>If <emph role="infoset-property">type definition anonymous</emph> exists:</p>
  
                        <ulist>
    
                           <item>
                              <p>If it is <emph>false</emph>:
the <emph role="infoset-property">type definition namespace</emph>
and the <emph role="infoset-property">type definition name</emph> properties;
</p>
                           </item>
    
                           <item>
                              <p>Otherwise, the namespace and local name of the appropriate
<termref def="dt-anonymous-type-name">anonymous type name</termref>.</p>
    
                           </item>
  
                        </ulist>

                     </item>

                  </ulist>


                  <p>If the <emph role="infoset-property">validity</emph> property does
not exist or is not <quote>
                        <emph>valid</emph>
                     </quote>, or the
<emph role="infoset-property">validition attempted</emph> property does
not exist or is not <quote>
                        <emph>full</emph>
                     </quote>,
the schema type of an element is <code>xdt:untyped</code> and the type
of an attribute is <code>xdt:untypedAtomic</code>.</p>


                  <p>The prefix associated with the type names is implementation-dependent.</p>


               </div4>


               <div4 id="TypedValueDetermination">

                  <head>Typed Value Determination</head>


                  <p>This section describes how the typed value of an Element or
Attribute Node is computed from an element or attribute PSVI
information item, where the information item has either a simple type
or a complex type with simple content. For other kinds of
Element Nodes, see <specref ref="const-psvi-element"/>; for other kinds of
Attribute Nodes, see <specref ref="const-psvi-attribute"/>.</p>


                  <p>The typed value of Attribute Nodes and some Element Nodes is a
sequence of atomic values. The
types of the items in the typed value of a node may not be the same as
the type of the node itself. This section describes how the typed
value of a node is derived from the properties of an information item
in a PSVI.</p>


                  <p>The types of the items in the typed value of a node are determined
by a recursive process called typed value determination. This process
begins with <code>T</code>, the schema type of the node itself, as
represented in the PSVI. The type <code>T</code> has a variety, which
is either atomic, union, or list. The typed value determination
process is defined as follows:</p>


                  <ulist>

                     <item>

                        <p>If the {variety} of <code>T</code> is atomic,</p>
  
                        <ulist>
  
                           <item>
  
                              <p>If <code>T</code> is <code>xdt:untyped</code>, the typed value is an instance of 
xdt:untypedAtomic.</p>
  
                           </item>
  
                           <item>
  
                              <p>Otherwise, the typed value is an instance of <code>T</code>.</p>
  
                           </item>
  
                        </ulist>

                     </item>

                     <item>

                        <p>If the {variety} of <code>T</code> is union, then the type of the
typed value is the determined by the type definition that actually
validated the content of the node, as follows:</p>

  
                        <ulist>
  
                           <item>
    
                              <p>If <emph role="infoset-property">member type definition</emph> exists:
If the {name} property exists, the {target namespace} and {name} 
properties of the <emph role="infoset-property">member type definition</emph>;
otherwise, the appropriate anonymous type name.</p>
  
                           </item>
  
                           <item>
    
                              <p>If <emph role="infoset-property">member type definition anonymous</emph> exists:
If it is false, the <emph role="infoset-property">member type definition namespace</emph>
and <emph role="infoset-property">member type definition name</emph> properties;
otherwise, the appropriate anonymous type name.</p>
  
                           </item>
  
                        </ulist>

                        <p>The resulting type is substituted for <code>T</code>, and the typed 
value determination process is invoked recursively.</p>

                     </item>


                     <item>

                        <p>If the {variety} of <code>T</code> is list, the
<emph role="infoset-property">schema normalized value</emph> of the 
node is considered to be a space-separated list of lexical forms, each of 
which has its own type. For each of these lexical forms, the type of the 
corresponding item is found in {item type definition}. This type is then 
substituted for <code>T</code>, and the typed value determination process is invoked 
recursively for each member of the list.</p>

                     </item>

                  </ulist>


                  <p>The typed value determination process is guaranteed to result in a 
sequence of atomic values, each having a well-defined atomic type. This 
sequence of atomic values, in turn, determines
typed-value property of the node in the data model.</p>

               </div4>


               <div4 id="typed-string-relationships">

                  <head>Relationship Between Typed-Value and String-Value</head>


                  <p>Element and attribute nodes have both typed-value and string-value
properties. However, implementations are allowed some flexibility in
how these properties are stored. An implementation may choose to store
the string-value only and derive the typed-value from it, or to store
the typed-value only and derive the string-value from it, or to store
both the string-value and the typed-value.</p>


                  <p>In order to permit these various implementation strategies, some 
variations in the string value of a node are defined as insignificant. 
Implementations that store only the typed value of a node are permitted to 
return a string value that is different from the original lexical form of 
the node content. For example, consider the following element:</p>


                  <eg xml:space="preserve">&lt;offset xsi:type="xs:integer"&gt;0030&lt;/offset&gt;</eg>

<p>Assuming that the node is valid, it has a typed value of 30 as an
<code>xs:integer</code>. An implementation may return either "30" or
"0030" as the string value of the node. Any string that is a valid
lexical representation of the typed value is acceptable. In this
specification, we express this rule by saying that the relationship
between the string value of a node and its typed value must be
"consistent with schema validation."</p>

<p>If an implementation stores only the string-value of a node, the 
following considerations apply:</p>

<ulist>
<item>
<p>If the type-name of the node denotes a union type, the implementation 
must be able to deliver the typed-value of the node as an instance of the 
appropriate member type. For example, if the type-name property of an 
element node is my:integer-or-string, which is defined as a union of 
xs:integer and xs:string, and the string-value of the node is "47", the 
implementation must be able to deliver the typed-value of the node as 
either the integer 47 or the string "47", depending on which member type 
validated the element.</p>
</item>
<item>
<p>If the type-name of the node is xs:QName, xs:NOTATION, or is derived 
from one of these types, the implementation must be able to deliver the 
typed-value of the node as a triple including a local name, a namespace 
prefix, and a namespace URI, even though the namespace URI is not part of 
the string-value (see Section 3.3.4).</p>
</item>
</ulist>
</div4>


               <div4 id="pattern-facets">

                  <head>Pattern Facets</head>


                  <p>Creating a subtype by restriction generally reduces the
<emph>value</emph> space of the original schema type. For example,
expressing a hat size as a restriction of decimal with a minimum value
of 6.5 and maximum value of 8.0 creates a schema type whose legal values are
only those in the range 6.5 to 8.0.</p>


                  <p>The pattern facet is different because it restricts the
<emph>lexical</emph> space of the schema type, not its value space.
Expressing a three-digit number as a restriction of integer with the
pattern facet “[0-9]{3}” creates a schema type whose legal values
are only those with a lexical form consisting of three digits.</p>


                  <p>The pattern facet is not reversible in practice; given an arbitrary
pattern, there’s no practical way to determine how the lexical form of
a typed value must be constructed so that the result will satisfy that
pattern.</p>


                  <p>As a consequence, pattern facets are not respected when mapping to
an Infoset or during serialization
and values in the data model that were originally valid with respect to
a schema that contains pattern-based restrictions may not be valid after
serialization.</p>

               </div4>

            </div3>

<!--
<div3 id="nilled">
<head>Mapping <att>xsi:nil</att> on &elementNode;s</head>

<p><bibref ref="xmlschema-2"/> introduced a mechanism for signaling
that an element should be accepted as valid when it has no content
despite a content type which does not require or even necessarily
allow empty content. That mechanism is the <att>xsi:nil</att> attribute.
</p>

<p>The data model exposes this special semantic in the &dm.prop.nilled; property.
(It also exposes the attribute, irrespective of whether or not schema
processing has been performed.)
</p>

<p>If the <emph role="infoset-property">validity</emph> property exists on
an information item and is <quote><emph>valid</emph></quote> then if
the <emph role="infoset-property">nil</emph> property exists and is true,
then the &dm.prop.nilled; property is <quote><emph>true</emph></quote>.
In all other cases, including all cases where schema validity assessment was
not attempted or did not succeed, the
&dm.prop.nilled; property is <quote><emph>false</emph></quote>.</p>

</div3>
-->


            <div3 id="dates-and-times">

               <head>Dates and Times</head>


               <p>The date and time types require special attention. The following sections apply
to <code>xs:dateTime</code>, <code>xs:date</code>, and <code>xs:time</code> types
and types derived from them.</p>


               <div4 id="storing-timezones">

                  <head>Storing <code>xs:dateTime</code>, <code>xs:date</code>, and <code>xs:time</code> Values in the Data Model</head>


                  <p>
                     <bibref ref="xmlschema-2"/> permits <code>xs:dateTime</code>,
<code>xs:date</code>, and <code>xs:time</code>
values both with and without timezones and therefore only specifies
a partial ordering among date and time values. In the data model,
it is necessary to preserve timezone information.</p>


                  <p>In order to achieve this goal, <code>xs:dateTime</code>,
<code>xs:date</code>, and <code>xs:time</code> values must be stored
with care. If the lexical representation of the value includes a timezone,
it is converted to UTC
as defined by <bibref ref="xmlschema-2"/> and the timezone in the
lexical representation is converted to a
<code>xdt:dayTimeDuration</code> value (as an offset from UTC). Implementations <rfc2119>must</rfc2119> keep
track of both these values for each <code>xs:dateTime</code>,
<code>xs:date</code>, and <code>xs:time</code> stored.</p>


                  <p>Lexical representations that do not have a timezone are assumed to be
in UTC for the purposes of normalization only. An empty sequence is used for their
timezone.</p>


                  <p>Thus, for the purpose of validation,
<quote>2003-01-02T11:30:00-05:00</quote> is converted to
<quote>2003-01-02T16:30:00Z</quote>, but in the data model it <rfc2119>must</rfc2119> be
stored as as <quote>(2003-01-02T16:30:00Z, -PT5H0M)</quote>. The value
<quote>2003-01-16T16:30:00</quote> is stored as
<quote>(2003-01-16T16:30:00Z, ())</quote> because it has no timezone.
</p>

               </div4>


               <div4 id="retreiving-timezones">

                  <head>Retreiving the Typed Value of <code>xs:dateTime</code>, <code>xs:date</code>, and <code>xs:time</code> Values</head>


                  <p>For <code>xs:dateTime</code>, <code>xs:date</code> and
<code>xs:time</code>, the typed value is the atomic value
that is determined from its stored form as follows:</p>


                  <ulist>

                     <item>
                        <p>If the timezone component is not the empty sequence (the timezone
was specified), then the value
contains the time component, normalized to the timezone specified by
the timezone component, as well as the timezone component. The stored values
"(2003-01-02T16:30:00Z, -PT5H0M)" produce the value
"2003-01-02T11:30:00-05:00".</p>
                     </item>

                     <item>
                        <p>If the timezone component is the empty sequence (the timezone
<emph>was not</emph> specified), then the time
component without any indication of timezone. The stored values
"(2003-01-02T16:30:00Z, ())"  produce the value "2003-01-02T16:30:00".</p>

                     </item>

                  </ulist>

               </div4>

            </div3>


            <div3 id="qnames-and-notations">

               <head>QNames and NOTATIONS</head>


               <p>The <code>QName</code> and <code>NOTATION</code> data types require
special attention. The following sections apply to
<code>xs:QName</code>, <code>xs:NOTATION</code>, and types derived
from them. These types are referred to collectively as “qualified
names”.</p>


               <p>As defined in XML Schema, the lexical space for qualified names
includes a local name and an optional namespace prefix. The value
space for qualified names contains a local name and an optional
namespace URI. Therefore, it is not possible to derive a lexical value
from the typed value, or vice versa, without access to some context
that defines the namespace bindings.</p>


               <p>When qualified names exist as values of nodes in a well-formed document,
it is always possible to determine such a namespace context. However,
the data model also allows qualified names to exist as freestanding
atomic values, or as the name or value of a parentless attribute node,
and in these cases no namespace context is available.</p>


               <p>In this Data Model, therefore, the value space for qualified names
contains a local-name, and optional namespace URI, and an optional
prefix. The prefix is used only when producing a lexical
representation of the value, that is, when casting the value to a
string. The prefix plays no part in other operations involving
qualified names: in particular, two qualified names are equal if their
local names and namespace URIs match, regardless whether they have the
same prefix.</p>


               <p>The following consistency constraints apply:</p>


               <ulist>

                  <item>

                     <p>If the namespace URI of a qualified name is absent, then the prefix must
also be absent.</p>

                  </item>


                  <item>

                     <p>For every element node whose name has a prefix, the prefix must be one
that is bound to the namespace URI of the element name by one of the
namespace nodes of the element.</p>

                  </item>


                  <item>

                     <p>For every element node whose name has no prefix, the element must have a
namespace node that binds the empty prefix to the namespace URI of the
element name, or must have no namespace node that binds the empty prefix in
the case where the name of the element has no namespace URI.</p>

                  </item>


                  <item>

                     <p>For every attribute node whose name has a prefix, the attribute node must
either be parentless, or the prefix must be one that is bound to the
namespace URI of the attribute name by one of the namespace nodes of the
parent element.</p>

                  </item>


                  <item>

                     <p>For every qualified name that contains a prefix and that is included in
the typed value of an element node, or of an attribute node that has an
element node as its parent, the prefix must be one that is bound to the
namespace URI of the qualified name by one of the namespace nodes of that
element.</p>

                  </item>


                  <item>

                     <p>For every qualified name that contains a namespace URI and no prefix, and
that is included in the typed value of an element node, or of an attribute
node that has an element node as its parent, that element node must have a
namespace node that binds the empty prefix to that namespace URI.</p>

                  </item>


                  <item>

                     <p>For every qualified name that contains neither a namespace URI nor a
prefix, and that is included in the typed value of an element node, or of an
attribute node that has an element node as its parent, that element node
must have no namespace node that binds the empty prefix.</p>

                  </item>

               </ulist>

            </div3>

         </div2>

      </div1>


      <div1 id="infoset-mapping">

         <head>Infoset Mapping</head>


         <p>This specification describes how to map each kind of node to the
corresponding information item. This mapping produces an Infoset; it
does not and cannot produce a PSVI. Validation must be used to obtain
a PSVI for a (portion of a) data model instance.
</p>


         <p>An Infoset can also be constructed by serializing an instance of
the data model and parsing it. Serialization is governed by
<bibref ref="xslt-xquery-serialization"/>.</p>


      </div1>


      <div1 id="accessors">

         <head>Accessors</head>


         <p>A set of accessors is defined on <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#Node" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">nodes</loc> in
the data model. For consistency, all the accessors are defined on
every kind of node, although several accessors return a constant empty
sequence on some kinds of nodes.</p>


         <p>In order for processors to be able to operate on instances of the
data model, the model must expose the properties of the items it contains.
The data model does this by defining a family of accessor functions.
These are not functions in the literal sense; they are not available
for users or applications to call directly. Rather they are
descriptions of the information that an implementation of the data model
must expose to applications. Functions and operators available to end-users
are described in <bibref ref="xpath-functions"/>.</p>


         <p>Some typed values in the data model are <emph>undefined</emph>.
Attempting to access an undefined property is always an error. Behavior
in these cases is implementation defined and the host language is responsible
for determining the result.</p>


         <div2 id="dm-attributes">

            <head>
               <code>attributes</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="attributes" return-type="attribute()" returnSeq="yes" returnEmptyOk="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>attributes</function> accessor returns the attributes of
a node as a sequence containing zero or more Attribute Nodes.
The order of Attribute Nodes is stable but implementation dependent.</p>



            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-attributes" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-base-uri">

            <head>
               <code>base-uri</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="base-uri" return-type="xs:anyURI" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>base-uri</function> accessor returns the base URI of a node
as a sequence containing zero or one URI reference. For more information
about base URIs, see <bibref ref="xmlbase"/>.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-base-uri" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>

         </div2>


         <div2 id="dm-children">

            <head>
               <code>children</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="children" return-type="node()" returnSeq="yes" returnEmptyOk="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>children</function> accessor returns the children of a node
as a sequence containing zero or more nodes.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-children" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-document-uri">

            <head>
               <code>document-uri</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="document-uri" return-type="xs:anyURI" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="node" type="document-node()"/>
  
               </proto>

            </example>


            <p>The <function>document-uri</function> accessor returns the
absolute URI of the resource from which the Document Node was constructed, if
the absolute URI is available. If there is no URI available, or if it cannot
be made absolute when the Document Node is constructed, or if it is used
on a node other than a Document Node,
the empty sequence is returned.
</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-document-uri" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>

         </div2>


         <div2 id="dm-is-id">

            <head>
               <code>is-id</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="is-id" return-type="xs:boolean" returnEmptyOk="no" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="node" type="element-node()"/>
  
               </proto>

            </example>


            <p>The <function>is-id</function> accessor returns true if the
node is an XML ID.</p>


            <p>It is defined on <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-is-id" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc>
node kinds.</p>

         </div2>


         <div2 id="dm-is-idrefs">

            <head>
               <code>is-idrefs</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="is-idrefs" return-type="xs:boolean" returnEmptyOk="no" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="node" type="element-node()"/>
  
               </proto>

            </example>


            <p>The <function>is-idrefs</function> accessor returns true if the
node is an XML IDREF or IDREFS.</p>


            <p>It is defined on <loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-is-idrefs" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc>
node kinds.</p>

         </div2>


         <div2 id="dm-namespace-bindings">

            <head>
               <code>namespace-bindings</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="namespaces-bindings" return-type="xs:string" returnSeq="yes" returnEmptyOk="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="node" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>namespace-bindings</function> accessor returns 
returns the dynamic, in-scope namespaces associated with a node
as a set
of prefix/URI pairs, using an implementation-dependent 
representation.</p>


            <p>The prefix for the default namespace is the zero length string
(<code>""</code>).</p>


            <p>The <function>namespace-bindings</function> accessor is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-namespace-bindings" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


            <p>Note: this accessor and the <code>namespace-nodes</code> accessor provide
two views of the same information.</p>


         </div2>


         <div2 id="dm-namespace-nodes">

            <head>
               <code>namespace-nodes</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="namespace-nodes" return-type="node()" returnSeq="yes" returnEmptyOk="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>namespace-nodes</function> accessor returns the dynamic,
in-scope namespaces associated with a node as a sequence containing
zero or more Namespace Nodes. The order of Namespace Nodes is stable
but implementation dependent.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-namespace-nodes" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


            <p>Note: this accessor and the <code>namespace-bindings</code> accessor provide
two views of the same information. Implementations that do not need to expose
Namespace Nodes might choose not to implement this accessor.</p>


         </div2>


         <div2 id="dm-nilled">

            <head>
               <code>nilled</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="nilled" return-type="xs:boolean" returnSeq="no" returnEmptyOk="yes" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>nilled</function> accessor returns true if the
node is <quote>nilled</quote>.
<bibref ref="xmlschema-2"/> introduced the nilled mechanism to
signal that an element should be accepted as valid when it has no
content even when it has a content type which does not require or even
necessarily allow empty content.
</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-nilled" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>

         </div2>


         <div2 id="dm-node-kind">

            <head>
               <code>node-kind</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="node-kind" return-type="xs:string" returnEmptyOk="no" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>node-kind</function> accessor returns a string identifying the
kind of node. It will be one of the following, depending on the kind of
node:
“attribute”,
“comment”,
“document”,
“element”,
“namespace”
“processing-instruction”, or
“text”.
</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-node-kind" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-node-name">

            <head>
               <code>node-name</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="node-name" return-type="xs:QName" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>node-name</function> accessor returns the name of the node
as a sequence of zero or one <code>xs:QName</code>s. Note that the
QName value includes an optional prefix as described in
<specref ref="qnames-and-notations"/>.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-node-name" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-parent">

            <head>
               <code>parent</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="parent" return-type="node()" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>parent</function> accessor returns the <emph role="dm-node-property">parent</emph> of a node
as a sequence containing zero or one nodes.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-parent" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-string-value">

            <head>
               <code>string-value</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="string-value" return-type="xs:string" returnEmptyOk="no" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>string-value</function> accessor returns the string value
of a node.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-string-value" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-type-name">

            <head>
               <code>type-name</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="type-name" return-type="xs:QName" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>type-name</function> accessor returns the name of the schema type
of a node as a sequence of zero or one <code>xs:QName</code>s.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-type-name" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-typed-value">

            <head>
               <code>typed-value</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="typed-value" return-type="xdt:anyAtomicType" returnSeq="yes" returnEmptyOk="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="n" type="node()"/>
  
               </proto>

            </example>


            <p>The <function>typed-value</function> accessor returns the
typed-value of the node as a sequence of zero or more atomic
values.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-typed-value" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>


         </div2>


         <div2 id="dm-unparsed-entity-public-uri">

            <head>
               <code>unparsed-entity-public-uri</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="unparsed-entity-public-id" return-type="xs:string" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="node" type="document-node()"/>
    
                  <arg name="entityname" type="xs:string"/>
  
               </proto>

            </example>


            <p>The <function>unparsed-entity-public-id</function> accessor returns
the public identifier of an unparsed external entity declared in the
specified document. If no entity with the name specified in
<code>$entityname</code> exists, or if the entity is not an external
unparsed entity, or if the entity has no public identifier, the empty
sequence is returned.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-unparsed-entity-public-uri" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>

         </div2>


         <div2 id="dm-unparsed-entity-system-uri">

            <head>
               <code>unparsed-entity-system-uri</code> Accessor</head>


            <example role="signature">
  
               <proto class="dm" name="unparsed-entity-system-id" return-type="xs:string" returnEmptyOk="yes" returnSeq="no" returnVaries="no" isSchema="no" isDatatype="no" isSpecial="no" isOp="no">
    
                  <arg name="node" type="document-node()"/>
    
                  <arg name="entityname" type="xs:string"/>
  
               </proto>

            </example>


            <p>The <function>unparsed-entity-system-id</function> accessor returns the
system identifier of an unparsed external entity declared in the
specified document. If no entity with the name specified in <code>$entityname</code>
exists, or if the entity is not an external unparsed entity, the empty sequence
is returned.</p>


            <p>It is defined on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#acc-summ-unparsed-entity-system-uri" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">all seven</loc> node kinds.</p>

         </div2>

      </div1>


      <div1 id="Node">

         <head>Nodes</head>


         <p>
            <termdef id="dt-node" term="Node">There are seven kinds of
<term>Nodes</term> in the data model:
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#DocumentNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">document</loc>,
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ElementNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">element</loc>,
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#AttributeNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">attribute</loc>,
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#TextNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">text</loc>,
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#NamespaceNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">namespace</loc>,
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ProcessingInstructionNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">processing instruction</loc>, and
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#CommentNode" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">comment</loc>.</termdef> Each kind of
node is described in the following sections.</p>


         <note>

            <p>A host language based on the Data Model may specify that its usage of the 
Data Model does not include namespace nodes. Namespace nodes are used only 
in the "namespaces" property of an element node, which records the 
bindings of namespace prefixes to namespace URIs. These bindings may be 
represented either by means of namespace nodes or by using an alternative, 
implementation-defined representation.</p>

         </note>


         <p id="constraints-general">All nodes <rfc2119>must</rfc2119> satisfy
the following general constraints:</p>


         <olist>

            <item>
               <p>Every node <rfc2119>must</rfc2119> have a unique identity,
distinct from all other nodes.
</p>
            </item>

            <item>

               <p>The <emph role="dm-node-property">children</emph> property of a node <rfc2119>must not</rfc2119>
contain two consecutive Text Nodes.</p>

            </item>

            <item>

               <p>The <emph role="dm-node-property">children</emph> property of a node <rfc2119>must not</rfc2119>
contain any empty Text Nodes.</p>

            </item>

            <item>

               <p>The <emph role="dm-node-property">children</emph> and <emph role="dm-node-property">attributes</emph> properties of a node
<rfc2119>must not</rfc2119>
contain two nodes with the same identity.</p>

            </item>

         </olist>


         <div2 id="DocumentNode">

            <head>Document Nodes</head>


            <div3 id="DocumentNodeOverview">

               <head>Overview</head>


               <p>Document Nodes encapsulate XML documents. Documents have the following
properties:</p>


               <ulist>

                  <item>
                     <p>
                        <emph role="dm-node-property">base-uri</emph>, possibly empty.
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">children</emph>, possibly empty.
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">unparsed-entities</emph>, possibly empty.
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">document-uri</emph>, possibly empty.
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">string-value</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">typed-value</emph>

                     </p>
                  </item>

               </ulist>


               <p id="constraints-document">Document Nodes <rfc2119>must</rfc2119> satisfy the following constraints.</p>


               <olist>

                  <item>
                     <p>The <emph role="dm-node-property">children</emph> 
                        <rfc2119>must</rfc2119> consist exclusively
of Element, Processing Instruction, Comment, and Text Nodes if it is not empty.
Attribute, namespace, and Document Nodes can never appear as children
</p>
                  </item>

                  <item>
                     <p>If a node <emph>N</emph> is among the <emph role="dm-node-property">children</emph> of a Document Node
<emph>D</emph>, then the <emph role="dm-node-property">parent</emph> of <emph>N</emph>

                        <rfc2119>must</rfc2119> be <emph>D</emph>.</p>
                  </item>

                  <item>
                     <p>If a node <emph>N</emph> has a <emph role="dm-node-property">parent</emph> Document Node <emph>D</emph>,
then <emph>N</emph> 
                        <rfc2119>must</rfc2119> be among the <emph role="dm-node-property">children</emph> of
<emph>D</emph>.
</p>
                  </item>

               </olist>


               <p>In the <bibref ref="xml-infoset"/>, a
<emph role="info-item">document information item</emph>
must have at least one child, its children must consist exclusively of
<emph role="info-item">element information item</emph>s,
<emph role="info-item">processing instruction information item</emph>s
and <emph role="info-item">comment information item</emph>s,
and exactly one of the children must be
an <emph role="info-item">element information item</emph>.
This data model is more permissive: a
Document Node may be empty, it may have more than one Element Node as a
child, and it also permits Text Nodes as children.</p>


               <p>Implementations that support DTD processing and access to the
unparsed entity accessors use the
<emph role="dm-node-property">unparsed-entities</emph> property to associate
information about an unordered collection of unparsed entities with a
Document Node. This property is accessed indirectly through the
<function>unparsed-entity-system-id</function> and
<function>unparsed-entity-public-id</function> functions.
</p>

            </div3>


            <div3 id="DocumentNodeAccessors">

               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">base-uri</emph> property if it exists and is
not empty, otherwise returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">children</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the absolute URI of the resource from which the Document Node was
constructed, or the empty sequence if no such absolute URI is available.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>document</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">string-value</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">typed-value</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the public identifier of the specified unparsed entity or
the empty sequence if no such entity exists.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the system identifier of the specified unparsed entity or
the empty sequence if no such entity exists.
</p>

                     </def>

                  </gitem>

               </glist>


            </div3>


            <div3 id="const-infoset-document">

               <head>Construction from an Infoset</head>


               <p>The <emph role="info-item">document information item</emph> is
required. A Document Node is constructed for each
<emph role="info-item">document information item</emph>.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">children</emph> and
<emph role="infoset-property">base URI</emph>.</p>


               <p>The following infoset properties are optional:
<emph role="infoset-property">unparsed entities</emph>.</p>


               <p>Document Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">base-uri</emph>
                     </label>

                     <def>

                        <p>The value of the <emph role="infoset-property">base URI</emph> property.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">children</emph>
                     </label>

                     <def>

                        <p>The sequence of nodes constructed from the information
items found in the <emph role="infoset-property">children</emph>
property.</p>

                        <p>For each element, processing instruction, and comment found in the
<emph role="infoset-property">children</emph> property, a corresponding
Element, Processing Instruction, or Comment Node is constructed
and that sequence of nodes is used as the value of the <emph role="dm-node-property">children</emph>
property.</p>

                        <p>If present among the
<emph role="infoset-property">children</emph>, the
<emph role="info-item">document type declaration information item</emph>
is ignored.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">unparsed-entities</emph>
                     </label>

                     <def>

                        <p>If the <emph role="infoset-property">unparsed entities</emph> property is
present and is not the empty set, the values of the
<emph role="info-item">unparsed entity information items</emph> must be used
to support the <function>unparsed-entity-system-id</function> and
<function>unparsed-entity-public-id</function> accessors.</p>

                        <p>The internal structure of the values of the
<emph role="dm-node-property">unparsed-entities</emph> property is implementation
defined.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">string-value</emph>
                     </label>

                     <def>

                        <p>The concatenation of the string-values of all its Text Node descendants in
document order. If the document has no such descendants, the zero length
string (<code>""</code>).</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">typed-value</emph>
                     </label>

                     <def>

                        <p>The <function>string-value</function> of the node as an
<code>xdt:untypedAtomic</code> value.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">document-uri</emph>
                     </label>

                     <def>

                        <p>The <emph role="dm-node-property">document-uri</emph> property
holds the absolute URI for the resource from which the document node
was constructed, if one is available and can be made absolute. For
example, if a collection of documents is returned by the
<function>fn:collection</function> function, the
<emph role="dm-node-property">document-uri</emph> property
may serve to distinguish between them even though each has the same
<emph role="dm-node-property">base-uri</emph> property.</p>

                        <p>If the <emph role="dm-node-property">document-uri</emph> is not
the empty sequence, then the following constraint must hold: the node returned
by evaluating <code>fn:doc()</code> with the
<emph role="dm-node-property">document-uri</emph> as its argument must
return the document node that provided the value of the 
<emph role="dm-node-property">document-uri</emph> property.</p>

                        <p>In other words, for any Document Node <code>$arg</code>, either
<code>fn:document-uri($arg)</code> must return the empty sequence or
<code>fn:doc(fn:document-uri($arg))</code> must return <code>$arg</code>.
</p>

                     </def>

                  </gitem>


               </glist>

            </div3>


            <div3 id="const-psvi-document">

               <head>Construction from a PSVI</head>

               <p>Construction from a PSVI is identical to construction
from the Infoset.</p>

            </div3>


            <div3 id="infoset-mapping-document">

               <head>Infoset Mapping</head>


               <p>A Document Node maps to a
<emph role="info-item">document information item</emph>. The mapping fails
and produces no value if the Document Node contains Text Node children
that do not consist entirely of white space or if the Document Node contains
more than one Element Node child.</p> 


               <p>The following properties are specified by this mapping:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">children</emph>
                     </label>

                     <def>

                        <p>A list of information items obtained by processing each of the
<function>children</function> in order and mapping each to
the appropriate information item(s).
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">document element</emph>
                     </label>

                     <def>

                        <p>The <emph role="info-item">element information item</emph> that is among the
<emph role="infoset-property">children</emph>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">unparsed entities</emph>
                     </label>

                     <def>

                        <p>An unordered set of <emph role="info-item">unparsed entity information item</emph>s
constructed from the
<emph role="dm-node-property">unparsed-entities</emph>.
</p>


                        <p>Each unparsed entity maps to an <emph role="info-item">unparsed entity
information item</emph>. The
following properties are specified by this mapping:</p>


                        <glist>

                           <gitem>

                              <label>
                                 <emph role="infoset-property">name</emph>
                              </label>

                              <def>

                                 <p>The name of the entity.</p>

                              </def>

                           </gitem>

                           <gitem>

                              <label>
                                 <emph role="infoset-property">system identifier</emph>
                              </label>

                              <def>

                                 <p>The system identifier of the entity.</p>

                              </def>

                           </gitem>

                           <gitem>

                              <label>
                                 <emph role="infoset-property">public identifier</emph>
                              </label>

                              <def>

                                 <p>The public identifier of the entity.</p>

                              </def>

                           </gitem>

                           <gitem>

                              <label>
                                 <emph role="infoset-property">declaration base URI</emph>
                              </label>

                              <def>

                                 <p>The base URI of the entity in which the declaration occurred.</p>

                              </def>

                           </gitem>

                        </glist>


                        <p>The following properties of the <emph role="info-item">unparsed entity
information item</emph> have no value:
<emph role="infoset-property">notation name</emph>,
<emph role="infoset-property">notation</emph>.</p>


                     </def>

                  </gitem>

               </glist>


               <p>The following properties of the <emph role="info-item">document
information item</emph> have no value:
<emph role="infoset-property">notations</emph>

                  <emph role="infoset-property">character encoding scheme</emph>

                  <emph role="infoset-property">standalone</emph>

                  <emph role="infoset-property">version</emph>

                  <emph role="infoset-property">all declarations processed</emph>.</p>


            </div3>


         </div2>


         <div2 id="ElementNode">

            <head>Element Nodes</head>


            <div3 id="ElementNodeOverview">

               <head>Overview</head>


               <p>Element Nodes encapsulate XML elements. Elements have the following properties:</p>


               <ulist>

                  <item>
                     <p>
                        <emph role="dm-node-property">base-uri</emph>, possibly empty.
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">node-name</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">parent</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">type-name</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">children</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">attributes</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">namespaces</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">nilled</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">string-value</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">typed-value</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">is-id</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">is-idrefs</emph>

                     </p>
                  </item>

               </ulist>


               <p>Element Nodes <rfc2119>must</rfc2119> satisfy the following constraints.</p>


               <olist>

                  <item id="elem-children">

                     <p>The <emph role="dm-node-property">children</emph> 
                        <rfc2119>must</rfc2119> consist exclusively
of Element, Processing Instruction, Comment, and Text Nodes if it is not empty.
Attribute, Namespace, and Document Nodes can never appear as children
</p>
                  </item>

                  <item>
                     <p>The Attribute Nodes of an element <rfc2119>must</rfc2119> have distinct
<code>xs:QName</code>s.
</p>
                  </item>

                  <item>
                     <p>If a node <emph>N</emph> is among the <emph role="dm-node-property">children</emph> of an element
<emph>E</emph>, then the <emph role="dm-node-property">parent</emph> of <emph>N</emph>

                        <rfc2119>must</rfc2119> be <emph>E</emph>.
</p>
                  </item>

                  <item>
                     <p>Exclusive of Attribute and Namespace Nodes, if a node
<emph>N</emph> has a <emph role="dm-node-property">parent</emph> element <emph>E</emph>, then
<emph>N</emph> 
                        <rfc2119>must</rfc2119> be among the <emph role="dm-node-property">children</emph> of
<emph>E</emph>. (Attribute and Namespace Nodes have a parent, but
they do not appear among the children of their parent.)</p>

                     <p>The data model permits Element Nodes without parents
(to represent partial results during expression processing, for example).
Such Element Nodes <rfc2119>must not</rfc2119>
appear among the dm.prop.children; of any other node.
</p>

                  </item>

                  <item>
                     <p>If an Attribute Node <emph>A</emph> has a
<emph role="dm-node-property">parent</emph> element <emph>E</emph>,
then <emph>A</emph> 
                        <rfc2119>must</rfc2119> be among the <emph role="dm-node-property">attributes</emph>
of <emph>E</emph>.</p>

                     <p>The data model permits Attribute Nodes without parents.
Such Attribute Nodes <rfc2119>must not</rfc2119>
appear among the <emph role="dm-node-property">attributes</emph> of any Element Node.
</p>

                  </item>

                  <item>
                     <p>If a Namespace Node <emph>N</emph> has a
parent element <emph>E</emph>, then <emph>N</emph> 
                        <rfc2119>must</rfc2119>
be among the <emph role="dm-node-property">namespaces</emph> of <emph>E</emph>.</p>

                     <p>The data model permits Namespace Nodes without parents. Such
Namespace Nodes <rfc2119>must not</rfc2119> appear among the
<emph role="dm-node-property">namespaces</emph> of any Element Node.  This constraint
is irrelevant for implementations that do not support Namespace Nodes.
</p>

                  </item>

                  <item>
                     <p>If the <function>type-name</function> of an Element Node is
<code>xdt:untyped</code>, then the <function>type-name</function> of all its
descendant elements <rfc2119>must</rfc2119> also be <code>xdt:untyped</code> and the
<function>type-name</function> of all its Attribute Nodes <rfc2119>must</rfc2119> be
<code>xdt:untypedAtomic</code>.</p>

                  </item>

                  <item>
                     <p>If the <function>type-name</function> of an Element Node is
<code>xdt:untyped</code>, then the
<emph role="dm-node-property">nilled</emph> property <rfc2119>must</rfc2119> be <code>false</code>.
</p>

                  </item>

                  <item>
                     <p>If the <emph role="dm-node-property">nilled</emph> property is <code>true</code>, then the
<emph role="dm-node-property">children</emph> property <rfc2119>must not</rfc2119> contain
Element Nodes or Text Nodes.</p>

                  </item>


                  <item>
                     <p>For every <termref def="dt-expanded-qname">expanded QName</termref>
that appears in the <function>node-name</function> of the element,
the <function>node-name</function> of any Attribute Node among the
<emph role="dm-node-property">attributes</emph> of the element, or in any value of type
<code>xs:QName</code> or <code>xs:NOTATION</code> (or any type derived
from those types) that appears in the typed-value of the element or
the typed-value of any of its attributes, if the expanded QName has a non-empty URI, then
there <rfc2119>must</rfc2119> be a prefix binding for this URI among the
<emph role="dm-node-property">namespaces</emph> of this
Element Node.</p>

                     <p>If any of the expanded QNames has an empty URI, then there
<rfc2119>must not</rfc2119> be any binding among the 
<emph role="dm-node-property">namespaces</emph> of this
Element Node which binds the empty prefix to a URI.</p>

                  </item>


                  <item>
                     <p>Every element must include a Namespace Node and/or namespace binding
for the prefix <code>xml</code> bound to the URI
<code>http://www.w3.org/XML/1998/namespace</code> and there must be no other
prefix bound to that URI.</p>

                  </item>

               </olist>


            </div3>


            <div3 id="ElementNodeAccessors">

               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">attributes</emph> property. The order of
Attribute Nodes is stable but implementation dependent.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">base-uri</emph> property if it exists and
is not empty. Otherwise, if the element has a parent, returns the value of the
<function>base-uri</function> of its parent; otherwise, returns
the empty sequence.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">children</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">is-id</emph>
property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">is-idrefs</emph>
property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">namespaces</emph> property as a set of prefix/URI
pairs.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">namespaces</emph> property as a sequence of
Namespace Nodes. The order of
Namespace Nodes is stable but implementation dependent.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">nilled</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>element</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">node-name</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">parent</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">string-value</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">type-name</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">typed-value</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>

               </glist>


            </div3>


            <div3 id="const-infoset-element">

               <head>Construction from an Infoset</head>


               <p>The <emph role="info-item">element information items</emph> are
required. An Element Node is constructed for each
<emph role="info-item">element information item</emph>.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">namespace name</emph>,
<emph role="infoset-property">local name</emph>,
<emph role="infoset-property">children</emph>,
<emph role="infoset-property">attributes</emph>,
<emph role="infoset-property">in-scope namespaces</emph>,
<emph role="infoset-property">base URI</emph>, and
<emph role="infoset-property">parent</emph>.</p>


               <p>Element Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">base-uri</emph>
                     </label>

                     <def>

                        <p>The value of the <emph role="infoset-property">base URI</emph> property.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">node-name</emph>
                     </label>

                     <def>

                        <p>An <code>xs:QName</code> constructed from the
<emph role="infoset-property">local name</emph> property
and the
<emph role="infoset-property">namespace name</emph> property</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">parent</emph>
                     </label>

                     <def>

                        <p>The node that corresponds to the
value of the <emph role="infoset-property">parent</emph> property.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">type-name</emph>
                     </label>

                     <def>
                        <p>All Element Nodes constructed from an infoset have the type
<code>xdt:untyped</code>.</p> 

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">children</emph>
                     </label>

                     <def>

                        <p>The sequence of nodes constructed from the information
items found in the <emph role="infoset-property">children</emph>
property.</p>

                        <p>For
each element, processing instruction, comment, and maximal sequence of
adjacent <emph role="info-item">character information items</emph> found in the
<emph role="infoset-property">children</emph> property, a corresponding
Element, Processing Instruction, Comment, or Text Node is constructed
and that sequence of nodes is used as the value of the <emph role="dm-node-property">children</emph>
property.</p>


                        <p>Because the data model requires
that all general entities be expanded, there will never be
<emph role="info-item">unexpanded entity reference information item</emph>
children.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">attributes</emph>
                     </label>

                     <def>
                        <p>A set of Attribute Nodes constructed from the
<emph role="info-item">attribute information items</emph>
appearing in the <emph role="infoset-property">attributes</emph>
property. This includes all of the <quote>special</quote> attributes
(<att>xml:lang</att>, <att>xml:space</att>, <att>xsi:type</att>, etc.)
but does not include namespace declarations (because they are not attributes).</p>

                        <p>Default and fixed attributes provided by both DTD and XML Schema processing
are added to the <emph role="infoset-property">attributes</emph> and are
therefore included in the data model <emph role="dm-node-property">attributes</emph>’s of an element.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">namespaces</emph>
                     </label>

                     <def>

                        <p>A set of Namespace Nodes constructed from the
<emph role="info-item">namespace information items</emph>
appearing in the <emph role="infoset-property">in-scope namespaces</emph>
property.</p>


                        <p>Implementations <rfc2119>may</rfc2119> ignore
<emph role="info-item">namespace information items</emph>
for namespaces which do not appear in the
<termref def="dt-expanded-qname">expanded QName</termref> of the element
name or the names of any of its <emph role="info-item">attribute
information items</emph>. This can arise when QNames are used in
content.</p>


                        <p>Note: implementations that do not support Namespace Nodes may simply
preserve the relevant bindings in this property.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">nilled</emph>
                     </label>

                     <def>
                        <p>All Element Nodes constructed from an infoset have a
<emph role="dm-node-property">nilled</emph> property of <quote>
                              <emph>false</emph>
                           </quote>.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">string-value</emph>
                     </label>

                     <def>

                        <p>The <emph role="dm-node-property">string-value</emph> is constructed from the
<emph role="infoset-property">character information item</emph>

                           <emph role="infoset-property">children</emph>
of the
element and all its descendants. The precise rules for selecting
significant
<emph role="infoset-property">character information item</emph>s and
constructing characters from them is described in
<specref ref="const-infoset-text"/> of
<specref ref="TextNode"/>.</p>

                        <p>This process is equivalent to concatenating the
<function>string-value</function>s
of all of the Text Node descendants of
the resulting Element Node.</p>

                        <p>If the document has no such descendants, the <emph role="dm-node-property">string-value</emph>
is the empty string.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">typed-value</emph>
                     </label>

                     <def>

                        <p>The <emph role="dm-node-property">string-value</emph> as an <code>xdt:untypedAtomic</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-id</emph>
                     </label>

                     <def>

                        <p>All Element Nodes constructed from an infoset have a
<emph role="dm-node-property">is-id</emph> property of
<quote>
                              <emph>false</emph>
                           </quote>.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-idrefs</emph>
                     </label>

                     <def>

                        <p>All Element Nodes constructed from an infoset have a
<emph role="dm-node-property">is-idrefs</emph> property of
<quote>
                              <emph>false</emph>
                           </quote>.</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-psvi-element">

               <head>Construction from a PSVI</head>


               <p>The following Element Node properties are affected by PSVI properties.</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">type-name</emph>
                     </label>

                     <def>

                        <p>If any ancestor node has the <emph role="dm-node-property">type-name</emph>

                           <code>xdt:untyped</code>, the <emph role="dm-node-property">type-name</emph> of this element
node is <code>xdt:untyped</code>.
Otherwise, the <emph role="dm-node-property">type-name</emph> is
determined as described in <specref ref="PSVI2NodeTypes"/>.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">children</emph>
                     </label>

                     <def>


                        <p>The sequence of nodes constructed from the information
items found in the <emph role="infoset-property">children</emph>
property.</p>


                        <p>For each element, processing instruction, comment, and maximal
sequence of adjacent <emph role="info-item">character information items</emph> found in the
<emph role="infoset-property">children</emph> property, a corresponding
Element, Processing Instruction, Comment, or Text Node is constructed
and that sequence of nodes is used as the value of the <emph role="dm-node-property">children</emph>
property.</p>


                        <p>For elements with schema simple types, or complex types with simple content,
if the <emph role="infoset-property">schema normalized value</emph>
PSVI property exists, the processor may use a sequence of nodes
containing the Processing Instruction and Comment Nodes corresponding
to the
<emph role="info-item">processing instruction</emph> and
<emph role="info-item">comment information items</emph> found in the
<emph role="infoset-property">children</emph>
property, plus an optional single Text Node whose string value is
the <emph role="infoset-property">schema normalized value</emph> for
the <emph role="dm-node-property">children</emph> property.
If the <emph role="infoset-property">schema normalized value</emph> is
the empty string, the Text Node <rfc2119>must not</rfc2119> be
present, otherwise it <rfc2119>must</rfc2119> be present.</p>


                        <p>The relative order of Processing Instruction and Comment Nodes must
be preserved, but the position of the Text Node, if it is present, among
them is implementation defined.</p>


                        <p>Because the data model requires
that all general entities be expanded, there will never be
<emph role="info-item">unexpanded entity reference information item</emph>
children.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">nilled</emph>
                     </label>

                     <def>


                        <p>If the <emph role="infoset-property">validity</emph> property exists on
an information item and is <quote>
                              <emph>valid</emph>
                           </quote> then if
the <emph role="infoset-property">nil</emph> property exists and is true,
then the <emph role="dm-node-property">nilled</emph> property is <quote>
                              <emph>true</emph>
                           </quote>.
In all other cases, including all cases where schema validity assessment was
not attempted or did not succeed, the
<emph role="dm-node-property">nilled</emph> property is <quote>
                              <emph>false</emph>
                           </quote>.</p>


                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">string-value</emph>
                     </label>

                     <def>

                        <p>The string-value is calculated as follows:</p>


                        <ulist>

                           <item>

                              <p>If the element is empty: its string value is the zero length string,
(<code>""</code>).
</p>

                           </item>


                           <item>

                              <p>If the element has a type of <code>xdt:untyped</code>, a complex
type with element-only content, or a complex type with mixed content: its
string-value is the concatenation of the <emph role="dm-node-property">string-value</emph>s of all its
Text Node descendants in document order.
</p>

                           </item>


                           <item>

                              <p>If the element has a simple type or a complex type with simple content:
its string-value is the <emph role="infoset-property">schema normalized value</emph>
of the node.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">typed-value</emph>
                     </label>

                     <def>

                        <p>The typed-value is calculated as follows:</p>


                        <ulist>

                           <item>

                              <p>If the element is of type <code>xdt:untyped</code>, its typed-value
is its <function>string-value</function> as an <code>xdt:untypedAtomic</code>.
</p>

                           </item>


                           <item>

                              <p>If the element is empty: its typed-value is the empty sequence.
</p>

                           </item>


                           <item>

                              <p>If the element has a simple type or a complex type with simple content:
its typed value is computed as described in <specref ref="TypedValueDetermination"/>.
The result is a sequence of zero or more atomic values derived from the
<emph role="dm-node-property">string-value</emph> of the node and its type in a way that is consistent with
XML Schema validation.
</p>

                              <p>Note that in the case of dates and times, the timezone is preserved
as described in <specref ref="dates-and-times"/>, and
in the case of <code>xs:QName</code>s and <code>xs:NOTATION</code>s,
the prefix is preserved as described in
<specref ref="qnames-and-notations"/>.</p>

                           </item>


                           <item>

                              <p>If the element has a complex type with mixed content, its typed-value
is its <function>string-value</function> as an <code>xdt:untypedAtomic</code>.
</p>

                           </item>


                           <item>

                              <p>Otherwise, the element must be a complex type with element-only content.
The typed-value of such an element is undefined.
Attempting to access this property with the
<function>typed-value</function> accessor always raises an error.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-id</emph>
                     </label>

                     <def>

                        <p>If the <emph role="dm-node-property">type-name</emph> is <code>xs:ID</code>, <code>true</code>, otherwise
<code>false</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-idrefs</emph>
                     </label>

                     <def>

                        <p>If the <emph role="dm-node-property">type-name</emph> is <code>xs:IDREF</code> or <code>xs:IDREFS</code>,
<code>true</code>, otherwise <code>false</code>.
</p>

                     </def>

                  </gitem>


               </glist>


               <p>All other properties have values that are consistent with construction
from an infoset.</p>

            </div3>


            <div3 id="infoset-mapping-element">

               <head>Infoset Mapping</head>


               <p>An Element Node maps to an <emph role="info-item">element information item</emph>.</p> 


               <p>The following properties are specified by this mapping:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">namespace name</emph>
                     </label>

                     <def>

                        <p>The namespace name of the value of <function>node-name</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">local name</emph>
                     </label>

                     <def>

                        <p>The local part of the value of <function>node-name</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">prefix</emph>
                     </label>

                     <def>

                        <p>The prefix associated with the value of <function>node-name</function>,
if it is known, otherwise <emph>not known</emph>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">children</emph>
                     </label>

                     <def>

                        <p>A list of information items obtained by processing each of the
<function>children</function> in order and mapping each to
the appropriate information item(s).
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">attributes</emph>
                     </label>

                     <def>

                        <p>A list of information items obtained by processing each of the
<function>attributes</function> and mapping each to
the appropriate information item(s).
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">in-scope namespaces</emph>
                     </label>

                     <def>

                        <p>An unordered set of <emph role="info-item">namespace information items</emph> constructed from the
<emph role="dm-node-property">namespaces</emph>.
</p>


                        <p>Each in-scope namespace maps to a <emph role="info-item">namespace information item</emph>. The
following properties are specified by this mapping:</p>


                        <glist>

                           <gitem>

                              <label>
                                 <emph role="infoset-property">prefix</emph>
                              </label>

                              <def>

                                 <p>The prefix associated with the namespace.
</p>

                              </def>

                           </gitem>

                           <gitem>

                              <label>
                                 <emph role="infoset-property">namespace name</emph>
                              </label>

                              <def>

                                 <p>The URI associated with the namespace.
</p>

                              </def>

                           </gitem>

                        </glist>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">base URI</emph>
                     </label>

                     <def>

                        <p>The value of <function>base-uri</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">parent</emph>
                     </label>

                     <def>

                        <ulist>

                           <item>

                              <p>If this node is the root of the infoset mapping operation,
<emph>unknown</emph>.</p>

                           </item>

                           <item>

                              <p>If this node has a parent, the information item that corresponds
to the node returned by <function>parent</function>.
</p>

                           </item>

                           <item>

                              <p>Otherwise <emph>no value</emph>.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>

               </glist>


               <p>The following property has no value:
<emph role="infoset-property">namespace attributes</emph>.</p>


            </div3>


         </div2>



         <div2 id="AttributeNode">
  
            <head>Attribute Nodes</head>


            <div3 id="AttributeNodeOverview">
  
               <head>Overview</head>

  
               <p>Attribute Nodes represent XML attributes. Attributes have the
following properties:</p>


               <ulist>

                  <item>
                     <p>
                        <emph role="dm-node-property">node-name</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">parent</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">type-name</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">string-value</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">typed-value</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">is-id</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">is-idrefs</emph>

                     </p>
                  </item>

               </ulist>


               <p>Attribute Nodes <rfc2119>must</rfc2119> satisfy the following constraints.</p>


               <olist>

                  <item>
                     <p>If an Attribute Node <emph>A</emph> is among the <emph role="dm-node-property">attributes</emph>
of an element <emph>E</emph>, then the <emph role="dm-node-property">parent</emph> of <emph>A</emph>

                        <rfc2119>must</rfc2119> be <emph>E</emph>.
</p>

                  </item>

                  <item>
                     <p>If a Attribute Node <emph>A</emph> has a parent element
<emph>E</emph>, then <emph>A</emph> 
                        <rfc2119>must</rfc2119> be among
the <emph role="dm-node-property">attributes</emph> of <emph>E</emph>.</p>

                     <p>The data model permits Attribute Nodes without parents
(to represent partial results during expression processing, for example).
Such attributes <rfc2119>must not</rfc2119>
appear among the <emph role="dm-node-property">attributes</emph> of any Element Node.
</p>

                  </item>

               </olist>


               <p>For convenience, the Element Node that owns this attribute is called
its "parent" even though an Attribute Node is not a "child" of its
parent element. </p>


            </div3>


            <div3 id="AttributeNodeAccessors">
  
               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>If the attribute has a parent, returns the value of the
<function>base-uri</function> of its parent; otherwise it returns
the empty sequence.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">is-id</emph>
property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">is-idrefs</emph>
property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>attribute</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">node-name</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">parent</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">string-value</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">type-name</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">typed-value</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>

               </glist>


            </div3>


            <div3 id="const-infoset-attribute">

               <head>Construction from an Infoset</head>


               <p>The <emph role="info-item">attribute information items</emph> are
required. An Attribute Node is constructed for each
<emph role="info-item">attribute information item</emph>.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">namespace name</emph>,
<emph role="infoset-property">local name</emph>,
<emph role="infoset-property">normalized value</emph>,
<emph role="infoset-property">attribute type</emph>, and
<emph role="infoset-property">owner element</emph>.</p>


               <p>Attribute Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">node-name</emph>
                     </label>

                     <def>

                        <p>An <code>xs:QName</code> constructed from the
<emph role="infoset-property">local name</emph> property
and the
<emph role="infoset-property">namespace name</emph> property</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">parent</emph>
                     </label>

                     <def>

                        <p>The Element Node that corresponds to the value of the
<emph role="infoset-property">owner element</emph> property.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">type-name</emph>
                     </label>

                     <def>

                        <p>The value <code>xdt:untypedAtomic</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">string-value</emph>
                     </label>

                     <def>
                        <p>The <emph role="infoset-property">normalized value</emph> of the
attribute.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">typed-value</emph>
                     </label>

                     <def>

                        <p>The attribute’s typed-value
is its <function>string-value</function> as an <code>xdt:untypedAtomic</code>.
</p>
<!--
<p>The typed-value is calculated as follows:</p>

<ulist>
<item>
<p>If the attribute is of type <code>xdt:untypedAtomic</code>: its typed-value
is its <function>string-value</function> as an <code>xdt:untypedAtomic</code>.
</p>
</item>
<item>
<p>Otherwise: its typed-value is a sequence of zero or more atomic
values derived from the &dm.prop.string-value; of the node and its type in a way
that is consistent with XML Schema validation.</p>
<p>Note that in the case of dates and times, the timezone is preserved
as described in <specref ref="dates-and-times"/>, and
in the case of <code>xs:QName</code>s and <code>xs:NOTATION</code>s,
the prefix is preserved as described in
<specref ref="qnames-and-notations"/>.</p>
</item>
</ulist>
-->

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-id</emph>
                     </label>

                     <def>

                        <p>If the attribute is named <att>xml:id</att> and its
<emph role="infoset-property">attribute type</emph> property does not
have the value <code>ID</code>, then <bibref ref="xml-id"/> processing
is performed. This will assure that the value does have the type <code>ID</code>
and that it is properly normalized. The
<emph role="dm-node-property">is-id</emph> is always <code>true</code> for
attributes named <att>xml:id</att>.</p>


                        <p>If the <emph role="infoset-property">attribute type</emph> property
has the value <code>ID</code>, <code>true</code>, otherwise <code>false</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-idrefs</emph>
                     </label>

                     <def>

                        <p>If the <emph role="infoset-property">attribute type</emph> property
has the value <code>IDREF</code> or <code>IDREFS</code>,
<code>true</code>, otherwise <code>false</code>.
</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-psvi-attribute">

               <head>Construction from a PSVI</head>


               <p>The following Attribute Node properties are affected by PSVI properties.</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">string-value</emph>
                     </label>

                     <def>

                        <ulist>

                           <item>
                              <p>The <emph role="infoset-property">schema normalized value</emph>
PSVI property if that exists.
</p>
                           </item>

                           <item>
                              <p>Otherwise, the <emph role="infoset-property">normalized value</emph> property.
</p>
                           </item>

                        </ulist>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">type-name</emph>
                     </label>

                     <def>

                        <p>If this attribute, or any of its ancestors, has the <emph role="dm-node-property">type-name</emph>

                           <code>xdt:untyped</code>, <code>xdt:untypedAtomic</code>.
Otherwise, the <emph role="dm-node-property">type-name</emph> is
determined as described in <specref ref="PSVI2NodeTypes"/>.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">typed-value</emph>
                     </label>

                     <def>

                        <p>The typed-value is calculated as follows:</p>


                        <ulist>

                           <item>

                              <p>If the attribute is of type <code>xdt:untypedAtomic</code>: its typed-value
is its <function>string-value</function> as an <code>xdt:untypedAtomic</code>.
</p>

                           </item>

                           <item>

                              <p>Otherwise:
its typed-value is a sequence of zero or more atomic values derived from the
<emph role="dm-node-property">string-value</emph> of the node and its type in a way that is consistent with
XML Schema validation. The type of each
atomic value is assigned as described in
<specref ref="TypedValueDetermination"/>.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-id</emph>
                     </label>

                     <def>

                        <p>If the attribute is named <att>xml:id</att> and its
<emph role="infoset-property">attribute type</emph> property does not
have the value <code>ID</code>, then <bibref ref="xml-id"/> processing
is performed. This will assure that the value does have the type <code>ID</code>
and that it is properly normalized. The
<emph role="dm-node-property">is-id</emph> is always <code>true</code> for
attributes named <att>xml:id</att>.</p>


                        <p>If the <emph role="dm-node-property">type-name</emph> is <code>xs:ID</code>, <code>true</code>, otherwise
<code>false</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">is-idrefs</emph>
                     </label>

                     <def>

                        <p>If the <emph role="dm-node-property">type-name</emph> is <code>xs:IDREF</code> or <code>xs:IDREFS</code>,
<code>true</code>, otherwise <code>false</code>.
</p>

                     </def>

                  </gitem>

               </glist>


               <p>All other properties have values that are consistent with construction
from an infoset.</p>


               <p>Note: attributes from the XML Schema instance namespace,
<quote>
                     <code>http://www.w3.org/2001/XMLSchema-instance</code>
                  </quote>,
(<att>xsi:schemaLocation</att>,
<att>xsi:type</att>, etc.) appear as ordinary attributes in the data model.
</p>

            </div3>


            <div3 id="infoset-mapping-attribute">

               <head>Infoset Mapping</head>


               <p>An Attribute Node maps to an <emph role="info-item">attribute information item</emph>.</p> 


               <p>The following properties are specified by this mapping:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">namespace name</emph>
                     </label>

                     <def>

                        <p>The namespace name of the value of <function>node-name</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">local name</emph>
                     </label>

                     <def>

                        <p>The local part of the value of <function>node-name</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">prefix</emph>
                     </label>

                     <def>

                        <p>The prefix associated with the value of <function>node-name</function>,
if it is known, otherwise <emph>unknown</emph>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">normalized value</emph>
                     </label>

                     <def>

                        <p>The value of <function>string-value</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">owner element</emph>
                     </label>

                     <def>

                        <ulist>

                           <item>

                              <p>If this node has a parent, the information item that corresponds
to the node returned by <function>parent</function>.
</p>

                           </item>

                           <item>

                              <p>Otherwise <emph>no value</emph>.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>

               </glist>


               <p>The following properties have no value:
<emph role="infoset-property">specified</emph>

                  <emph role="infoset-property">attribute type</emph>

                  <emph role="infoset-property">references</emph>.</p>


            </div3>

         </div2>


         <div2 id="NamespaceNode">
  
            <head>Namespace Nodes</head>


            <div3 id="NamespaceNodeOverview">
  
               <head>Overview</head>


               <p>Each Namespace Node represents the binding of a namespace URI to a 
namespace prefix or to the default namespace. Implementations that do not 
use Namespace Nodes may represent the same information using the 
<emph role="dm-node-property">namespaces</emph> property of
an element node.
Namespaces have the
following properties:</p>


               <ulist>

                  <item>
                     <p>
                        <emph role="dm-node-property">prefix</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">uri</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">parent</emph>, possibly empty
</p>
                  </item>

               </ulist>


               <p>Namespace Nodes <rfc2119>must</rfc2119> satisfy the following constraints.</p>


               <olist>

                  <item>
                     <p>If a Namespace Node <emph>N</emph> is among the namespaces
of an element <emph>E</emph>, then the parent of <emph>N</emph>, if it has one,
<rfc2119>must</rfc2119> be <emph>E</emph>.</p>

                  </item>

                  <item>
                     <p>If a Namespace Node <emph>N</emph> has a parent element
<emph>E</emph>, then <emph>N</emph> 
                        <rfc2119>must</rfc2119> be among
the namespaces of <emph>E</emph>.</p>

                  </item>

               </olist>


               <p>The data model permits Namespace Nodes without parents, see below.
</p>


               <p>In XPath 1.0, Namespace Nodes were directly accessible by applications, by
means of the namespace axis. In XPath 2.0 the namespace axis is deprecated,
and it is not available at all in XQuery 1.0. XPath 2.0 implementations are
not required to expose the namespace axis, though they may do so if they
wish to offer backwards compatibility.</p>


               <p>The information held in namespace
nodes is instead made available to applications using functions defined
in <bibref ref="xpath-functions"/>. Some properties of Namespace Nodes are
not exposed by these functions: in particular, properties related to the
identity of Namespace Nodes, their parentage, and their position in document
order. Implementations that do not expose the namespace axis can therefore
avoid the overhead of maintaining this information.</p>


               <p>Implementations that expose the namespace axis <rfc2119>must</rfc2119> provide unique
Namespace Nodes for each element.
Each element has an associated set of Namespace Nodes, one for each
distinct namespace prefix that is in scope for the element (including
the <code>xml</code> prefix, which is implicitly declared by
<bibref ref="REC-xml-names"/> and one for the default
namespace if one is in scope for the element. The element is the
parent of each of these Namespace Nodes; however, a Namespace Node is
not a child of its parent element. In implementations that expose the
namespace axis, elements never share namespace
nodes.</p>


               <note>

                  <p>In implementations that do not expose the namespace axis, there is no
means by which the host language can tell if namespace nodes are shared or not
and, in such circumstances, sharing namespace nodes may be a very reasonable
implementation strategy.</p>

               </note>


            </div3>


            <div3 id="NamespaceNodeAccessors">
  
               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>namespace</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>If the <emph role="dm-node-property">prefix</emph> is available,
returns an <code>xs:QName</code> with the value of the <emph role="dm-node-property">prefix</emph> property
in the local-name and an empty namespace name, otherwise returns
the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">parent</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">uri</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">uri</emph> property as an
<code>xs:string</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-infoset-namespace">

               <head>Construction from an Infoset</head>


               <p>The <emph role="info-item">namespace information items</emph> are
required.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">prefix</emph>,
<emph role="infoset-property">namespace name</emph>.</p>


               <p>Namespace Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>
  
                     <label>
                        <emph role="dm-node-property">prefix</emph>
                     </label>
  
                     <def>
    
                        <p>The <emph role="infoset-property">prefix</emph> property.</p>
  
                     </def>

                  </gitem>

                  <gitem>
  
                     <label>
                        <emph role="dm-node-property">uri</emph>
                     </label>
  
                     <def>
    
                        <p>The <emph role="infoset-property">namespace name</emph> property.</p>
  
                     </def>

                  </gitem>

                  <gitem>
  
                     <label>
                        <emph role="dm-node-property">parent</emph>
                     </label>
  
                     <def>
    
                        <p>The element in whose <emph role="info-item">in-scope namespaces</emph> 
property the <emph role="info-item">namespace information item</emph> appears, if the implementation
exposes any mechanism for accessing the <function>parent</function>
accessor of Namespace Nodes.</p>
  
                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-psvi-namespace">

               <head>Construction from a PSVI</head>

               <p>Construction from a PSVI is identical to construction
from the Infoset.</p>

            </div3>


            <div3 id="infoset-mapping-namespace">

               <head>Infoset Mapping</head>


               <p>A Namespace Node maps to a <emph role="info-item">namespace information item</emph>.</p> 


               <p>The following properties are specified by this mapping:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">prefix</emph>
                     </label>

                     <def>

                        <p>The prefix associated with the namespace.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">namespace name</emph>
                     </label>

                     <def>

                        <p>The value of <function>string-value</function>.
</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


         </div2>

         <div2 id="ProcessingInstructionNode">
  
            <head>Processing Instruction Nodes</head>


            <div3 id="ProcessingInstructionNodeOverview">

               <head>Overview</head>


               <p>Processing Instruction Nodes encapsulate XML processing instructions.
Processing instructions have the following properties:</p>


               <ulist>

                  <item>
                     <p>
                        <emph role="dm-node-property">target</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">content</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">base-uri</emph>, possibly empty
</p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">parent</emph>, possibly empty
</p>
                  </item>

               </ulist>


               <p>Processing Instruction Nodes <rfc2119>must</rfc2119> satisfy the following constraints.</p>


               <olist>

                  <item>
                     <p>The string <quote>?&gt;</quote> 
                        <rfc2119>must not</rfc2119> occur within the
<emph role="dm-node-property">content</emph>.</p>

                  </item>

                  <item>
                     <p>The <emph role="dm-node-property">target</emph> 
                        <rfc2119>must</rfc2119> be an <code>NCName</code>.
</p>

                  </item>

               </olist>


            </div3>


            <div3 id="ProcessingInstructionNodeAccessors">

               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">base-uri</emph> property if it exists and
is not empty. Otherwise, if the processing instruction has a parent,
returns the value of the <function>base-uri</function> of its parent;
otherwise, returns the empty sequence.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>processing-instruction</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>Returns an <code>xs:QName</code> with the value of the <emph role="dm-node-property">target</emph>
property in the local-name and an empty namespace URI and empty prefix.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">parent</emph> property.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">content</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">content</emph> property as a
<code>xs:string</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>

               </glist>

            </div3>

            <div3 id="const-infoset-pi">

               <head>Construction from an Infoset</head>


               <p>A Processing Instruction Node is constructed for each
<emph role="info-item">processing instruction information item</emph> that
is not ignored.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">target</emph>,
<emph role="infoset-property">content</emph>,
<emph role="infoset-property">base URI</emph>, and
<emph role="infoset-property">parent</emph>.</p>


               <p>Processing Instruction Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">target</emph>
                     </label>

                     <def>

                        <p>The value of the <emph role="infoset-property">target</emph> property.</p>

                        <p>The <emph role="dm-node-property">target</emph> must be an NCName. It is an error if the
<emph role="infoset-property">target</emph> property in the Infoset does
not conform to an NCName; the processor may recover from this error by
ignoring the entire processing instruction. It must not create a
Processing Instruction Node for such a processing instruction.</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">content</emph>
                     </label>

                     <def>

                        <p>The value of the <emph role="infoset-property">content</emph> property.</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">base-uri</emph>
                     </label>

                     <def>

                        <p>The value of the <emph role="infoset-property">base URI</emph> property.</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">parent</emph>
                     </label>

                     <def>

                        <p>The node corresponding to the value of the
<emph role="infoset-property">parent</emph> property.</p>

                     </def>

                  </gitem>

               </glist>


               <p>There are no Processing Instruction Nodes for processing instructions
that are children of a
<emph role="info-item">document type declaration information item</emph>.</p>


            </div3>


            <div3 id="const-psvi-pi">

               <head>Construction from a PSVI</head>

               <p>Construction from a PSVI is identical to construction
from the Infoset.</p>

            </div3>


            <div3 id="infoset-mapping-processing-instruction">

               <head>Infoset Mapping</head>


               <p>An Processing Instruction Node maps to a
<emph role="info-item">processing instruction information item</emph>.</p> 


               <p>The following properties are specified by this mapping:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">target</emph>
                     </label>

                     <def>

                        <p>The local part of the value of <function>node-name</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">content</emph>
                     </label>

                     <def>

                        <p>The value of <function>string-value</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">base URI</emph>
                     </label>

                     <def>

                        <p>The value of <function>base-uri</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">parent</emph>
                     </label>

                     <def>

                        <ulist>

                           <item>

                              <p>If this node is the root of the infoset mapping operation,
<emph>unknown</emph>.</p>

                           </item>

                           <item>

                              <p>If this node has a parent, the information item that corresponds
to the node returned by <function>parent</function>.
</p>

                           </item>

                           <item>

                              <p>Otherwise <emph>no value</emph>.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>

               </glist>


               <p>The following property has no value:
<emph role="infoset-property">notation</emph>.</p>


            </div3>


         </div2>

         <div2 id="CommentNode">
  
            <head>Comment Nodes</head>


            <div3 id="CommentNodeOverview">

               <head>Overview</head>


               <p>Comment Nodes encapsulate XML comments. Comments have the following properties:
</p>


               <ulist>

                  <item>
                     <p>
                        <emph role="dm-node-property">content</emph>

                     </p>
                  </item>

                  <item>
                     <p>
                        <emph role="dm-node-property">parent</emph>, possibly empty
</p>
                  </item>

               </ulist>


               <p>Comment Nodes <rfc2119>must</rfc2119> satisfy the following constraints.</p>


               <olist>

                  <item>
                     <p>The string <quote>--</quote> 
                        <rfc2119>must not</rfc2119> occur within the
<emph role="dm-node-property">content</emph>.</p>

                  </item>

                  <item>
                     <p>The character <quote>-</quote> 
                        <rfc2119>must not</rfc2119> occur as the
last character of the
<emph role="dm-node-property">content</emph>.</p>

                  </item>

               </olist>

            </div3>


            <div3 id="CommentNodeAccessors">
  
               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>If the comment has a parent, returns the value of the
<function>base-uri</function> of its parent; otherwise, returns
the empty sequence.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>comment</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">parent</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">content</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">content</emph> property as a
<code>xs:string</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-infoset-comment">

               <head>Construction from an Infoset</head>


               <p>The <emph role="info-item">comment information items</emph> are
optional.</p>


               <p>A Comment Node is constructed for each
<emph role="info-item">comment information item</emph>.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">content</emph> and
<emph role="infoset-property">parent</emph>.</p>


               <p>Comment Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>
  
                     <label>
                        <emph role="dm-node-property">content</emph>
                     </label>
  
                     <def>
    
                        <p>The value of the <emph role="infoset-property">content</emph> property.</p>
  
                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">parent</emph>
                     </label>

                     <def>

                        <p>The node corresponding to the value of the
<emph role="infoset-property">parent</emph> property.</p>

                     </def>

                  </gitem>

               </glist>


               <p>There are no Comment Nodes for comments that are children of a
<emph role="info-item">document type declaration information item</emph>.</p>

            </div3>


            <div3 id="const-psvi-comment">

               <head>Construction from a PSVI</head>

               <p>Construction from a PSVI is identical to construction
from the Infoset.</p>

            </div3>


            <div3 id="infoset-mapping-comment">

               <head>Infoset Mapping</head>


               <p>A Comment Node maps to a <emph role="info-item">comment information item</emph>.</p> 


               <p>The following properties are specified by this mapping:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">content</emph>
                     </label>

                     <def>

                        <p>The value of the <function>string-value</function>.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">parent</emph>
                     </label>

                     <def>

                        <ulist>

                           <item>

                              <p>If this node is the root of the infoset mapping operation,
<emph>unknown</emph>.</p>

                           </item>

                           <item>

                              <p>If this node has a parent, the information item that corresponds
to the node returned by <function>parent</function>.
</p>

                           </item>

                           <item>

                              <p>Otherwise <emph>no value</emph>.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>

               </glist>

            </div3>


         </div2>

         <div2 id="TextNode">
  
            <head>Text Nodes</head>


            <div3 id="TextNodeOverview">
  
               <head>Overview</head>


               <p>Text Nodes encapsulate XML character content. Text has the following properties:
</p>

  
               <ulist>
  
                  <item>
                     <p>
                        <emph role="dm-node-property">content</emph>, possibly empty.
  </p>
                  </item>
  
                  <item>
                     <p>
                        <emph role="dm-node-property">parent</emph>, possibly empty.
  </p>
                  </item>
  
               </ulist>


               <p>Text Nodes <rfc2119>must</rfc2119> satisfy the following constraint:</p>


               <olist>

                  <item>
                     <p>If the <emph role="dm-node-property">parent</emph> of a text node is not empty,
the Text Node <rfc2119>must not</rfc2119> contain the zero-length string
as its
<emph role="dm-node-property">content</emph>.
</p>
                  </item>

               </olist>


               <p>In addition, Document and Element Nodes impose the constraint that
two consecutive Text Nodes can never occur as adjacent siblings.
When a Document or Element Node is constructed, Text Nodes that would
be adjacent are combined into a single Text Node. If the resulting Text Node
is empty, it is never placed among the children of its parent, it is simply
discarded.
</p>


            </div3>


            <div3 id="TextNodeAccessors">
  
               <head>Accessors</head>


               <glist role="accessors">

                  <gitem>

                     <label>
                        <function>attributes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>base-uri</function>
                     </label>

                     <def>

                        <p>If the Text Node has a parent, returns the value of the
<function>base-uri</function> of its parent; otherwise, returns
the empty sequence.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>children</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>document-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-id</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>is-idrefs</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-bindings</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>namespace-nodes</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>nilled</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-kind</function>
                     </label>

                     <def>

                        <p>Returns “<code>text</code>”.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>node-name</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>parent</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">parent</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>string-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">content</emph> property.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>type-name</function>
                     </label>

                     <def>

                        <p>Returns <code>xdt:untypedAtomic</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>typed-value</function>
                     </label>

                     <def>

                        <p>Returns the value of the <emph role="dm-node-property">content</emph> property as an
<code>xdt:untypedAtomic</code>.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-public-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <function>unparsed-entity-system-uri</function>
                     </label>

                     <def>

                        <p>Returns the empty sequence.
</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-infoset-text">

               <head>Construction from an Infoset</head>


               <p>The <emph role="info-item">character information items</emph> are
required. A Text Node is constructed for each maximal sequence of
<emph role="info-item">character information items</emph> in document order.</p>


               <p>The following infoset properties are required:
<emph role="infoset-property">character code</emph> and
<emph role="infoset-property">parent</emph>.</p>


               <p>The following infoset properties are optional:
<emph role="infoset-property">element content white space</emph>.</p>


               <p>A sequence of
<emph role="info-item">character information items</emph> is maximal
if it satisfies the following constraints:</p>


               <olist>

                  <item>
                     <p>All of the information items in the sequence have the same parent.</p>

                  </item>

                  <item>
                     <p>The sequence consists of adjacent
<emph role="info-item">character information items</emph>
uninterrupted by other types of information item.</p>

                  </item>

                  <item>
                     <p>No other such sequence exists that contains any of the same
<emph role="info-item">character information items</emph> and is longer.</p>

                  </item>

               </olist>


               <p>Text Node properties are derived from the infoset as
follows:</p>


               <glist>

                  <gitem>

                     <label>
                        <emph role="dm-node-property">content</emph>
                     </label>

                     <def>

                        <p>A string comprised of characters that correspond to the
<emph role="infoset-property">character code</emph> properties of
each of the <emph role="info-item">character information items</emph>.</p>


                        <p>If the resulting Text Node consists entirely of white space and the
Text Node occurs in
<xtermref spec="XML" ref="dt-elemcontent"/>,
the <emph role="dm-node-property">content</emph> of the Text Node
is the zero-length string. Text Nodes are only allowed to be empty if they
have no parents; an empty Text Node will be discarded when its parent
is constructed, if it has a parent.</p>


                        <p>The content of the Text Node is not necessarily normalized as
described in the <bibref ref="charmod"/>. It is the
responsibility of data producers to provide normalized
text, and the responsibility of applications to make sure that
operations do not de-normalize text.</p>

                     </def>

                  </gitem>


                  <gitem>

                     <label>
                        <emph role="dm-node-property">parent</emph>
                     </label>

                     <def>

                        <p>The node corresponding to the value of the
<emph role="infoset-property">parent</emph> property.</p>

                     </def>

                  </gitem>

               </glist>

            </div3>


            <div3 id="const-psvi-text">

               <head>Construction from a PSVI</head>


               <p>For Text Nodes constructed from the
<emph role="infoset-property">schema normalized value</emph> of elements,
<emph role="dm-node-property">content</emph> contains the value of the
<emph role="infoset-property">schema normalized value</emph>.</p>


               <p>Otherwise, construction from a PSVI is the same as construction
from the Infoset. In the PSVI, element content occurs where the
{content type} of the element containing the text is not “<code>mixed</code>”.
</p>


               <p>Text Nodes are only allowed to be empty if they
have no parents; an empty Text Node will be discarded when its parent
is constructed, if it has a parent.</p>


            </div3>


            <div3 id="infoset-mapping-text">

               <head>Infoset Mapping</head>


               <p>A Text Node maps to a sequence of <emph role="info-item">character information items</emph>.</p>


               <p>Each
character of the <function>string-value</function> of the node is converted
into a <emph role="info-item">character information item</emph> as specified by this mapping:</p> 


               <glist>

                  <gitem>

                     <label>
                        <emph role="infoset-property">character code</emph>
                     </label>

                     <def>

                        <p>The Unicode code point value of the character.
</p>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">parent</emph>
                     </label>

                     <def>

                        <ulist>

                           <item>

                              <p>If this node is the root of the infoset mapping operation,
<emph>unknown</emph>.</p>

                           </item>

                           <item>

                              <p>If this node has a parent, the information item that corresponds
to the node returned by <function>parent</function>.
</p>

                           </item>

                           <item>

                              <p>Otherwise <emph>no value</emph>.
</p>

                           </item>

                        </ulist>

                     </def>

                  </gitem>

                  <gitem>

                     <label>
                        <emph role="infoset-property">element content whitespace</emph>
                     </label>

                     <def>

                        <p>Unknown.
</p>

                     </def>

                  </gitem>

               </glist>


               <p>This sequence of characters constitutes the infoset mapping.</p>

            </div3>


         </div2>


      </div1>


      <div1 id="conformance">

         <head>Conformance</head>


         <p>The data model is intended primarily as a component that can be
used by other specifications. Therefore, the data model relies on
specifications that use it (such as <bibref ref="xpath20"/>, <bibref ref="xslt20"/>, and <bibref ref="xquery"/>) to specify conformance
criteria for the data model in their respective environments.
Specifications that set conformance criteria for their use of the data
model must not relax the constraints expressed in this
specification.</p>


         <p>Authors of conformance criteria for the use of the data
model should pay particular attention to the following features of
the data model:</p>


         <olist>

            <item>

               <p>Support for the normative construction from an infoset described in
<specref ref="const-infoset"/>.
</p>

            </item>

            <item>

               <p>Support for the normative construction from a PSVI described in
<specref ref="const-psvi"/>.
</p>

            </item>

            <item>

               <p>Support for XML 1.0 and XML 1.1.
</p>

            </item>

            <item>

               <p>How namespaces are supported, through nodes or through
the alternative, 
implementation-defined representation.</p>

            </item>

         </olist>


      </div1>


   </body>


   <back>

      <div1>

         <head>XML Information Set Conformance</head>


         <p>This specification conforms to the XML Information Set <bibref ref="xml-infoset"/>.
The following information items <rfc2119>must</rfc2119> be exposed
by the infoset producer to construct a data model unless they are explicitly
identified as optional:</p>


         <ulist>
  
            <item>
               <p>The <emph role="info-item">Document Information Item</emph> with
           <emph role="infoset-property">base URI</emph> and
           <emph role="infoset-property">children</emph> properties.</p>
            </item>

  
            <item>
               <p>
                  <emph role="info-item">Element Information Items</emph> with
           <emph role="infoset-property">base URI</emph>,
           <emph role="infoset-property">children</emph>,
           <emph role="infoset-property">attributes</emph>,
           <emph role="infoset-property">in-scope namespaces</emph>,
           <emph role="infoset-property">local name</emph>,
           <emph role="infoset-property">namespace name</emph>,
           <emph role="infoset-property">parent</emph> properties.</p>
            </item>

  
            <item>
               <p>
                  <emph role="info-item">Attribute Information Items</emph> with
           <emph role="infoset-property">namespace name</emph>,
           <emph role="infoset-property">local name</emph>,
           <emph role="infoset-property">normalized value</emph>,
           <emph role="infoset-property">attribute type</emph>, and
           <emph role="infoset-property">owner element</emph> properties.</p>
            </item>

  
            <item>
               <p>
                  <emph role="info-item">Character Information Items</emph> with
           <emph role="infoset-property">character code</emph> and
           <emph role="infoset-property">parent</emph> properties.</p>
            </item>

  
            <item>
               <p>
                  <emph role="info-item">Processing Instruction Information Items</emph> with
           <emph role="infoset-property">base URI</emph>,
           <emph role="infoset-property">target</emph>,
           <emph role="infoset-property">content</emph> and
           <emph role="infoset-property">parent</emph> properties.</p>
            </item>

  
            <item>
               <p>
                  <emph role="info-item">Comment Information Items</emph> with
           <emph role="infoset-property">content</emph> and
           <emph role="infoset-property">parent</emph> properties.</p>
            </item>

  
            <item>
               <p>
                  <emph role="info-item">Namespace Information Items</emph> with
           <emph role="infoset-property">prefix</emph> (optional) and
           <emph role="infoset-property">namespace name</emph> properties.</p>
            </item>

         </ulist>


         <p>Other information items and properties made available by the
Infoset processor are ignored.  In addition to the properties above,
the following properties are required from the PSVI if the data model is
constructed from a PSVI:</p>


         <ulist>
  
            <item>
               <p>
                  <emph role="infoset-property">validity</emph>,
  <emph role="infoset-property">type definition</emph>,
  <emph role="infoset-property">type definition namespace</emph>,
  <emph role="infoset-property">type definition name</emph>,
  <emph role="infoset-property">type definition anonymous</emph>,
  <emph role="infoset-property">member type definition</emph>,
  <emph role="infoset-property">member type definition namespace</emph>,
  <emph role="infoset-property">member type definition name</emph>,
  <emph role="infoset-property">member type definition anonymous</emph> and
  <emph role="infoset-property">schema normalized value</emph> properties on
  <emph role="info-item">Element Information Items</emph>.</p>
            </item>

  
            <item>
               <p>
                  <emph role="infoset-property">validity</emph>,
  <emph role="infoset-property">type definition</emph>,
  <emph role="infoset-property">type definition namespace</emph>,
  <emph role="infoset-property">type definition name</emph>,
  <emph role="infoset-property">type definition anonymous</emph>,
  <emph role="infoset-property">member type definition</emph>,
  <emph role="infoset-property">member type definition namespace</emph>,
  <emph role="infoset-property">member type definition name</emph>,
  <emph role="infoset-property">member type definition anonymous</emph> and
  <emph role="infoset-property">schema normalized value</emph> properties on
  <emph role="info-item">Attribute Information Items</emph>.</p>
            </item>

         </ulist>


      </div1>


      <div1 id="references">

         <head>References</head>


         <div2 id="normative-references">

            <head>Normative References</head>


            <blist>

<!--FIXME: update ../etc/tr with the latest TR page info! -->


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-infoset" key="Infoset" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="REC-xml-names" key="Namespaces in XML" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-names11" key="Namespaces in XML 1.1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-id" key="xml:id" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xpath20" key="XPath 2.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/TR/xpath20" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Path Language
(XPath) 2.0</titleref>,
Mary F. Fernández, Michael Kay, Jonathan Robie, et. al., Editors.
World Wide Web Consortium, 29 Oct 2004.
This version is http://www.w3.org/TR/2004/WD-xpath20-20041029.
The latest version is available at http://www.w3.org/TR/xpath20.</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xpath-functions" key="Functions and Operators" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/TR/xpath-functions" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XQuery 1.0 and
XPath 2.0 Functions and Operators</titleref>,
Ashok Malhotra, Jim Melton, and Norman Walsh, Editors.
World Wide Web Consortium, 29 Oct 2004.
This version is http://www.w3.org/TR/2004/WD-xpath-functions-20041029/.
The latest version is available at http://www.w3.org/TR/xpath-functions/.</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xmlschema-1" key="Schema Part 1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xmlschema-2" key="Schema Part 2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xslt-xquery-serialization" key="Serialization" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/TR/xslt-xquery-serialization/" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XSLT 2.0
and XQuery 1.0 Serialization</titleref>,
Michael Kay, Norman Walsh, and Henry Zongaro, Editors.
World Wide Web Consortium, 29 Oct 2004.
This version is http://www.w3.org/TR/2004/WD-xslt-xquery-serialization-20041029/.
The latest version is available at http://www.w3.org/TR/xslt-xquery-serialization/.
</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xquery-semantics" key="Formal Semantics" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="RFC2119" key="RFC 2119" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="charmod" key="Character Model" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>


            </blist>

         </div2>


         <div2 id="informative-references">

            <head>Other References</head>


            <blist>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XQDM00" key="XML Query Data Model" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/TR/2001/WD-query-datamodel-20010215/" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Query Data Model</titleref>,
Mary Fernández and Jonathan Robie, Editors.
World Wide Web Consortium,
15 Feb 2001.
</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xmlbase" key="XML Base" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xpath" key="XPath 1.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xpath20req" key="XPath 2.0 Requirements" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>

               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xslt20" key="XSLT 2.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XQWG" key="XML Query Working Group" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/XML/Query" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XML Query Working Group</titleref>,
World Wide Web Consortium.
Home page: http://www.w3.org/XML/Query
</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="XSLWG" key="XSL Working Group" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/Style/XSL/" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XSL Working Group</titleref>,
World Wide Web Consortium.
Home page: http://www.w3.org/Style/XSL/
</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xquery" key="XQuery" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">

                  <titleref href="http://www.w3.org/TR/xquery" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">XQuery 1.0:
An XML Query Language</titleref>,
Daniela Florescu, Jonathan Robie, Jérôme Siméon, et. al., Editors.
World Wide Web Consortium, 29 Oct 2004.
This version is http://www.w3.org/TR/2004/WD-xquery-20041029/.
The latest version is available at http://www.w3.org/TR/xquery.</bibl>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xquery-requirements" key="XML Query Requirements" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest"/>


               <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="ISO8601" key="ISO 8601" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">ISO (International Organization for Standardization).
<emph>Representations of dates and times, 2000-08-03.</emph>  
Available from: <loc href="http://www.iso.ch/" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.iso.ch/</loc>

               </bibl>


            </blist>

         </div2>

      </div1>


      <inform-div1 id="glossary">

         <head>Glossary</head>
<?glossary?>

      </inform-div1>


      <inform-div1 id="example">

         <head>Example</head>


         <p>The following XML document is used to illustrate the information
contained in a data model:</p>


         <eg xml:space="preserve">&lt;?xml version="1.0"?&gt;
&lt;?xml-stylesheet type="text/xsl" href="dm-example.xsl"?&gt;
&lt;catalog xmlns="http://www.example.com/catalog"
         xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.example.com/catalog
                             dm-example.xsd"
         xml:lang="en"
         version="0.1"&gt;

&lt;!-- This example is for data model illustration only.
     It does not demonstrate good schema design. --&gt;

&lt;tshirt code="T1534017" label=" Staind : Been Awhile "
        xlink:href="http://example.com/0,,1655091,00.html"
        sizes="M L XL"&gt;
  &lt;title&gt; Staind: Been Awhile Tee Black (1-sided) &lt;/title&gt;
  &lt;description&gt;
    &lt;html:p&gt;
      Lyrics from the hit song 'It's Been Awhile'
      are shown in white, beneath the large
      'Flock &amp;amp; Weld' Staind logo.
    &lt;/html:p&gt;
  &lt;/description&gt;
  &lt;price&gt; 25.00 &lt;/price&gt;
&lt;/tshirt&gt;

&lt;album code="A1481344" label=" Staind : Its Been A While "
       formats="CD"&gt;
  &lt;title&gt; It's Been A While &lt;/title&gt;
  &lt;description xsi:nil="true" /&gt;
  &lt;price currency="USD"&gt; 10.99 &lt;/price&gt;
  &lt;artist&gt; Staind &lt;/artist&gt;
&lt;/album&gt;

&lt;/catalog&gt;
</eg>

<p>The document is associated with the URI
<quote>http://www.example.com/catalog.xml</quote>,
and is valid with respect to the following XML schema:</p>

<eg xml:space="preserve">&lt;?xml version="1.0"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:cat="http://www.example.com/catalog"
           xmlns:xlink="http://www.w3.org/1999/xlink"
           targetNamespace="http://www.example.com/catalog"
           elementFormDefault="qualified"&gt;

&lt;xs:import namespace="http://www.w3.org/XML/1998/namespace"
           schemaLocation="http://www.w3.org/2001/xml.xsd" /&gt;

&lt;xs:import namespace="http://www.w3.org/1999/xlink"
           schemaLocation="http://www.cs.rpi.edu/~puninj/XGMML/xlinks-2001.xsd" /&gt;

&lt;xs:element name="catalog"&gt;
  &lt;xs:complexType&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element ref="cat:_item" maxOccurs="unbounded" /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name="version" type="xs:string" fixed="0.1" use="required" /&gt;
    &lt;xs:attribute ref="xml:base" /&gt;
    &lt;xs:attribute ref="xml:lang" /&gt;
  &lt;/xs:complexType&gt;
&lt;/xs:element&gt;

&lt;xs:element name="_item" type="cat:itemType" abstract="true" /&gt;

&lt;xs:complexType name="itemType"&gt;
  &lt;xs:sequence&gt;
    &lt;xs:element name="title" type="xs:token" /&gt;
    &lt;xs:element name="description" type="cat:description" nillable="true" /&gt;
    &lt;xs:element name="price" type="cat:price" maxOccurs="unbounded" /&gt;
  &lt;/xs:sequence&gt;
  &lt;xs:attribute name="label" type="xs:token" /&gt;
  &lt;xs:attribute name="code" type="xs:ID" use="required" /&gt;
  &lt;xs:attributeGroup ref="xlink:simpleLink" /&gt;
&lt;/xs:complexType&gt;

&lt;xs:element name="tshirt" type="cat:tshirtType" substitutionGroup="cat:_item" /&gt;

&lt;xs:complexType name="tshirtType"&gt;
  &lt;xs:complexContent&gt;
    &lt;xs:extension base="cat:itemType"&gt;
      &lt;xs:attribute name="sizes" type="cat:clothesSizes" use="required" /&gt;
    &lt;/xs:extension&gt;
  &lt;/xs:complexContent&gt;
  &lt;xs:attribute ref="xml:lang" /&gt;
&lt;/xs:complexType&gt;

&lt;xs:simpleType name="clothesSizes"&gt;
  &lt;xs:union memberTypes="cat:sizeList"&gt;
    &lt;xs:simpleType&gt;
      &lt;xs:restriction base="xs:token"&gt;
        &lt;xs:enumeration value="oneSize" /&gt;
      &lt;/xs:restriction&gt;
    &lt;/xs:simpleType&gt;
  &lt;/xs:union&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="sizeList"&gt;
  &lt;xs:restriction&gt;
    &lt;xs:simpleType&gt;
      &lt;xs:list itemType="cat:clothesSize" /&gt;
    &lt;/xs:simpleType&gt;
    &lt;xs:minLength value="1" /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="clothesSize"&gt;
  &lt;xs:union memberTypes="cat:numberedSize cat:categorySize" /&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="numberedSize"&gt;
  &lt;xs:restriction base="xs:integer"&gt;
    &lt;xs:enumeration value="4" /&gt;
    &lt;xs:enumeration value="6" /&gt;
    &lt;xs:enumeration value="8" /&gt;
    &lt;xs:enumeration value="10" /&gt;
    &lt;xs:enumeration value="12" /&gt;
    &lt;xs:enumeration value="14" /&gt;
    &lt;xs:enumeration value="16" /&gt;
    &lt;xs:enumeration value="18" /&gt;
    &lt;xs:enumeration value="20" /&gt;
    &lt;xs:enumeration value="22" /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="categorySize"&gt;
  &lt;xs:restriction base="xs:token"&gt;
    &lt;xs:enumeration value="XS" /&gt;
    &lt;xs:enumeration value="S" /&gt;
    &lt;xs:enumeration value="M" /&gt;
    &lt;xs:enumeration value="L" /&gt;
    &lt;xs:enumeration value="XL" /&gt;
    &lt;xs:enumeration value="XXL" /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;xs:element name="album" type="cat:albumType" substitutionGroup="cat:_item" /&gt;

&lt;xs:complexType name="albumType"&gt;
  &lt;xs:complexContent&gt;
    &lt;xs:extension base="cat:itemType"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element name="artist" type="xs:string" /&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="formats" type="cat:formatsType" use="required" /&gt;
    &lt;/xs:extension&gt;
  &lt;/xs:complexContent&gt;
  &lt;xs:attribute ref="xml:lang" /&gt;
&lt;/xs:complexType&gt;

&lt;xs:simpleType name="formatsType"&gt;
  &lt;xs:list itemType="cat:formatType" /&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="formatType"&gt;
  &lt;xs:restriction base="xs:token"&gt;
    &lt;xs:enumeration value="CD" /&gt;
    &lt;xs:enumeration value="MiniDisc" /&gt;
    &lt;xs:enumeration value="tape" /&gt;
    &lt;xs:enumeration value="vinyl" /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;xs:complexType name="description" mixed="true"&gt;
  &lt;xs:sequence&gt;
    &lt;xs:any namespace="http://www.w3.org/1999/xhtml" processContents="lax"
            minOccurs="0" maxOccurs="unbounded" /&gt;
  &lt;/xs:sequence&gt;
  &lt;xs:attribute ref="xml:lang" /&gt;
&lt;/xs:complexType&gt;

&lt;xs:complexType name="price"&gt;
  &lt;xs:simpleContent&gt;
    &lt;xs:extension base="cat:monetaryAmount"&gt;
      &lt;xs:attribute name="currency" type="cat:currencyType" default="USD" /&gt;
    &lt;/xs:extension&gt;
  &lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;

&lt;xs:simpleType name="currencyType"&gt;
  &lt;xs:restriction base="xs:token"&gt;
    &lt;xs:pattern value="[A-Z]{3}" /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="monetaryAmount"&gt;
  &lt;xs:restriction base="xs:decimal"&gt;
    &lt;xs:fractionDigits value="2" /&gt;
    &lt;xs:pattern value="\d+\.\d{2}" /&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;

&lt;/xs:schema&gt;
</eg>

<p>The schema is associated with the URI
<quote>http://www.example.com/dm-example.xsd</quote>.</p>

<p>This example exposes the data model for a document that has an associated
schema and has been validated successfully against it.
In general, an XML Schema is not required,
that is, the data model can represent a schemaless, well-formed XML
document with the rules described in <specref ref="types"/>.</p>

<p>The XML document is represented by the nodes described below.
The value <emph>D1</emph> represents a Document Node;
the values <emph>E1, E2, etc.</emph> represent Element Nodes;
the values <emph>A1, A2, etc.</emph> represent Attribute Nodes;
the values <emph>N1, N2, etc.</emph> represent Namespace Nodes;
the values <emph>P1, P2, etc.</emph> represent Processing Instruction Nodes;
the values <emph>T1, T2, etc.</emph> represent Text Nodes.</p>

<p>For brevity:</p>

<ulist>
<item><p>Text Nodes in the data model that contain only white space are not shown.</p>
</item>
<item><p>Literal strings are shown in quotes without the <code>xs:string()</code>
constructor
</p></item>
<item><p>Literal decimals are shown without the <code>xs:decimal()</code>
constructor
</p></item>
<item><p>Nodes are referred to using the syntax <code>[nodeID]</code>
</p></item>
<item><p>xs:QNames are used with the following prefixes bindings:</p>

<table border="0" summary="Namespace prefixes">
<tbody>
  <tr>
    <td rowspan="1" colspan="1">xs</td><td rowspan="1" colspan="1">http://www.w3.org/2001/XMLSchema</td>
  </tr>
  <tr>
    <td rowspan="1" colspan="1">xsi</td><td rowspan="1" colspan="1">http://www.w3.org/2001/XMLSchema-instance</td>
  </tr>
  <tr>
    <td rowspan="1" colspan="1">cat</td><td rowspan="1" colspan="1">http://www.example.com/catalog</td>
  </tr>
  <tr>
    <td rowspan="1" colspan="1">xlink</td><td rowspan="1" colspan="1">http://www.w3.org/1999/xlink</td>
  </tr>
  <tr>
    <td rowspan="1" colspan="1">html</td><td rowspan="1" colspan="1">http://www.w3.org/1999/xhtml</td>
  </tr>
  <tr>
    <td rowspan="1" colspan="1">anon</td><td rowspan="1" colspan="1">An implementation-dependent prefix associated with
<termref def="dt-anonymous-type-name">anonymous type names</termref></td>
  </tr>
</tbody>
</table>

</item>
<item><p>The abbreviation <quote><code>\n</code></quote> is used in string literals
to represent a newline character; this isn't supported in XPath, but it makes
this presentation clearer.</p></item>
<item><p>Accessors that return the empty sequence have been omitted.</p>
</item>
<item><p>To simplify the presentation, we’re assuming an implementation
that does not expose the namespace axis. Therefore,
Namespace Nodes are shared across multiple elements.
See <specref ref="NamespaceNode"/>.</p>
</item>
</ulist>


<table summary="Datamodel Example" width="80%" cellspacing="0" border="0">
<col width="150" span="1"/>
<tbody>
<tr id="ex-D1" role="document">
<td colspan="3" rowspan="1">// Document node D1</td>
</tr>
<tr role="document">
<td rowspan="1" colspan="1">dm:base-uri(D1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="document">
<td rowspan="1" colspan="1">dm:node-kind(D1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"document"</td>
</tr>
<tr role="document">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(D1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  Staind:  Been  Awhile  Tee  Black  (1-sided)  \n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n          25.00    It's  Been  A  While    10.99    Staind  "</td>
</tr>
<tr role="document">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(D1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("  Staind:  Been  Awhile  Tee  Black  (1-sided)  \n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n          25.00    It's  Been  A  While    10.99    Staind  ")</td>
</tr>
<tr role="document">
<td rowspan="1" colspan="1">dm:children(D1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-N1" role="namespace">
<td colspan="3" rowspan="1">// Namespace node N1</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-kind(N1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"namespace"</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-name(N1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "xml")</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(N1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/XML/1998/namespace"</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(N1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/XML/1998/namespace"</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-N2" role="namespace">
<td colspan="3" rowspan="1">// Namespace node N2</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-kind(N2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"namespace"</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-name(N2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(N2)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.example.com/catalog"</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(N2)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.example.com/catalog"</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-N3" role="namespace">
<td colspan="3" rowspan="1">// Namespace node N3</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-kind(N3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"namespace"</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-name(N3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "html")</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(N3)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/1999/xhtml"</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(N3)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/1999/xhtml"</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-N4" role="namespace">
<td colspan="3" rowspan="1">// Namespace node N4</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-kind(N4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"namespace"</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-name(N4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "xlink")</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(N4)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/1999/xlink"</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(N4)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/1999/xlink"</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-N5" role="namespace">
<td colspan="3" rowspan="1">// Namespace node N5</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-kind(N5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"namespace"</td>
</tr>
<tr role="namespace">
<td rowspan="1" colspan="1">dm:node-name(N5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "xsi")</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(N5)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/2001/XMLSchema-instance"</td>
</tr>
<tr role="namespace">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(N5)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.w3.org/2001/XMLSchema-instance"</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-P1" role="processing-instruction">
<td colspan="3" rowspan="1">// Processing Instruction node P1</td>
</tr>
<tr role="processing-instruction">
<td rowspan="1" colspan="1">dm:base-uri(P1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="processing-instruction">
<td rowspan="1" colspan="1">dm:node-kind(P1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"processing-instruction"</td>
</tr>
<tr role="processing-instruction">
<td rowspan="1" colspan="1">dm:node-name(P1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "xml-stylesheet")</td>
</tr>
<tr role="processing-instruction">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(P1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"type="text/xsl"  href="dm-example.xsl""</td>
</tr>
<tr role="processing-instruction">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(P1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"type="text/xsl"  href="dm-example.xsl""</td>
</tr>
<tr role="processing-instruction">
<td rowspan="1" colspan="1">dm:parent(P1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-D1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">D1</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E1" role="element">
<td colspan="3" rowspan="1">// Element node E1</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "catalog")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  Staind:  Been  Awhile  Tee  Black  (1-sided)  \n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n          25.00    It's  Been  A  While    10.99    Staind  "</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E1)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">fn:error()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">anon:TYP000001</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-D1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">D1</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A3</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E1)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A1" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A1</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://www.example.com/catalog                                                            dm-example.xsd"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(xs:anyURI("http://www.example.com/catalog"), xs:anyURI("catalog.xsd"))</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">anon:TYP000002</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A2" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A2</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.w3.org/XML/1998/namespace", "xml:lang")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A2)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"en"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"en"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:NMTOKEN</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A3" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A3</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "version")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A3)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"0.1"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"0.1"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:string</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-C1" role="comment">
<td colspan="3" rowspan="1">// Comment node C1</td>
</tr>
<tr role="comment">
<td rowspan="1" colspan="1">dm:base-uri(C1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="comment">
<td rowspan="1" colspan="1">dm:node-kind(C1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"comment"</td>
</tr>
<tr role="comment">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(C1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  This  example  is  for  data  model  illustration  only.\n          It  does  not  demonstrate  good  schema  design.  "</td>
</tr>
<tr role="comment">
<td rowspan="1" colspan="1">dm:typed-value(C1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"  This  example  is  for  data  model  illustration  only.\n          It  does  not  demonstrate  good  schema  design.  "</td>
</tr>
<tr role="comment">
<td rowspan="1" colspan="1">dm:parent(C1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E2" role="element">
<td colspan="3" rowspan="1">// Element node E2</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "tshirt")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E2)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  Staind:  Been  Awhile  Tee  Black  (1-sided)  \n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n          25.00  "</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E2)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">fn:error()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:tshirtType</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E6" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E6</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A5</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A6" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A6</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A7</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E2)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A4" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A4</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "code")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A4)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"T1534017"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:ID("T1534017")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:ID</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">true</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A5" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A5</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "label")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A5)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"Staind  :  Been  Awhile"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token("Staind : Been Awhile")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A6" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A6</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.w3.org/1999/xlink", "xlink:href")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A6)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"http://example.com/0,,1655091,00.html"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://example.com/0,,1655091,00.html")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A7" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A7</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "sizes")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A7)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"M  L  XL"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(xs:token("M"), xs:token("L"), xs:token("XL"))</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:sizeList</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E3" role="element">
<td colspan="3" rowspan="1">// Element node E3</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "title")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E3)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"Staind:  Been  Awhile  Tee  Black  (1-sided)"</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E3)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token("Staind: Been Awhile Tee Black (1-sided)")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E3)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-T1" role="text">
<td colspan="3" rowspan="1">// Text node T1</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:base-uri(T1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:node-kind(T1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"text"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(T1)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"Staind:  Been  Awhile  Tee  Black  (1-sided)"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(T1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("Staind:  Been  Awhile  Tee  Black  (1-sided)")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:type-name(T1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:parent(T1)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E3</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E4" role="element">
<td colspan="3" rowspan="1">// Element node E4</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "description")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E4)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"\n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n        "</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E4)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("\n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n        ")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:description</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E5</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E4)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E5" role="element">
<td colspan="3" rowspan="1">// Element node E5</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.w3.org/1999/xhtml", "html:p")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E5)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"\n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n        "</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E5)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("\n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n        ")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyType</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E4</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E5)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-T2" role="text">
<td colspan="3" rowspan="1">// Text node T2</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:base-uri(T2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:node-kind(T2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"text"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(T2)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"\n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n        "</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(T2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("\n            Lyrics  from  the  hit  song  'It's  Been  Awhile'\n            are  shown  in  white,  beneath  the  large\n            'Flock  &amp;  Weld'  Staind  logo.\n        ")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:type-name(T2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:parent(T2)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E5</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E6" role="element">
<td colspan="3" rowspan="1">// Element node E6</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "price")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E6)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"25.00"</td>
</tr>
<tr role="element">
<td colspan="3" rowspan="1">// The typed-value is based on the content type of the complex type for the element</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E6)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:monetaryAmount(25.0)</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:price</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E2</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E6)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-T3" role="text">
<td colspan="3" rowspan="1">// Text node T3</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:base-uri(T3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:node-kind(T3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"text"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(T3)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"25.00"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(T3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("25.00")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:type-name(T3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:parent(T3)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E6" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E6</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E7" role="element">
<td colspan="3" rowspan="1">// Element node E7</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "album")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E7)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  It's  Been  A  While    10.99    Staind  "</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E7)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">fn:error()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:albumType</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E1</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E8" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E8</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E9" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E9</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E10" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E10</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E11" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E11</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A8" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A8</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A9" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A9</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A10" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A10</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E7)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E7)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A8" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A8</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "code")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A8)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"A1481344"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:ID("A1481344")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:ID</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A9" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A9</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "label")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A9)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"Staind  :  Its  Been  A  While"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token("Staind : Its Been A While")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A10" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A10</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "formats")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A10)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"CD"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:formatType("CD")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:formatType</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E8" role="element">
<td colspan="3" rowspan="1">// Element node E8</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "title")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E8)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"It's  Been  A  While"</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E8)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token("It's Been A While")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:token</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E8)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E8)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-T4" role="text">
<td colspan="3" rowspan="1">// Text node T4</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:base-uri(T4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:node-kind(T4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"text"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(T4)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"It's  Been  A  While"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(T4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("It's  Been  A  While")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:type-name(T4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:parent(T4)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E8" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E8</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E9" role="element">
<td colspan="3" rowspan="1">// Element node E9</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "description")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E9)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">""</td>
</tr>
<tr role="element">
<td colspan="3" rowspan="1">// xsi:nil is true so the typed value is the empty sequence</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E9)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:description</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A11" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A11</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E9)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E9)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A11" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A11</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A11)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"true"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:boolean("true")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:boolean</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E9" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E9</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E10" role="element">
<td colspan="3" rowspan="1">// Element node E10</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "price")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E10)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"10.99"</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E10)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:monetaryAmount(10.99)</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:price</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-A12" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">A12</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E10)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E10)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-A12" role="attribute">
<td colspan="3" rowspan="1">// Attribute node A12</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-kind(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"attribute"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:node-name(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("", "currency")</td>
</tr>
<tr role="attribute">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(A12)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"USD"</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:typed-value(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:currencyType("USD")</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:type-name(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">cat:currencyType</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-id(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:is-idrefs(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="attribute">
<td rowspan="1" colspan="1">dm:parent(A12)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E10" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E10</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-T5" role="text">
<td colspan="3" rowspan="1">// Text node T5</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:base-uri(T5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:node-kind(T5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"text"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(T5)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"10.99"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(T5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("10.99")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:type-name(T5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:parent(T5)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E10" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E10</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-E11" role="element">
<td colspan="3" rowspan="1">// Element node E11</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:base-uri(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-kind(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"element"</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:node-name(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:QName("http://www.example.com/catalog", "artist")</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(E11)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  Staind  "</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(E11)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">" Staind "</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:type-name(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:string</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-id(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:is-idrefs(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">false</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:parent(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E7" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E7</loc>])</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:children(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:attributes(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">()</td>
</tr>
<tr role="element">
<td rowspan="1" colspan="1">dm:namespace-nodes(E11)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N1" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N1</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N2" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N2</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N3" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N3</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N4" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N4</loc>], [<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-N5" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">N5</loc>])</td>
</tr>
<tr role="element">
<td valign="baseline" rowspan="1" colspan="1">dm:namespace-bindings(E11)</td>
<td valign="baseline" rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">(“xml”, “http://www.w3.org/XML/1998/namespace”, “”, “http://www.example.com/catalog”, “html”, “http://www.w3.org/1999/xhtml”, “xlink”, “http://www.w3.org/1999/xlink”, “xsi”, “http://www.w3.org/2001/XMLSchema-instance”)</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
<tr id="ex-T6" role="text">
<td colspan="3" rowspan="1">// Text node T6</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:base-uri(T6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xs:anyURI("http://www.example.com/catalog.xml")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:node-kind(T6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">"text"</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:string-value(T6)</td>
<td valign="baseline" rowspan="1" colspan="1">=</td>
<td rowspan="1" colspan="1">"  Staind  "</td>
</tr>
<tr role="text">
<td valign="baseline" rowspan="1" colspan="1">dm:typed-value(T6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic("  Staind  ")</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:type-name(T6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">xdt:untypedAtomic</td>
</tr>
<tr role="text">
<td rowspan="1" colspan="1">dm:parent(T6)</td>
<td rowspan="1" colspan="1"> = </td>
<td rowspan="1" colspan="1">([<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="#ex-E11" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">E11</loc>])</td>
</tr>
<tr>
<td colspan="3" rowspan="1"> </td>
</tr>
</tbody>
</table>


<p>A graphical representation of the data model for the preceding
example is shown below. Document order in this representation can be
found by following the traditional in-order, left-to-right,
depth-first traversal; however, because the image has been rotated for
easier presentation, this appears to be in-order, bottom-to-top,
depth-first order.</p>

<table border="0" cellspacing="0" summary="Graphic">
  <tbody>
    <tr>
      <td rowspan="1" colspan="1"><graphic xmlns:xlink="http://www.w3.org/1999/xlink" source="dm-example.png" alt="Graphical depiction of the example data model." xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
      </td>
    </tr>
    <tr>
      <td rowspan="1" colspan="1">Graphic representation of the data model.
[<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="dm-example-large.png" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">large view</loc>,
<loc xmlns:xlink="http://www.w3.org/1999/xlink" href="dm-example.svg" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">SVG</loc>]
      </td>
    </tr>
  </tbody>
</table>

</inform-div1>

<!-- removed reference to dm-issues-list.xml -->


   </back>

</spec>