<?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 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 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 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 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"/>
  <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"> 
   <!--* 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="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 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 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">
   <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 required="true" name="namespace constraint " 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">         
   <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>) &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"/>
  <property valueType="literal" type="assertExpr" required="true" name="test" arity="singleton">         
   <description>
     <p>A restricted XPath expression.</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
    <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>As defined in 
     <phrase>
      <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></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="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">anySimpleType</termref>, which has
     <termref def="key-urType">anyType</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">anySimpleType</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
     <termref def="aat-def">anyAtomicType</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>&Mustnot; be empty if <propref comp="std" prop="variety"/> is <pt>union</pt>,
     otherwise &must; be <termref def="key-null"/>.</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 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="add" dg="b2867-1"/>
 </microCompdef>
 
 <microCompdef name="Value Constraint" abbrev="vc">
  <property required="true" valueType="literal" arity="singleton" type="vcVariety" name="variety"/>
  <property required="true" arity="singleton" name="value">
   <switched>
    An <termref def="key-vv">actual value</termref>.  Required.
   </switched>
  </property>
  <property 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="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="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"/>
<!--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"/>
 <!--* 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"/>
</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>
