<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="../../../2002/xmlspec/xhtml/1.13/diffspec.xsl"?>
<!DOCTYPE spec SYSTEM "../../../2002/xmlspec/dtd/2.10/xmlspec.dtd" >
<spec status="ext-review" w3c-doctype="wd">
 <header>
  <title>XML processor profiles</title>
  <w3c-designation>WD-xml-proc-profiles-20110412</w3c-designation>
  <w3c-doctype>W3C Working Draft</w3c-doctype>
  <pubdate>
   <day>12</day>
   <month>April</month>
   <year>2011</year><!-- $Id: xml-proc-profiles.xml,v 1.3 2011/04/07 11:35:41 ht Exp $-->
  </pubdate>
  <publoc>
  <loc href="http://www.w3.org/TR/2011/WD-xml-proc-profiles-20110412/"/> <!-- http://www.w3.org/TR/&draft.year;/WD-xml-proc-profiles-&iso.doc.date;/ -->
  </publoc>
  <altlocs>
    <loc href="xml-proc-profiles.xml">XML</loc>
    <loc href="diff.html">Showing diffs from previous LCWD</loc>
  </altlocs>
  <latestloc>
   <loc href="http://www.w3.org/TR/xml-proc-profiles/"/>
  </latestloc>
<prevlocs>
 <loc href="http://www.w3.org/TR/2010/WD-xml-proc-profiles-20101130/"/>
 <loc href="http://www.w3.org/TR/2010/WD-xml-proc-profiles-20101021/"/>
 <loc href="http://www.w3.org/TR/2010/WD-xml-proc-profiles-20100518/"/>
</prevlocs>
  <authlist>
   <author>
    <name>Henry S. Thompson</name>
    <affiliation>University of Edinburgh</affiliation>
    <email href="mailto:ht@inf.ed.ac.uk">ht@inf.ed.ac.uk</email>
   </author>
   <author>
    <name>Norman Walsh</name>
    <affiliation>MarkLogic Corporation</affiliation>
    <email href="mailto:norman.walsh@marklogic.com">norman.walsh@marklogic.com</email>
   </author>
  </authlist>
      <abstract>
       <p>This specification defines several XML processor
profiles, each of which fully determines a data model for any given XML
document.  It is intended as a resource for other specifications, which can by
a single normative reference establish precisely what input processing they require.</p>
      </abstract>
      <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 href="http://www.w3.org/TR/">W3C technical reports index</loc>
at http://www.w3.org/TR/.</emph></p>
<p>This is a public
<loc href="http://www.w3.org/2005/10/Process-20051014/tr.html#first-wd">Working Draft</loc>
for review by W3C members and other interested parties. This document
is a product of the
<loc href="http://www.w3.org/XML/Processing/">XML Processing Model
Working Group</loc> which is part of the W3C <loc href="http://www.w3.org/XML/Activity">XML Activity</loc>.
The English version of this specification is the only
normative version. However, for translations of this document, see
<loc href="http://www.w3.org/2003/03/Translations/byTechnology?technology=xproc"/>.
</p>
       <p>This is a Last Call Working Draft for review by W3C members and other
interested parties. It contains one significant addition to previous drafts: reporting requirements for each profile, specified in terms of a
tabulation and categorization of information supplied by XML processors to
applications.  Once again it is the Working Group's intention, since this specification is not implementable as such,
that no Candidate Recommendation version will be published, and that the next step for this
specification will be to Proposed Recommendation&#8212;interested parties please take note and comment accordingly.
</p>
       <p>The effective deadline for comments is 16 May 2011.  Please send comments on this draft to the public mailing list <loc href="mailto:public-xml-processing-model-comments@w3.org">public-xml-processing-model-comments@w3.org</loc> (public
<loc href="http://lists.w3.org/Archives/Public/public-xml-processing-model-comments/">archives</loc> are available).</p>
       <p>As this specification is intended for use by other specifications
