<?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="literal" required="false" name="scope " arity="singleton" diff="del" dg="ep01">
   <description><p>Either <pt>global</pt> or a complex type definition.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Scope" required="true" name="scope" arity="singleton" diff="add" dg="ep01" ref="sc_a"/>
  <property valueType="literal" required="false" name="value constraint " arity="singleton" diff="del" dg="ep01">
   <description>
    <p>A pair consisting of a value and one of <pt>default</pt>, <pt>fixed</pt>.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Value Constraint" required="false" name="value constraint" arity="singleton" diff="add" dg="ep01" ref="vc_a"/>
 </compdef>
 
 <compdef base="Annotated Component" abstract="true" name="Term" abbrev="t"/>
 
 <compdef base="Term" 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="Type Table" required="false" name="type table" arity="singleton" diff="add" dg="cta"/>
  <property valueType="literal" required="false" name="scope " arity="singleton" diff="del" dg="ep01">
   <description><p>Either <pt>global</pt> or a complex type definition.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Scope" required="true" name="scope" arity="singleton" diff="add" dg="ep01" ref="sc_e"/>
  <property valueType="literal" required="false" name="value constraint " arity="singleton" diff="del" dg="ep01">
   <description>
    <p>A pair consisting of a value and one of <pt>default</pt>, <pt>fixed</pt>.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Value Constraint" required="false" name="value constraint" arity="singleton" diff="add" dg="ep01" ref="vc_e"/>
  <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" diff="del" dg="b2834"/>
  <property valueType="component" type="Element Declaration" required="true" name="substitution group affiliations" arity="set" diff="add" dg="b2834"/>
  <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" diff="del" dg="cleanup-3"/>
  <property valueType="literal" required="true" name="disallowed substitutions" arity="set" diff="add" dg="cleanup-3">
   <description><p>
    A subset of {<emph>substitution</emph>, <emph>extension</emph>, <emph>restriction</emph>}.
   </p></description>   
  </property>
  <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"> 
   <!--* As part of unrolling ep01 in part 2, the 'scope' property has been stripped out of
       * the Type Definition component structure and placed into ctd as a change 
       * and into std as an addition.
       *
       * Q When part 1 and 2 can treat ep01 alike, should this be restored?
       * A No:  it reguires different treatment: it's diff="chg" in ctd, diff="add" in std.
       * That cannot easily be reconciled.
       * -msm 2005-06-07
       *** HST: 2006-02-05 disagrees with msm, CTD didn't use to have a {scope}, 
       * changes diff to 'add'.
       * MSM wonders (2006-03-23) why in that case it was marked with a 'chg' instead
       * of an 'add' in the first place.   Since it is the same for both std and ctd,
       * I'm taking it back out of std and ctd and putting it back into Type Def.
       *
       *-->
<!--*
  <property valueType="micro-component" type="Scope" required="true" 
   name="scope" arity="singleton" diff="add" dg="ep01-part1" ref="sc_c">
   <description>
    <p diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></p>
   </description>
  </property> *-->
  <property valueType="literal" required="true" name="final" arity="set" diff="add" dg="cleanup-3">
   <description><p>
    A subset of {<emph>extension</emph>, <emph>restriction</emph>}.
   </p></description>   
  </property>
  <property valueType="component" required="false" name="context" arity="singleton" diff="add" dg="context-2338">
   <description>
    <p>Either an <compref name="Element Declaration" ref="ed"/> or a <compref name="Complex Type Definition" ref="ctd"/>.</p>
   </description>
   <switched>Required if <propref comp="ctd" prop="name"/> is <termref def="key-null"/>,
    otherwise &must; be <termref def="key-null"/>.</switched>
  </property>
  <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="literal" required="true" name="content type " arity="singleton" diff="del" dg="ep01">
   <description>
    <p>One of <pt>empty</pt>, a simple type definition or a pair consisting of a <termref def="key-contentModel"/> (I.e. a <specref ref="Particle"/>) and one of <pt>mixed</pt>, <pt>element-only</pt>.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Content Type" required="true" name="content type" arity="singleton" diff="add" dg="ep01"/>
  <property valueType="literal" type="xs:reducedDerivationControl" required="true" name="prohibited substitutions" arity="set"/>
  <property valueType="component" type="Assertion" required="false" name="assertions" arity="sequence" diff="add" dg="b2861cc-1"/>
