<?xml version='1.0'?>
<?xml-stylesheet type='text/xsl' href='compView.xsl'?>
<!DOCTYPE components SYSTEM "compDescr.dtd" [
<!ENTITY Mustnot "<rfc2119>Must not</rfc2119>">
<!ENTITY must "<rfc2119>must</rfc2119>">
<!ENTITY Must "<rfc2119>Must</rfc2119>">
<!ENTITY derived "derived">
]>
<components xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <compdef base="Annotated Component" name="Attribute Declaration" abstract="false" abbrev="ad">   
      <property valueType="literal" type="xs:NCName" required="true" name="name" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
      <property valueType="component" type="Simple Type Definition" required="true" name="type definition" arity="singleton"/>
    <property valueType="micro-component" type="Scope" required="false" name="scope" arity="singleton" diff="chg" dg="ep01"/>
      <property valueType="micro-component" type="Value Constraint"
	required="false" name="value constraint" arity="singleton"
	diff="chg" dg="ep01"/>
   </compdef>
 
   <compdef base="Annotated Component" abstract="true" name="Term" abbrev="t"/>
 
   <compdef base="Annotated Component" name="Element Declaration" abstract="false" abbrev="ed">      
      <property valueType="literal" type="xs:NCName" required="true" name="name" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
      <property valueType="component" type="Type Definition" required="true" name="type definition" arity="singleton"/>
      <property valueType="micro-component" type="Scope"
	required="false" name="scope" arity="singleton" diff="chg" dg="ep01"/>
      <property valueType="micro-component" type="Value Constraint"
	required="false" name="value constraint" arity="singleton"
	diff="chg" dg="ep01"/>
      <property valueType="literal" type="xs:boolean" required="true" name="nillable" arity="singleton"/>
      <property valueType="component" type="Identity-Constraint Definition" required="false" name="identity-constraint definitions" arity="set"/>
      <property valueType="component" type="Element Declaration" required="false" name="substitution group affiliation" arity="singleton"/>
      <property valueType="literal" type="xs:reducedDerivationControl" required="true" name="substitution group exclusions" arity="set"/>
      <property valueType="literal" type="xs:derivationControl" required="true" name="disallowed substitutions" arity="set"/>
      <property valueType="literal" type="xs:boolean" required="true" name="abstract" arity="singleton"/>
   </compdef>
 
   <compdef base="Type Definition" name="Complex Type Definition" abstract="false" abbrev="ctd">
      <property valueType="literal" type="xs:reducedDerivationControl" required="true" name="derivation method" arity="singleton"/>
      <property valueType="literal" type="xs:boolean" required="true" name="abstract" arity="singleton"/>
      <property valueType="component" type="Attribute Use" required="false" name="attribute uses" arity="set"/>
      <property valueType="component" type="Wildcard" required="false" name="attribute wildcard" arity="singleton"/>
      <property valueType="micro-component" type="Content Type"
	required="true" name="content type" arity="singleton"
	diff="chg" dg="ep01"/>
      <property valueType="literal" type="xs:reducedDerivationControl" required="true" name="prohibited substitutions" arity="set"/>
    <property valueType="component" arity="set" type="Element Declaration" name="element declarations" required="false"/>
   </compdef>

   <compdef name="Attribute Use" abstract="false" base="Annotated Component" abbrev="au">
      <property valueType="literal" type="xs:boolean" required="true" name="required" arity="singleton"/>
      <property valueType="component" type="Attribute Declaration" required="true" name="attribute declaration" arity="singleton"/>
      <property valueType="micro-component" type="Value Constraint"
	required="false" name="value constraint" arity="singleton"
	diff="chg" dg="ep01"/>
   </compdef>
 
 <compdef name="Element Use" abstract="false" base="Term" abbrev="eu">
      <property valueType="component" type="Element Declaration" required="true" name="element declaration" arity="singleton"/>
      <property valueType="micro-component" type="Value Constraint"
	required="false" name="value constraint" arity="singleton"
	diff="chg" dg="ep01"/>
  <property valueType="literal" type="xs:boolean" required="true" name="nillable" arity="singleton"/>
      <property valueType="component" type="Identity-Constraint Definition" required="false" name="identity-constraint definitions" arity="set"/>
   </compdef>

   <compdef base="Annotated Component" name="Attribute Group Definition" abstract="false" abbrev="agd">
      <property valueType="literal" type="xs:NCName" required="true" name="name" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
      <property valueType="component" type="Attribute Use" required="false" name="attribute uses" arity="set"/>
      <property valueType="component" type="Wildcard" required="false" name="attribute wildcard" arity="singleton"/>
   </compdef>

   <compdef base="Annotated Component" name="Model Group Definition" abstract="false" abbrev="mgd">
      <property valueType="literal" type="xs:NCName" required="true" name="name" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
      <property valueType="component" type="Model Group" required="true" name="model group" arity="singleton"/>
    <property valueType="component" arity="set" type="Element Declaration" name="element declarations" required="false"/>
   </compdef>

   <compdef base="Term" name="Model Group" abstract="false" abbrev="mg">
      <property valueType="literal" type="compositor" required="true" name="compositor" arity="singleton"/>
      <property valueType="component" type="Particle" required="false" name="particles" arity="sequence"/>
   </compdef>

   <compdef name="Particle" abstract="false" base="Component" abbrev="p">
      <property valueType="literal" type="xs:nonNegativeInteger" required="true" name="min occurs" arity="singleton"/>
      <property valueType="literal" type="xs:allNNI" required="true" name="max occurs" arity="singleton">
       <description>
        <p>Either a non-negative integer or <pt>unbounded</pt></p>
       </description>
      </property>
      <property valueType="component" type="Term" required="true" name="term" arity="singleton"/>
   </compdef>

   <compdef base="Term" name="Wildcard" abstract="false" abbrev="w">
      <property valueType="micro-component" type="Namespace
	Constraint" required="false" name="namespace constraint"
	arity="singleton" diff="chg" dg="ep01"/>
      <property valueType="literal" type="processContents" required="true" name="process contents" arity="singleton"/>
   </compdef>

   <compdef name="Identity-constraint Definition" abstract="false" base="Annotated Component" abbrev="icd">
      <property valueType="literal" type="xs:NCName" required="true" name="name" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
      <property valueType="literal" type="icName" required="true" name="identity-constraint category" arity="singleton"/>
      <property valueType="literal" type="xpathExpr" required="true" name="selector" arity="singleton">         
         <description><p>
    A restricted XPath (<loc href="http://www.w3.org/TR/1999/REC-xpath-19991116">XML Path Language</loc>, James Clark
and Steve DeRose, eds., W3C, 16 November 1999.) expression.</p>
          <ednote>
           <edtext>Should be a bibref</edtext>
          </ednote>
         </description>
      </property>
      <property valueType="literal" type="xpathExpr" required="true" name="fields" arity="sequence">
         
         <description><p>
    A non-empty list of restricted XPath expressions.</p></description>
      </property>

      <property valueType="component" type="Identity-Constraint Definition" required="false" name="referenced key" arity="singleton">
       <switched>
        Required if <propref comp="icd" prop="identity-constraint category"/>