which themselves define one or more XML languages, the Working Group
particularly welcomes input for other Working Groups who are responsible for
such specifications.</p>
<p>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 document was produced by a group operating under the <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5
February 2004 W3C Patent Policy</loc>. W3C maintains a <loc href="http://www.w3.org/2004/01/pp-impl/38398/status">public
list of any patent disclosures</loc> made in connection with the
deliverables of the group; that page also includes instructions for
disclosing a patent. An individual who has actual knowledge of a
patent which the individual believes contains <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
Claim(s)</loc> must disclose the information in accordance with <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the W3C Patent Policy</loc>.</p>
</status>
      <langusage>
         <language id="en">English</language>
      </langusage>
      <revisiondesc>
       <slist>
        <sitem>Original done at TPAC09</sitem>
        <sitem>Additional profile, name change, FPWD tweaks by HST: 2010-04, 05</sitem>
        <sitem>Per <loc href="http://www.w3.org/XML/XProc/2010/05/27-minutes.html"/>, minor edits in response to comments, also remove stale use of 'default' and 'model'</sitem>
        <sitem>Added new profile(s?) NDW: 2010-06-24</sitem>
        <sitem>Renamed most profiles, started on invariants section HST: 2010-07-01</sitem>
        <sitem>Adopted <loc href="http://lists.w3.org/Archives/Public/public-xml-processing-model-wg/2010Jul/0011.html">pgrosso's base URI and bibliography suggestions</loc>,
try to address <loc href="http://lists.w3.org/Archives/Public/public-xml-processing-model-wg/2010Jul/0013.html">pgrosso's concerns</loc> in section 3,
be a bit more expansive <loc href="http://lists.w3.org/Archives/Public/public-xml-processing-model-wg/2010Aug/0019.html">wrt impl-dep</loc>  HST: 2010-09-22</sitem>
        <sitem>Corrected one typo, added caveat wrt xml:id HST: 2010-10-12</sitem>
        <sitem>Added caveat to invariant claim HST: 2011-01-31</sitem>
        <sitem>Reverted caveat, and tried to address the data-model
construction requirements issue head-on HST: 2011-02-15</sitem>
        <sitem>Renamed and articulated some classes, changed status of notations
and unparsed entities, elt content whitespace, per feedback and telcon discussion
HST: 2011-02-17</sitem>
        <sitem>Adopted some but not all of Liam Quin's suggestions: http://lists.w3.org/Archives/Public/public-xml-processing-model-wg/2011Mar/0003.html</sitem>
        <sitem>Prepared for 2nd Last Call WD HST: 2011-03-30.</sitem>
       </slist>
      </revisiondesc>
 </header>
 <body>
  <div1 id="background">
   <head>Background</head>
   <p>The XML specification <bibref ref="xml"/> defines an XML processor as "a
software module. . .used to read XML documents and provide access to their
content and structure. . .on behalf of another module, called the application."
  XML applications are often defined by building on top of the <bibref ref="xml-infoset"/> <phrase diff="add">vocabulary </phrase>or<phrase diff="del"> other similar</phrase> XML data models such as <bibref ref="xpath"/> or <bibref ref="xpath-datamodel"/>, understood as the output of an XML processor.  Such definitions have suffered to some extent from an uncertainty inherent in using that kind of foundation, in that the mapping XML processors perform from XML documents to data model is not rigid.  Some of this stems from the XML specification itself, which <phrase diff="add">is not always explicit about what information must be passed from processor to application, and which also </phrase>leaves open the possiblity of reading and interpreting external entities, or not.  <phrase diff="del">Some</phrase><phrase diff="add">Another kind of uncertainty</phrase> stems from the growth of the XML family of specifications: if the input document includes uses of XInclude, for instance.</p>
   <p>This specification addresses this issue by defining several XML processor