</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="literal" required="false" name="value constraint " arity="singleton" diff="del" dg="ep01">
   <description>
    <p>A pair consisting of a value and one of <pt>default</pt>, <pt>fixed</pt>.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Value Constraint" required="false" name="value constraint" arity="singleton" diff="add" dg="ep01" ref="vc_au"/>
 </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"/>
  <property valueType="component" type="Assertion" required="false" name="assertions" arity="sequence" diff="add" dg="b2861cc-1g"/>
 </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" type="Assertion" required="false" name="assertions" arity="sequence" diff="add" dg="b2861cc-1g"/>
 </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"/>
  <property valueType="component" type="Assertion" required="false" name="assertions" arity="sequence" diff="add" dg="b2861cc-1p"/>
 </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" diff="del" dg="f2f0701b">
   <description>
    <p>Either a <phrase diff="del" dg="cleanup-3">non-negative</phrase><phrase diff="add" dg="cleanup-3">positive</phrase> integer or <pt>unbounded</pt></p>
   </description>
  </property>
  <property valueType="literal" required="true" name="max occurs" arity="singleton" diff="add" dg="f2f0701b">
   <switched>Either a positive integer or <pt>unbounded</pt>. Required.</switched>
  </property>
  <property valueType="component" type="Term" required="true" name="term" arity="singleton"/>
  <property valueType="component" type="Annotation" required="false" name="annotations" arity="sequence" ref="a" diff="add" dg="bannotations"/>
 </compdef>
 
 <compdef base="Term" name="Wildcard" abstract="false" abbrev="w">
  <property valueType="literal" required="true" name="namespace constraint " arity="singleton" diff="del" dg="ep01">
   <description><p>One of <pt>any</pt>; a pair of <pt>not</pt> and a namespace name or <termref def="key-null"/>; or a set whose members are either namespace names or <termref def="key-null"/>.</p>
   </description>
  </property>
  <property valueType="micro-component" type="Namespace
   Constraint" required="true" name="namespace constraint" arity="singleton" diff="add" 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" diff="del" dg="f2f0701b">         
   <description><p>
     A restricted <phrase diff="del" dg="cta-ed">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.)</phrase><phrase diff="add" dg="cta-ed"
      ><bibref ref="bib-xpath"/></phrase> expression.</p>
    <!--* <ednote>
     <edtext>Should be a bibref</edtext>
    </ednote> *-->
   </description>
  </property>
  <property valueType="literal" required="true" name="selector " arity="singleton" diff="del" dg="f2f0701b.add.b4419.del">         
   <switched>A restricted <phrase diff="del" dg="cta-ed">XPath 2.0</phrase><phrase diff="add" 
     dg="cta-ed"><bibref ref="bib-xpath2"/></phrase> expression<phrase diff="del" dg="cta-ed"> 
     (please refer to normative references in the appendix)</phrase>. Required.</switched>
  </property>
  <property valueType="literal" required="true" name="selector" arity="singleton" diff="add" dg="b4419" ref="x">
   <switched>An <compref ref="x"/> property record. Required.</switched>
  </property>
  <property valueType="literal" type="xpathExpr" required="true" name="fields " arity="sequence" diff="del" dg="f2f0701b">
   <description><p>
     A non-empty list of restricted XPath expressions.</p></description>
  </property>
  <!-- SG's note: changed arity to singleton to make production system happy. *Should* not affect anything. -->
  <property valueType="literal" required="true" name="fields " arity="singleton" diff="del" dg="f2f0701b.add.b4419.del">
   <switched>A non-empty sequence of restricted <phrase diff="del" dg="cta-ed">XPath 
     2.0</phrase><phrase diff="add" dg="cta-ed"><bibref ref="bib-xpath2"/></phrase> 
    expressions<phrase diff="del" dg="cta-ed"> (please refer to normative references 
     in the appendix)</phrase>.</switched>
  </property>
  <property valueType="micro-component" type="XPath Expression" required="true" name="fields" arity="sequence" diff="add" dg="b4419" ref="x"/>
  
  <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>) &must; be <termref def="key-null"/>.</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 name="Assertion" abstract="false" base="Annotated Component" abbrev="as" diff="add" dg="b2861cc-1">
  <property valueType="literal" type="asName" required="true" name="category" arity="singleton" diff="del" dg="b2861cc-3"/>
  <property valueType="literal" type="assertExpr" required="true" name="test " arity="singleton" diff="del" dg="f2f0701b">         
   <description>
     <p><phrase diff="del" dg="trimtree">A restricted</phrase><phrase 
      diff="add" dg="trimtree">An</phrase>
      XPath expression.</p>
   </description>
  </property>
  <property valueType="literal" required="true" name="test " arity="singleton" diff="del" dg="f2f0701b.add.b4419.del">         
   <switched><phrase diff="del" dg="trimtree">A 
     restricted</phrase><phrase diff="add" dg="trimtree">An</phrase> 
    <phrase diff="del" dg="cta-ed">XPath 2.0</phrase><phrase diff="add" dg="cta-ed"
     ><bibref ref="bib-xpath2"/></phrase> expression<phrase diff="del" dg="cta-ed"> 
     (please refer to normative references in the appendix)</phrase>. Required.</switched>
  </property>
  <property valueType="literal" required="true" name="test" arity="singleton" diff="add" dg="b4419" ref="x">
   <switched>An <compref ref="x"/> property record. Required.</switched>
  </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
    <termref def="key-null"/>, otherwise (<propref comp="nd" prop="public identifier"/> is present) optional.</switched>
  </property>
  <property valueType="literal" type="publicID" required="false" name="public identifier" arity="singleton">
   <switched>Required if <propref comp="nd" prop="system identifier"/> is
    <termref def="key-null"/>, otherwise (<propref comp="nd" prop="system identifier"/> is present) optional.</switched> 
   <description>
    <!--* <p diff="del" dg="cta-ed">As defined in  *-->
    <p>As defined in 
     <phrase diff="del" dg="f2f0701b">
      <loc href="http://www.w3.org/TR/2004/REC-xml11-20040204/">Extensible
       Markup Language (XML) 1.1, Second Edition</loc>, Tim Bray et al., eds., W3C,
      4 February 2004.</phrase>
     <phrase diff="add" dg="f2f0701b"><phrase diff="del" dg="cta-ed">XML 1.1 
       (please refer to normative references in the appendix)</phrase><phrase 
       diff="add" dg="cta-ed"><bibref ref="ref-xml"/></phrase>.</phrase>
    </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">
  <!--* 2006-03-26 : Move scope back into Type Definition.  It was moved here in the
      * mistaken belief that the diff="chg" attribute was correct at least for ctd,
      * even if not for std.  That's not so, so I'm moving it back. *-->
  <!--*
  <property valueType="micro-component" type="Scope" required="true" 
   name="scope" arity="singleton" diff="add" dg="ep01-pt.add.context-2337.del" ref="sc_s">
   <description>
    <p diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></p>
   </description>
  </property>
  *-->
  <property valueType="literal" required="true" name="final" arity="set" diff="add" dg="cleanup-3">
   <description><p>
    A subset of {<emph>extension</emph>, <emph>restriction</emph>, <emph>list</emph>, <emph>union</emph>}.
   </p></description>   
  </property>
  <property valueType="component" required="false" name="context" arity="singleton" diff="add" dg="context-2337">
   <description>
    <p>Either an <compref name="Attribute Declaration" ref="ad"/>, an <compref name="Element Declaration" ref="ed"/>, a <compref name="Complex Type Definition" ref="ctd"/> or a <compref name="Simple Type Definition" ref="std"/>.</p>
   </description>
   <switched>Required if <propref comp="std" prop="name"/> is <termref def="key-null"/>,
    otherwise &must; be <termref def="key-null"/>.</switched>
  </property>
  <property valueType="component" type="Simple Type Definition" required="true" name="base type definition " arity="singleton" diff="del" dg="rec12-main">         
   <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="Type Definition" required="true" name="base type definition" arity="singleton" diff="add" dg="rec12-main">
   <description>
    <p>With one exception, the <propref comp="std" prop="base type definition"/> of any <compref ref="std"/> is a <compref ref="std"/>.  The exception is <termref def="simple-ur-type-itself" diff="del" dg="urtype">anySimpleType</termref><termref def="key-anySimpleType" diff="add" dg="urtype"><phrase><code>xs:anySimpleType</code></phrase></termref>, which has
     <termref def="key-urType" diff="del" dg="wd-200708-1">anyType</termref><termref def="key-anyType" diff="add" dg="wd-200708-1"><phrase><code>xs:anyType</code></phrase></termref>, a
     <compref ref="ctd"/>, as its <propref comp="std" prop="base type definition"/>.
    </p>
   </description>
  </property>
  <property valueType="component" type="Constraining 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" diff="del" dg="rec12-main">
   <description>
   </description>
  </property>
  <property valueType="literal" type="stVariety" required="false" name="variety" arity="singleton" diff="add" dg="rec12-main">
   <switched>Required for all <compref ref="std"/>s
    except <termref def="simple-ur-type-itself" diff="del" dg="urtype">anySimpleType</termref><termref def="key-anySimpleType" diff="add" dg="urtype"><phrase><code>xs:anySimpleType</code></phrase></termref>,
    in which it is <termref def="key-null"/>.</switched>
  </property>
  <!--* std-pim added 2006-03-23:  these properties were not displayed in 1.0 and
      * so need to be displayed as additions.
      *-->
  <property valueType="component" type="Simple Type Definition" required="false" name="primitive type definition" arity="singleton" diff="add" dg="std-pim">
   <switched><phrase diff="add" dg="rec12-main">With one exception, </phrase>required if <propref comp="std" prop="variety"/> is
    <pt>atomic</pt>,
    otherwise &must; be <termref def="key-null"/>.<phrase diff="add" dg="rec12-main">  The exception
     is
     <phrase diff="del" dg="urtype"><termref def="aat-def">anyAtomicType</termref></phrase><termref def="key-anyAtomicType" diff="add" dg="urtype"><phrase><code>xs:anyAtomicType</code></phrase></termref>, whose
     <propref comp="std" prop="primitive type definition"/> is <termref def="key-null"/>.</phrase></switched>
   <description><p><phrase diff="del" dg="rec12-main">&Must; be a</phrase><phrase diff="add" dg="rec12-main">If
      non-<termref def="key-null"/>, &must; be a <xtermref href="&XSP2.URI;#dt-primitive">primitive</xtermref></phrase> built-in definition.</p></description>
  </property>
  <property valueType="component" type="Simple Type Definition" required="false" name="item type definition" arity="singleton" diff="add" dg="std-pim">
   <switched>Required if <propref comp="std" prop="variety"/> is <pt>list</pt>, otherwise &must; be <termref def="key-null"/>.</switched>
  </property>
  <property valueType="component" type="Simple Type Definition" required="false" name="member type definitions" arity="sequence" diff="add" dg="std-pim">             
   <description><p><phrase diff="del" dg="cta">&Mustnot; be empty if <propref comp="std" prop="variety"/> is 
     <pt>union</pt> (unless the <compref ref="std"/> is that
      of <code>xsd:error</code>),
     otherwise &must; be <termref def="key-null"/>.</phrase>
    <phrase diff="add" dg="cta">&Must; be <termref def="key-null"/> if
     <propref comp="std" prop="variety"/> is not <pt>union</pt>.</phrase></p>
   </description>
  </property>
 </compdef>
 
 <compdef name="Schema" abstract="false" base="Annotated Component" abbrev="s">
  <property valueType="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" diff="add" dg="fpwd">
   <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">
  <property required="true" valueType="literal" type="ncVariety" arity="singleton" name="variety">
  </property>
  <property valueType="literal" required="true" arity="set" name="namespaces">
   <description>
    <p>A set each of whose members is either an xs:anyURI value or
     <termref def="key-null"/>.  Required.</p>
   </description>
  </property>
  <property valueType="literal" type="xs:QName" required="false" name="disallowed names " arity="set" diff="del" dg="b2867-1.add.vm19.del"/>
  <property valueType="literal" required="true" arity="set" name="disallowed names" diff="add" dg="vm19">
   <description>
    <p>A set each of whose members is either an xs:QName value or
     the keyword <pt>defined</pt>.  Required.</p>
   </description>
  </property>
 </microCompdef>
 
 <microCompdef name="Value Constraint" abbrev="vc">
  <property required="true" valueType="literal" arity="singleton" type="vcVariety" name="variety"/>
  <property valueType="literal" required="true" arity="singleton" name="value">
   <switched>
    An <termref def="key-vv">actual value</termref>.  Required.
   </switched>
  </property>
  <property valueType="literal" required="true" arity="singleton" name="lexical form" diff="add" dg="rq129">
   <switched>
    A character string.  Required.
    <phrase diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></phrase>
   </switched>
  </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 &must; be <termref def="key-null"/>.</switched>
   
  </property>
  <property required="false" valueType="micro-component" arity="singleton" type="Open Content" name="open content" diff="add" dg="vm13">
   <switched>Optional if <propref comp="ct" prop="variety"/> is <pt>element-only</pt> or <pt>mixed</pt>, otherwise &must; be <termref def="key-null"/>.</switched>
  </property>
  <property required="false" valueType="component" arity="singleton" type="Simple Type Definition" name="simple type definition">
   <switched>Required if <propref comp="ct" prop="variety"/> is <pt>simple</pt>, otherwise &must; be <termref def="key-null"/>.</switched>
  </property>
 </microCompdef>
 
 <microCompdef name="Open Content" abbrev="oc" diff="add" dg="vm13">
  <property required="true" valueType="literal" arity="singleton" type="ocMode" name="mode"/>
  <property required="true" valueType="component" arity="singleton" type="Wildcard" name="wildcard"/>
 </microCompdef>
 
 <microCompdef name="Key Binding" abbrev="kb" diff="del" dg="ep01">
  <!-- Never should have been here in the first place -->
  <property required="true" valueType="literal" arity="sequence" type="keyItem" name="key"/>
  <property required="true" valueType="infoitem" arity="singleton" type="i:Element" name="node"/>
 </microCompdef>
 
 
 <microCompdef name="Scope" abbrev="sc_a" baseref="sc">
  <property required="false" valueType="component" arity="singleton" type="Complex Type Definition" name="parent " diff="del" dg="scope-1973">
   <switched><phrase diff="del" dg="ep01">Required if <propref comp="sc_a" prop="variety"/> is <pt>local</pt>,
     otherwise &must; be <termref def="key-null"/></phrase><phrase diff="add" dg="ep01">&Must; be <termref def="key-null"/> if <propref comp="sc_a" prop="variety"/> is <pt>global</pt>, otherwise optional.</phrase></switched>
  </property>
  <property required="false" valueType="component" arity="singleton" name="parent" diff="add" dg="scope-1973">
   <switched>Either a <compref ref="ctd"/> or a <compref ref="agd"/>. Required if <propref comp="sc_a" prop="variety"/> is <pt>local</pt>,
    otherwise &must; be <termref def="key-null"/></switched>
  </property>
 </microCompdef>
 <microCompdef name="Scope" abbrev="sc_e" baseref="sc">
  <property required="false" valueType="component" arity="singleton" type="Complex Type Definition" name="parent " diff="del" dg="scope-1973">
   <switched><phrase diff="del" dg="ep01">Required if <propref comp="sc_e" prop="variety"/> is <pt>local</pt>,
     otherwise &must; be <termref def="key-null"/></phrase><phrase diff="add" dg="ep01">&Must; be <termref def="key-null"/> if <propref comp="sc_e" prop="variety"/> is <pt>global</pt>, otherwise optional.</phrase></switched>
  </property>
  <property required="false" valueType="component" arity="singleton" name="parent" diff="add" dg="scope-1973">
   <switched>Either a <compref ref="ctd"/> or a <compref ref="mgd"/>. Required if <propref comp="sc_e" prop="variety"/> is <pt>local</pt>,
    otherwise &must; be <termref def="key-null"/></switched>
  </property>
 </microCompdef>
 <!--* sc_c removed as part of re-merging scope for std and ctd, 2006-03-23 *-->
 <!--*
 <microCompdef name="Scope" abbrev="sc_c" baseref="sc">
  <property required="false" valueType="component" arity="singleton" type="Element Declaration" name="parent">
   <switched>Required if <propref comp="sc_c" prop="variety"/> is <pt>local</pt>,
    otherwise &must; be <termref def="key-null"/></switched>
  </property>
 </microCompdef>
 *-->
 <microCompdef name="Value Constraint" abbrev="vc_a" baseref="vc"/>
 <microCompdef name="Value Constraint" abbrev="vc_e" baseref="vc"/>
 <microCompdef name="Value Constraint" abbrev="vc_au" baseref="vc"/>

 <microCompdef name="Type Table" abbrev="tt" diff="add" dg="cta">
  <!--* required="false" if we reject cta-dd *-->
  <property required="true" valueType="component" type="Type Definition" arity="singleton" name="default type definition " diff="del" dg="cta-ta"/>
  <property required="true" arity="sequence" name="alternatives " valueType="micro-component" type="Type Alternative" diff="del" dg="cta-ta"/>
  <property required="true" arity="sequence" name="alternatives" valueType="component" type="Type Alternative" ref="tac" diff="add" dg="cta-ta"/>
  <property required="true" arity="singleton" name="default type definition" valueType="component" type="Type Alternative" ref="tac" diff="add" dg="cta-ta"/>
 </microCompdef>

 <microCompdef name="Type Alternative" abbrev="ta" diff="del" dg="cta-add-ta-del">
  <property required="true" valueType="literal" arity="singleton" name="test " diff="del" dg="cta-r1">
   <!--* !!! recast this description if possible - how? when? !!! *-->
   <switched>An <bibref ref="bib-xpath2"/> expression. Required.</switched>
  </property>
  <property required="true" valueType="micro-component" arity="singleton" 
   name="namespace context" type="Namespace Context" diff="del" dg="cta-r1">
  </property>
  <property valueType="literal" required="true" name="test" arity="singleton" diff="add" dg="cta-r1" ref="x">
   <switched>An <compref ref="x"/> property record. Required.</switched>
  </property>
  <property required="true" arity="singleton" name="type definition" valueType="component" type="Type Definition"/>
 </microCompdef>

 <compdef name="Type Alternative" abstract="false" base="Annotated Component" abbrev="tac" 
  diff="add" dg="cta-ta">
  <!--* Not sure if this is a harmless hack or harmful.  But with valueType='micro-component',
      * xmlschema.xsl produces '{test} A XPath Expression property record.  An XPath
      * Expression property record.  Optional.'  I'm going to hack this to suppress
      * that; if there is a better way, do it the better way and tell me. 
      *-->
  <property required="false" arity="singleton" name="test" valueType="literal" ref="x">
   <switched>An <compref ref="x"/> property record. Optional.</switched>
  </property>
  <property required="true" arity="singleton" name="type definition" valueType="component" 
   type="Type Definition"/>
 </compdef>

 <microCompdef name="XPath Expression" abbrev="x" diff="add" dg="xppr">
  <property valueType="literal" required="false" name="namespaces" arity="singleton"
	diff="add" dg="cta-xx">
   <switched>A set of (<code>prefix</code>, <code>URI</code>) pairs.</switched>
  </property>
  <property required="true" valueType="micro-component"  
   type="Namespace Binding" arity="set" name="namespace bindings">
  </property>
  <property valueType="literal" type="xs:anyURI" required="false" name="default namespace" arity="singleton"/>
  <property valueType="literal" type="xs:anyURI" required="false" name="base URI" arity="singleton"/>
  <property valueType="literal" required="true" name="expression" arity="singleton">
   <switched>An <bibref ref="bib-xpath2"/> expression. Required.</switched>
  </property>
 </microCompdef>
 <!-- <microCompdef name="XPath Expression" abbrev="x_a" baseref="x" diff="add" dg="b4419"/>
 <microCompdef name="XPath Expression" abbrev="x_c" baseref="x" diff="add" dg="cta-r1"/>
 <microCompdef name="XPath Expression" abbrev="x_idc" baseref="x" diff="add" dg="b4419"/> -->

 <microCompdef name="Namespace Binding" abbrev="nb" diff="add" dg="xppr">
  <property required="true" valueType="literal"  
   type="xs:NCName" arity="singleton" name="prefix">
  </property>
  <property valueType="literal" required="true" 
   arity="singleton" name="namespace" type="xs:anyURI">
  </property>
 </microCompdef>
 <!-- <microCompdef name="Namespace Binding" abbrev="nb_a" baseref="nb" diff="add" dg="b4419"/>
 <microCompdef name="Namespace Binding" abbrev="nb_c" baseref="nb" diff="add" dg="cta-r1"/>
 <microCompdef name="Namespace Binding" abbrev="nb_idc" baseref="nb" diff="add" dg="b4419"/> -->

 <microCompdef name="Namespace Context" abbrev="ncon" diff="add" dg="cta-xx">
  <property required="true" valueType="micro-component"  
   type="Namespace Binding" arity="set" name="namespace bindings">
  </property>
  <property valueType="literal" required="true" 
   arity="singleton" name="default namespace" type="anyURI">
  </property>
 </microCompdef>