is <pt>keyref</pt>, 
          otherwise (<propref comp="icd" prop="identity-constraint category"/>
is <pt>key</pt> or <pt>unique</pt>) forbidden.</switched>
         <description>          
          <p>If a value is present, its <propref comp="icd" prop="identity-constraint category"/> must be
<pt>key</pt> or <pt>unique</pt>.</p>
         </description>
      </property>
   </compdef>

   <compdef base="Annotated Component" name="Notation Declaration" abstract="false" abbrev="nd">
      <property valueType="literal" type="xs:NCName" required="true" name="name" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
      <property valueType="literal" type="xs:anyURI" required="false" name="system identifier" arity="singleton">	 
         <switched>Required if <propref comp="nd" prop="public identifier"/> is
absent, otherwise (<propref comp="nd" prop="public identifier"/> is present) forbidden.</switched>
      </property>
      <property valueType="literal" type="publicID" required="false" name="public identifier" arity="singleton">
       <switched>Required if <propref comp="nd" prop="system identifier"/> is
absent, otherwise (<propref comp="nd" prop="system identifier"/> is present) forbidden.</switched> 
         <description>
          <p>As defined in <loc href="http://www.w3.org/TR/2000/REC-xml-20001006">Extensible
Markup Language (XML) 1.0, Second Edition</loc>, Tim Bray et al., eds., W3C,
6 October 2000.</p>
          <ednote>
           <edtext>Should use bibref</edtext>
          </ednote>
         </description>
      </property>
   </compdef>

 <!-- Not quite the same as in datatypes, because of crossrefs -->
   <compdef base="Type Definition" name="Simple Type Definition" abstract="false" abbrev="std">
      <property valueType="component" type="Simple Type Definition" required="true" name="base type definition" arity="singleton">         
         <description>
            <p>
If the datatype has been &derived; by restriction then the <compref ref="std"/> component
from which it is &derived;, otherwise
the <termref def="key-simpleUrType"/>.
</p>
         </description>
      </property>
      <property valueType="component" type="Facet" required="false" name="facets" arity="set"/>
      <property valueType="component" type="Fundamental Facet" required="false" name="fundamental facets" arity="set"/>
      <property valueType="literal" type="stVariety" required="true" name="variety" arity="singleton"/>
    <property valueType="component" type="Simple Type Definition" required="false" name="primitive type definition" arity="singleton">
     <switched>Required if <propref comp="std" prop="variety"/> is <pt>atomic</pt>, otherwise forbidden.</switched>
       
               <description><p>&Must; be a
built-in definition.</p></description>
            </property>
    <property valueType="component" type="Simple Type Definition" required="false" name="item type definition" arity="singleton">
     <switched>Required if <propref comp="std" prop="variety"/> is <pt>list</pt>, otherwise forbidden.</switched>
    </property>
    <property valueType="component" type="Simple Type Definition" required="false" name="member type definitions" arity="sequence">             
               <description><p>&Mustnot; be empty if <propref comp="std" prop="variety"/> is <pt>union</pt>,