profiles, each of which fully determines a data model for any given XML
document.  It is intended as a resource for other specifications, which can by
a single normative reference establish precisely what input processing they require.</p>
   <p>The profiles defined here are appropriate for processing both XML 1.0 <bibref ref="xml"/> and XML 1.1 <bibref ref="xml11"/> documents.  References to XML or XML Namespaces below should be understood as references to 1.0 or 1.1 as required by the relevant document or application.</p>
   <div2 id="terminology">
    <head>Terminology</head>
  <p><termdef id="dt-must" term="Must, May, etc.">The key words 
  <term>must</term>, <term>must not</term>, <term>required</term>,
  <term>shall</term>, <term>shall not</term>, <term>should</term>, 
  <term>should not</term>, <term>recommended</term>, <term>may</term>, 
  and <term>optional</term> in this specification are to be interpreted 
  as described in <bibref ref="RFC2119"/>.</termdef></p>
  
  <p>The term <term>base URI</term> is used in this specification as it is defined in <bibref ref="RFC3986"/>.</p>
   </div2>
  </div1>

  <div1 id="profiles">
    <head>XML processor profiles</head>

    <p>All of the profiles describe the steps necessary
    to construct a data model from a <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#dt-wellformed" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">well-formed</xspecref> and <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/REC-xml-names/#dt-nwf" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">namespace well-formed</xspecref> XML document. This specification does not consider documents
that are not namespace well-formed. Documents which are not well-formed are not XML.</p>
   <p diff="add">Each profile is defined in terms of comformance requirements
with respect to various XML-family specifications, and in terms of requirements
on the information it provides to applications.  <phrase diff="del">The latter
is</phrase><phrase diff="add">Information provision requirements are</phrase> specified by
reference to classes of information items and properties, as further defined in <specref ref="infosetClasses"/>.</p>
  <div2 id="minimumProfile">
   <head>The minimum XML processor profile</head>
   <p>The minimum approach to the construction of a data model requires the following:</p>
   <olist>
    <item><p>Processing of the document as <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#proc-types" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">required of conformant
non-validating XML processors</xspecref> without reading any <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#dt-extmkpdecl" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">external markup declarations</xspecref>;</p></item>
    <item><p>Maintenance of the <term>base URI</term> of each element in
conformance with <bibref ref="xml-base"/>;</p></item>
    <item><p diff="add">Faithful provision of the information in the document
corresponding to information items and properties in classes <termref
def="A">A</termref>, <termref def="Bprime">B'</termref>, <termref
def="P">P</termref> and <termref def="X">X</termref>;</p></item>
   </olist>
  </div2>

  <div2 id="basicProfile">
   <head>The basic XML processor profile</head>
   <p>The basic approach to the construction of a data model requires the following:</p>
   <olist>
    <item><p>Processing of the document as <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#proc-types" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">required of conformant
non-validating XML processors</xspecref> without reading any <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#dt-extmkpdecl" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">external markup declarations</xspecref>;</p></item>
    <item><p>Maintenance of the <term>base URI</term> of each element in
conformance with <bibref ref="xml-base"/>;</p></item>
    <item><p>Identification of all <code>xml:id</code> attributes as IDs as
required by <bibref ref="xml-id"/></p></item>
    <item><p diff="add">Faithful provision of the information in the document
corresponding to information items and properties
in classes <termref def="A">A</termref>, <termref
def="Bprime">B'</termref>, <termref def="P">P</termref> and <termref def="X">X</termref>;</p></item>
   </olist>
  </div2>

  <div2 id="modestProfile">
   <head>The modest XML processor profile</head>
   <p>The modest approach to the construction of a data model requires the following:</p>
   <olist>
    <item><p>Processing of the document as <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#proc-types" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">required of conformant
non-validating XML processors</xspecref> while reading and processing all <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#dt-extmkpdecl" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">external markup declarations</xspecref>;</p></item>
    <item><p>Maintenance of the <term>base URI</term> of each element in
conformance with <bibref ref="xml-base"/>;</p></item>
    <item><p>Identification of all <code>xml:id</code> attributes as IDs as
required by <bibref ref="xml-id"/></p></item>
    <item><p diff="add">Faithful provision of the information in the document
corresponding to information items and properties
in classes <termref def="A">A</termref>, <termref def="B">B</termref>
and <termref def="X">X</termref>;</p></item>
   </olist>
  </div2>

  <div2 id="recommendedProfile">
   <head>The recommended XML processor profile</head>
   <p>The recommended approach to the construction of a data model requires the following:</p>
   <olist>
    <item><p>Processing of the document as <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#proc-types" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">required of conformant