<!--Microcomponents for schema compdef and PSVI property values -->
<compdef base="Annotated Component" abstract="true" 
 name="Type Definition" abbrev="td" home="structures"> 
 <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" diff="del" dg="cleanup-3"/>
 <!--* Unrolling ep01 in part 2:  the 'scope' property is stripped out of
     * the Type Definition component structure and placed into ctd as a change 
     * and into std as an addition.
     *
     * Q When part 1 and 2 can treat ep01 alike, should this be restored?
     * A No:  it reguires different treatment: it's diff="chg" in ctd, diff="add" in std.
     * That cannot easily be reconciled.
     * -msm 2005-06-07
     * HT points out (2006-02-05) in structures/compDefs.xml that actually, 
     * it should be diff="add" for ctd too:  the diff="chg" was apparently 
     * not to be taken seriously.  So (2006-03-23) I'm moving it back here.
     *-->
<!--*
 <property valueType="micro-component" type="scope" required="true"
  name="scope" arity="singleton" diff="add" dg="&ep01;">
  <description>
   <p diff="del" dg="wd2.silent"><phrase diff="add" dg="fpwd">Added in version 1.1.</phrase></p>
  </description>
 </property>
*-->
 <!--* set scope to 'del' instead of add, to get coloring correct in diff-wd.
     * We don't need it to be 'add' for diff-1.0, since scope was not present
     * in either ctd or std in 1.0.  We only need a 'del' to color the
     * deletion against the structures WD of 200502.
     *-->
  <property valueType="micro-component" type="Scope" required="true" 
    name="scope " arity="singleton" diff="del" dg="ep01-pt.add.context-2337.del" ref="sc_t">
   <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="Constraining Facet" base="Annotated Component" home="datatypes"
  abbrev="f"/>

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

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

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

<compdef name="Annotation" abstract="false" base="Component" abbrev="a" home="structures">   
 <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" diff="del" dg="b2203"/>
 <property valueType="infoitem" type="i:Attribute" required="false" name="attributes" arity="set" diff="add" dg="b2203"/>
</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>

 <microCompdef name="Scope" abbrev="sc_t" baseref="sc">
 <property required="false" valueType="component" arity="singleton"
  name="parent" ref="c">
  <switched>Either an <compref ref="ed" name="Element Declaration"/>
   or an <compref ref="ad" name="Attribute Declaration"/>.  Required 
   if <propref comp="sc_t" prop="variety"/> is <pt>local</pt>,
   <!--* changed to use sc_c's old wording *-->
   <!--* otherwise forbidden *-->
   otherwise &must; be <termref def="key-null"/>
  </switched>
  </property>
 </microCompdef>
</components>