otherwise &must; be absent.</p></description>
            </property>
   </compdef>

   <compdef name="Schema" abstract="false" base="Annotated Component" abbrev="s">
      <property valueType="micro-component" type="Type Definition"
	required="false" name="type definitions" arity="set"
	diff="chg" dg="ep01"/>
      <property valueType="component" type="Attribute Declaration" required="false" name="attribute declarations" arity="set"/>
      <property valueType="component" type="Element Declaration" required="false" name="element declarations" arity="set"/>
      <property valueType="component" type="Attribute Group Definition" required="false" name="attribute group definitions" arity="set"/>
      <property valueType="component" type="Model Group Definition" required="false" name="model group definitions" arity="set"/>
      <property valueType="component" type="Notation Declaration" required="false" name="notation declarations" arity="set"/>
    <property valueType="component" type="Identity-Constraint Definition" required="false" name="identity-constraint definitions" arity="set">
    <description>
 <p diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></p>
</description>
    </property>
   </compdef>

 <!--Microcomponents for schema compdef and PSVI property values -->
 <microCompdef name="Namespace Constraint" abbrev="nc">
  <description>
   <p>Specifies a set of namespaces, either the universe, or an enumeration, or
the complement of an enumeration.</p>
  </description>
  <property required="true" valueType="literal" type="ncVariety" arity="singleton" name="variety">
   <description>
    <p>Specifies the interpretation of this constraint.</p>
   </description>
  </property>
  <property required="false" valueType="literal" arity="set" type="xs:anyURI" name="namespaces"/>
 </microCompdef>
 
 <microCompdef name="Value Constraint" abbrev="vc">
  <property required="true" valueType="literal" arity="singleton" type="vcVariety" name="variety"/>
  <property required="true" valueType="literal" arity="singleton" type="abstractAny" name="value"/>
  <property required="true" valueType="literal" arity="singleton" type="xs:string" name="lexicalForm">
   <description>
    <p diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></p>
   </description>
  </property>
 </microCompdef>
 
 <microCompdef name="Content Type" abbrev="ct">
  <property required="true" valueType="literal" arity="singleton" type="ctVariety" name="variety"/>
  <property required="false" valueType="component" arity="singleton" type="Particle" name="particle">
 <switched>Required if <propref comp="ct" prop="variety"/> is <pt>element-only</pt> or <pt>mixed</pt>, otherwise forbidden.</switched>

</property>
  <property required="false" valueType="component" arity="singleton" type="Simple Type Definition" name="simpleTypeDefinition">
   <switched>Required if <propref comp="ct" prop="variety"/> is <pt>simple</pt>, otherwise forbidden.</switched>
</property>
 </microCompdef>

  <microCompdef name="Key Binding" abbrev="kb">
  <property required="true" valueType="literal" arity="sequence" type="keyItem" name="key"/>
  <property required="true" valueType="infoitem" arity="singleton" type="i:Element" name="node"/>
 </microCompdef>
 
<!--Microcomponents for schema compdef and PSVI property values -->
<compdef base="Annotated Component" abstract="true" name="Type Definition" abbrev="td"> 
 <property valueType="literal" type="xs:NCName" required="false" name="name" arity="singleton"/>
 <property valueType="literal" type="xs:anyURI" required="false" name="target namespace" arity="singleton"/>
 <property valueType="component" type="Type Definition" required="true" name="base type definition" arity="singleton">         
 </property>
 <property valueType="literal" type="xs:derivationControl" required="true" name="final" arity="set"/>
 <property valueType="micro-component" type="Scope" required="true"
name="scope" arity="singleton" diff="chg" dg="ep01">
  <description>
   <p diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></p>
  </description>
 </property>
</compdef>

<compdef abstract="true" name="Facet" base="Annotated Component" abbrev="f"/>

<compdef abstract="true" name="Fundamental Facet" base="Component" abbrev="ff"/>

<compdef abstract="true" name="Component" abbrev="c"/>

<compdef abstract="true" name="Annotated Component" abbrev="ac" base="Component">
 <property valueType="component" type="Annotation" required="false" name="annotations" arity="sequence"/>
</compdef>

<compdef name="Annotation" abstract="false" base="Component" abbrev="a">   
 <property valueType="infoitem" type="i:Element" required="false" name="application information" arity="sequence"/>
 <property valueType="infoitem" type="i:Element" required="false" name="user information" arity="sequence"/>
 <property valueType="infoitem" type="i:Attribute" required="false" name="attributes" arity="sequence"/>
</compdef>

<microCompdef name="Scope" abbrev="sc">
 <property required="true" valueType="literal" arity="singleton" type="scopeVariety" name="variety"/>
 <property required="false" valueType="component" arity="singleton" type="Component" name="parent">
  <switched>Required if <propref comp="sc" prop="variety"/> is <pt>local</pt>,
otherwise forbidden.</switched>
 </property>
</microCompdef>

</components>