non-validating XML processors</xspecref> while reading and
processing all <xspecref xmlns:xlink="http://www.w3.org/1999/xlink" href="http://www.w3.org/TR/xml/#dt-extmkpdecl" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">external markup declarations</xspecref>;</p></item>
    <item><p>Maintenance of the <term>base URI</term> of each element in
conformance with <bibref ref="xml-base"/>;</p></item>
    <item><p>Identification of all <code>xml:id</code> attributes as IDs as
required by <bibref ref="xml-id"/></p></item>
    <item><p>Replacement of all <code>include</code> elements in the XInclude
namespace, and namespace, xml:base and xml:lang fixup of the result, as required for
conformance to <bibref ref="xinclude"/>;</p></item>
    <item><p diff="add">Faithful provision of the information in the document
corresponding to information items and properties
in classes <termref def="A">A</termref>, <termref def="B">B</termref>
and <termref def="X">X</termref>.</p></item>
   </olist>
   <p>The following <bibref ref="xproc"/> pipeline implements the <specref ref="recommendedProfile"/> when executed by a
conformant XProc processor which
</p>
   <ulist>
    <item>
     <p>Processes its input as required by point (1) above;</p>
    </item>
    <item>
     <p>Recognizes and preserves the ID type of all <code>xml:id</code> attributes in
conformance with <bibref ref="xml-id"/>.</p>
    </item>
   </ulist>
   <example>
    <head>XProc pipeline which implements the recommended processor profile</head>
    <eg xml:space="preserve">&lt;p:pipeline xmlns:p="http://www.w3.org/ns/xproc"&gt;

  &lt;p:xinclude fixup-xml-base="true" fixup-xml-lang="true"/&gt;

&lt;/p:pipeline&gt;</eg>
   </example>
  </div2>
  </div1>
  <div1 id="infosetClasses" diff="add">
   <head>Classes of Information</head>
   <p>For the profile definitions above and the invariants below, we
categorize the information expressed in XML documents into a number of
(overlapping) classes.  What follows is a complete tabulation of all the
information items and their properties from <bibref ref="xml-infoset"/>, annotated
with one or more class labels.</p>
   <glist>
    <gitem id="A">
     <label>Class A</label>
     <def><p>Items and properties which <rfc2119>must</rfc2119> be provided by all profiles.</p></def>
    </gitem>
    <gitem id="B">
     <label>Class B</label>
     <def><p>Items and properties which <rfc2119>must</rfc2119> be provided by <specref ref="modestProfile"/> and <specref ref="recommendedProfile"/></p>
     </def>
    </gitem>
    <gitem id="Bprime">
     <label>Class B'</label>
     <def><p>Items and properties which <rfc2119>must</rfc2119> be provided by <specref ref="minimumProfile"/> and <specref ref="basicProfile"/></p>
     </def>
    </gitem>
    <gitem id="P">
     <label>Class P</label>
     <def><p>Items and properties which depend on declarations. 
For <specref ref="minimumProfile"/> and <specref ref="basicProfile"/>, they will not be provided if the relevant declaration
is in an unprocessed external entity, or is after the first reference to an external entity
which is not processed.</p>
     </def>
    </gitem>
    <gitem id="V">
     <label>Class V</label>
     <def><p>Items and properties which will be present for
validating processors, but for which support by <emph>non-</emph>validating processors is
implementation-defined.  Non-validating processors <rfc2119>should</rfc2119> document whether they
provide this information to applications or not.</p>
     </def>
    </gitem>
    <gitem id="X">
     <label>Class X</label>
     <def><p>Items and properties for which support is
implementation-defined.  Processors <rfc2119>should</rfc2119> document whether they
provide this information to applications or not.</p>
     </def>
    </gitem>
   </glist>
   <note><p>It is the information itself which is being labelled, not the
particular packaging of it implied by the items and properties used in <bibref ref="xml-infoset"/>.  For example, a data model that exposes the information packaged as <kw>Character Information Items</kw> in <bibref ref="xml-infoset"/> as an array of strings is in that regard satisfying requirement (3) of <specref ref="minimumProfile"/>.</p></note>
   <glist><gitem><label>Document Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[children]</td><td><termref def="X">X</termref></td></tr>
   <tr><td>[document element]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[notations]</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td>[unparsed entities]</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td>[base URI]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[character encoding scheme]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[standalone]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[version]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[all declarations processed]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
<gitem><label>Element Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[namespace name]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[local name]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[prefix]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[children]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[attributes]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[namespace attributes]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[in-scope namespaces]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[base URI]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[parent]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
<gitem><label>Attribute Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[namespace name]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[local name]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[prefix]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[normalized value]</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td>[specified]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[attribute type]</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td>[references] to Element Information Items, i.e. for attributes of types IDREF and IDREFS</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td>[references] to Notation and Unparsed Entity Information Items, i.e. for attributes of types ENTITY, ENTITIES and NOTATION</td><td><termref def="X">X</termref></td></tr>
   <tr><td>[owner element]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
<gitem><label>Processing Instruction Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[target]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[content]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[base URI]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[notation]</td><td><termref def="X">X</termref></td></tr>
   <tr><td>[parent]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
     <gitem><label>Unexpanded Entity Reference Information Item</label>
<def>
<note><p>This type of information item will not occur at all if <code>standalone="yes"</code>
</p></note>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="Bprime">B'</termref></td></tr>
   <tr><td><emph>all properties</emph></td><td><termref def="Bprime">B'</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
<gitem><label>Character Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[character code]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[element content whitespace]</td><td><termref def="V">V</termref></td></tr>
   <tr><td>[parent]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
<gitem><label>Comment Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[content]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[parent]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
    <gitem>
<label>Document Type Declaration Information Item</label>
     <def><table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="X">X</termref></td></tr>
   <tr><td><emph>all properties</emph></td><td><termref def="X">X</termref></td></tr>
  </tbody>
 </table></def>
    </gitem>
    <gitem><label>Unparsed Entity Information Item</label>
<def><table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td><emph>all properties</emph></td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
  </tbody>
 </table></def></gitem>
<gitem><label>Notation Information Item</label>
<def><table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
   <tr><td><emph>all properties</emph></td><td><termref def="B">B</termref>, <termref def="P">P</termref></td></tr>
  </tbody>
 </table></def></gitem>
<gitem><label>Namespace Information Item</label>
<def>
 <table width="100%">
  <col width="30%"/>
  <tbody>
   <tr><td>the item itself</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[prefix]</td><td><termref def="A">A</termref></td></tr>
   <tr><td>[namespace name]</td><td><termref def="A">A</termref></td></tr>
  </tbody>
 </table>
</def></gitem>
</glist>
  </div1>
  <div1 id="invariants">
   <head>Invariants</head>
   <p>Data models constructed in conformance with one of the profiles defined above will
be guaranteed to share certain properties.  The following sub-sections describe
this in terms of invariants with respect to the information available in the
data model.</p>
   <div2 id="within_profile_invariants">
    <head>Data model invariants within a given profile</head>
    <p>Any two data models which are both constructed in conformance with the
<emph>same</emph> profile from a given namespace-well-formed XML
document will have
exactly the same information with respect to the<phrase diff="del"> following</phrase> information items and
properties <phrase diff="del">(per <bibref ref="xml-infoset"/>):</phrase> which
that profile is required to faithfully provision in the data model.</p>
    <glist diff="del"><gitem><label>The Document Information Item</label>
<def><p>
[document element],
[base URI],
[character encoding scheme],
[standalone],
[version],
[all declarations processed]
</p></def></gitem>
<gitem><label>Element Information Items</label>
<def><p>
[namespace name],
[local name],
[prefix],
[children],
[attributes],
[namespace attributes],
[in-scope namespaces],
[base URI],
[parent]
</p></def></gitem>
<gitem><label>Attribute Information Items</label>
<def><p>
[namespace name],
[local name],
[prefix],
[normalized value],
[specified],
[attribute type],
[references],
[owner element]
</p></def></gitem>
<gitem><label>Processing Instruction Information Items</label>
<def><p>
[target],
[content],
[base URI],
[notation],
[parent]
</p></def></gitem>
     <gitem><label>Unexpanded Entity Reference Information Items</label>
<def><p>[name],
[system identifier],
[public identifier],
[declaration base URI],
[parent]&#8212;This type of information item will not occur at all if using <specref ref="modestProfile"/> or
<specref ref="recommendedProfile"/> profiles, or if <code>standalone="yes"</code></p></def></gitem>
<gitem><label>Character Information Items</label>
<def><p>
[character code],
[parent]
</p></def></gitem>
<gitem><label>Comment Information Items</label>
<def><p>
[content],
[parent]
</p></def></gitem>
<gitem><label>Namespace Information Items</label>
<def><p>
[prefix],
[namespace name]
</p></def></gitem>
</glist>
    <div3 diff="del">
     <head>Underspecified information</head>
     <p>Whether the remaining information is present or, if present only
partially, whether it is the same, depends on implementation-dependent properties, so no invariant
can be guaranteed:</p>
    <glist>
     <gitem><label>The Document Information Item</label>
<def><p>
[children],
[notations],
[unparsed entities]
</p></def></gitem>
<gitem><label>Character Information Items</label>
<def><p>
[element content whitespace]
</p></def></gitem>
<gitem><label>The Document Type Declaration Information Item</label>
<def><p><emph>entirely or partially</emph>
</p></def></gitem>
<gitem><label>Unparsed Entity Information Items</label>
<def><p><emph>entirely or partially</emph>
</p></def></gitem>
<gitem><label>Notation Information Items</label>
<def><p><emph>entirely or partially</emph>
</p></def></gitem>
    </glist></div3>
   </div2>
   <div2 id="between_profile_variants">
    <head>Data model variation between profiles</head>
    <p>When two data models are constructed in conformance with the
two <emph>different</emph> profiles from a given namespace-well-formed XML
document, the information contained therein will in some cases (depending on
the specifics of the document in question) differ with repect to the following information items and
properties<phrase diff="del"> (per <bibref ref="xml-infoset"/>)</phrase> (leaving aside the items and
properties classified as implementation-defined above):</p>
    <div3 id="min_variants">
     <head>Between minimum and richer profiles</head>
     <glist>
<gitem><label>Attribute Information Items</label>
<def><p>
[normalized value],
[attribute type],
[references]&#8212;These properties may vary for <code>xml:id</code> attributes
</p></def></gitem>
</glist>
     <p>And all the differences listed in the next two sections.</p>
    </div3>
    <div3 id="basic_variants">
     <head>Between basic and richer profiles</head>
     <glist>
<gitem><label>Element Information Items</label>
<def><p>Entirely, in that where a basic processor reports an Unexpanded Entity
Reference, richer ones will report the entity expansion, which may be or
include entire elements.</p></def></gitem>
<gitem><label>Attribute Information Items</label>
<def><p>Entirely, for the same reason, or, just with respect to [normalized value],
[specified],
[attribute type] and
[references] where a basic processor has not processed the relevant
declaration, but a richer one has.</p></def></gitem>
<gitem><label>Processing Instruction Information Items</label>
<def><p>Entirely, per the Element case above</p></def></gitem>
     <gitem><label>Unexpanded Entity Reference Information Items</label>
<def><p>Entirely, in the opposite sense to the Element case above</p></def></gitem>
<gitem><label>Character Information Items</label>
<def><p>Entirely, per the Element case above</p></def></gitem>
<gitem><label>Comment Information Items</label>
<def><p>Entirely, per the Element case above</p></def></gitem>
<gitem><label>Namespace Information Items</label>
<def><p>Entirely, per the Element case above</p></def></gitem>
</glist>
     <p>And all the differences listed in the next section.</p>
    </div3>
    <div3 id="modest_variants">
     <head>Between modest and recommended profiles</head>
     <glist>
<gitem><label>Element Information Items</label>
<def><p>Entirely, in that where a modest processor reports an
<code>xinclude</code> Element, a recommended Processor will report the result of
XInclude processing, which may be or
include entire elements.</p></def></gitem>
<gitem><label>Attribute Information Items</label>
<def><p>Entirely, for the same reason</p></def></gitem>
<gitem><label>Processing Instruction Information Items</label>
<def><p>Entirely, for the same reason</p></def></gitem>
      <gitem diff="add"><label>Unexpanded Entity Reference Information Items</label>
<def><p>Entirely, for the same reason</p></def></gitem>
<gitem><label>Character Information Items</label>
<def><p>Entirely, for the same reason</p></def></gitem>
<gitem><label>Comment Information Items</label>
<def><p>Entirely, for the same reason</p></def></gitem>
<gitem><label>Namespace Information Items</label>
<def><p>Entirely, for the same reason</p></def></gitem>
</glist>
    </div3>
   </div2>
  </div1>
  <div1 id="otherProfiles">
   <head>Other profiles (non-normative)</head>
   <p>The profiles defined here, particularly the <specref ref="recommendedProfile"/>, can be used as a starting point for the definition of further profiles.  For example, the media type registrations for stylesheet languages applicable to XML such as <code>application/xslt+xml</code> or <code>text/css</code> might define a profile specifying appropriate <code>&lt;?xml-stylesheet type="[their media type]" . . .?&gt;</code> processing in addition to the processing required by <specref ref="recommendedProfile"/>.</p>
  </div1>
  <div1 id="conformance">
   <head>Conformance</head>
   <p>Conformance is a matter for any specification which references this one
to mandate, expressed in terms such as "Conforming implementations
<rfc2119>must</rfc2119> construct input data models from XML documents as
required by the <xspecref href="http://www.w3.org/TR/xml-proc-profiles/#recommendedProfile">recommended
XML processor profile</xspecref>."</p>
  </div1>
 </body>
 <back>
  <div1 id="references">
<head>References</head>

<div2 id="normative-references">
<head>Normative References</head>

<blist>
  <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-infoset" key="XML Information Set" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
    <titleref href="http://www.w3.org/TR/xml-infoset/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML Information Set</titleref>,
    World Wide Web Consortium.  Most recent edition (the second) is dated
04 Feb 2004, John Cowan and Richard Tobin, Editors.
    The <loc href="http://www.w3.org/TR/xml-infoset/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
    is available at http://www.w3.org/TR/xml-infoset/.
  </bibl>
<bibl id="RFC2119" key="RFC 2119">
  <titleref href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119: Key words for use in RFCs to Indicate Requirement Levels</titleref>.
  <emph>Internet Engineering Task Force, 1997.</emph>
</bibl>

<bibl id="RFC3986" key="RFC 3986">
  <titleref href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</titleref>.
  <emph>Internet Engineering Task Force, 2005.</emph>
</bibl>
   <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xproc" key="XProc: An XML Pipeline Language" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
     <titleref href="http://www.w3.org/TR/xproc/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XProc: An XML Pipeline Language</titleref>,
     Norman Walsh, Alex Milowski, and Henry S. Thompson, Editors.
     World Wide Web Consortium, 9 March 2010.
     This version is http://www.w3.org/TR/2010/REC-xproc-20100309/.
     The <loc href="http://www.w3.org/TR/xproc/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
     is available at http://www.w3.org/TR/xproc/.
   </bibl>

  <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-id" key="xml:id Version 1.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
    <titleref href="http://www.w3.org/TR/xml-id/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">xml:id Version 1.0</titleref>,
    Norman Walsh, Daniel Veillard, and Jonathan Marsh, Editors.
    World Wide Web Consortium, 09 Sep 2005.
    This version is http://www.w3.org/TR/2005/REC-xml-id-20050909/.
    The <loc href="http://www.w3.org/TR/xml-id/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
    is available at http://www.w3.org/TR/xml-id/.
  </bibl>

  <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xinclude" key="XML Inclusions (XInclude) Version 1.0 (Second Edition)" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
    <titleref href="http://www.w3.org/TR/xinclude/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML Inclusions (XInclude) Version 1.0 (Second Edition)</titleref>,
    David Orchard, Jonathan Marsh, and Daniel Veillard, Editors.
    World Wide Web Consortium, 15 Nov 2006.
    This version is http://www.w3.org/TR/2006/REC-xinclude-20061115/.
    The <loc href="http://www.w3.org/TR/xinclude/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
    is available at http://www.w3.org/TR/xinclude/.</bibl>

   <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml" key="Extensible Markup Language (XML) 1.0 (Fifth Edition)" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
     <titleref href="http://www.w3.org/TR/xml/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Extensible Markup Language (XML) 1.0 (Fifth Edition)</titleref>,
     Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, <emph>et. al.</emph>, Editors.
     World Wide Web Consortium, 28 Nov 2008.
     This version is http://www.w3.org/TR/2008/REC-xml-20081126/.
     The <loc href="http://www.w3.org/TR/xml/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
     is available at http://www.w3.org/TR/xml/.
   </bibl>

   <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml11" key="Extensible Markup Language (XML) 1.1 (Second Edition)" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
     <titleref href="http://www.w3.org/TR/xml11/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Extensible Markup Language (XML) 1.1 (Second Edition)</titleref>,
     Tim Bray, John Cowan, Jean Paoli, <emph>et. al.</emph>, Editors.
     World Wide Web Consortium, 16 Aug 2006.
     This version is http://www.w3.org/TR/2006/REC-xml11-20060816/.
     The <loc href="http://www.w3.org/TR/xml11/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
     is available at http://www.w3.org/TR/xml11/.
   </bibl>
 
<bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-names" key="Namespaces in XML 1.0 (Third Edition)" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
      <titleref href="http://www.w3.org/TR/xml-names/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Namespaces in
XML 1.0 (Third Edition)</titleref>, Tim Bray, Dave Hollander, Richard
Tobin, and Andrew Layman, Editors. World Wide Web Consortium,
16 Aug 2006. This version is
http://www.w3.org/TR/2006/REC-xml-names-20060816/. The <loc href="http://www.w3.org/TR/xml-names/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc> is available
at http://www.w3.org/TR/xml-names/.</bibl>
 <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-names11" key="Namespaces in XML 1.1 (Second Edition)" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
      <titleref href="http://www.w3.org/TR/xml-names11/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Namespaces in XML 1.1 (Second Edition)</titleref>, Tim Bray, Dave Hollander, Andrew Layman, and Richard Tobin, Editors. World Wide Web Consortium, 16 Aug 2006. This version is http://www.w3.org/TR/2006/REC-xml-names11-20060816/. The <loc href="http://www.w3.org/TR/xml-names11/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc> is available at http://www.w3.org/TR/xml-names11/.</bibl>
 <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xml-base" key="XML Base" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
     <titleref href="http://www.w3.org/TR/xmlbase/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML Base (Second Edition)</titleref>,
     Jonathan Marsh, Editor. World Wide Web Consortium, 28 January 2009.
     This version is http://www.w3.org/TR/2001/REC-xmlbase-20090128/.
     The <loc href="http://www.w3.org/TR/xmlbase/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
     is available at http://www.w3.org/TR/xmlbase/.
   </bibl>
</blist>
</div2>

<div2 id="non-normative-references">
<head>Non-normative References</head>

<blist>
   <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xpath" key="XML Path Language (XPath) Version 1.0" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
     <titleref href="http://www.w3.org/TR/xpath/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML Path Language (XPath) Version 1.0</titleref>,
     James Clark and Steven DeRose, Editors.
     World Wide Web Consortium, 16 Nov 1999.
     This version is http://www.w3.org/TR/1999/REC-xpath-19991116/.
     The <loc href="http://www.w3.org/TR/xpath/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
     is available at http://www.w3.org/TR/xpath/.
   </bibl>

   <bibl xmlns:xlink="http://www.w3.org/1999/xlink" id="xpath-datamodel" key="XQuery 1.0 and XPath 2.0 Data Model (XDM)" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">
     <titleref href="http://www.w3.org/TR/xpath-datamodel/" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XQuery 1.0 and XPath 2.0 Data Model (XDM)</titleref>,
     Ashok Malhotra, Jonathan Marsh, Norman Walsh, <emph>et. al.</emph>, Editors.
     World Wide Web Consortium, 21 Nov 2006.
     This version is http://www.w3.org/TR/2006/PR-xpath-datamodel-20061121/.
     The <loc href="http://www.w3.org/TR/xpath-datamodel/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest version</loc>
     is available at http://www.w3.org/TR/xpath-datamodel/.
   </bibl>
</blist>
</div2>
</div1>
 </back>
</spec>
