"Fossies" - the Fresh Open Source Software Archive

Member "xmlschema.dtd" (31 Aug 2001, 21774 Bytes) of package /linux/privat/old/dtd2xs154.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) XML source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 <!-- DTD for XML Schemas: Part 1: Structures
    2      Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
    3      Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
    4 <!-- $Id: XMLSchema.dtd,v 1.30 2001/03/16 15:23:02 ht Exp $ -->
    5 <!-- Note this DTD is NOT normative, or even definitive. -->           <!--d-->
    6 <!-- prose copy in the structures REC is the definitive version -->    <!--d-->
    7 <!-- (which shouldn't differ from this one except for this -->         <!--d-->
    8 <!-- comment and entity expansions, but just in case) -->              <!--d-->
    9 <!-- With the exception of cases with multiple namespace
   10      prefixes for the XML Schema namespace, any XML document which is
   11      not valid per this DTD given redefinitions in its internal subset of the
   12      'p' and 's' parameter entities below appropriate to its namespace
   13      declaration of the XML Schema namespace is almost certainly not
   14      a valid schema. -->
   15 
   16 <!ENTITY % nds 'xmlns'>
   17 
   18 <!-- annotation elements -->
   19 <!ENTITY % annotation "annotation">
   20 <!ENTITY % appinfo "appinfo">
   21 <!ENTITY % documentation "documentation">
   22 
   23 
   24 <!--
   25         DTD for XML Schemas: Part 2: Datatypes
   26         $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $
   27         Note this DTD is NOT normative, or even definitive. - - the
   28         prose copy in the datatypes REC is the definitive version
   29         (which shouldn't differ from this one except for this comment
   30         and entity expansions, but just in case)
   31   -->
   32 
   33 <!--
   34         This DTD cannot be used on its own, it is intended
   35         only for incorporation in XMLSchema.dtd, q.v.
   36   -->
   37 
   38 <!-- Define all the element names, with optional prefix -->
   39 <!ENTITY % simpleType "simpleType">
   40 <!ENTITY % restriction "restriction">
   41 <!ENTITY % list "list">
   42 <!ENTITY % union "union">
   43 <!ENTITY % maxExclusive "maxExclusive">
   44 <!ENTITY % minExclusive "minExclusive">
   45 <!ENTITY % maxInclusive "maxInclusive">
   46 <!ENTITY % minInclusive "minInclusive">
   47 <!ENTITY % totalDigits "totalDigits">
   48 <!ENTITY % fractionDigits "fractionDigits">
   49 <!ENTITY % length "length">
   50 <!ENTITY % minLength "minLength">
   51 <!ENTITY % maxLength "maxLength">
   52 <!ENTITY % enumeration "enumeration">
   53 <!ENTITY % whiteSpace "whiteSpace">
   54 <!ENTITY % pattern "pattern">
   55 
   56 <!--
   57         Customisation entities for the ATTLIST of each element
   58         type. Define one of these if your schema takes advantage
   59         of the anyAttribute='##other' in the schema for schemas
   60   -->
   61 
   62 <!ENTITY % simpleTypeAttrs "">
   63 <!ENTITY % restrictionAttrs "">
   64 <!ENTITY % listAttrs "">
   65 <!ENTITY % unionAttrs "">
   66 <!ENTITY % maxExclusiveAttrs "">
   67 <!ENTITY % minExclusiveAttrs "">
   68 <!ENTITY % maxInclusiveAttrs "">
   69 <!ENTITY % minInclusiveAttrs "">
   70 <!ENTITY % totalDigitsAttrs "">
   71 <!ENTITY % fractionDigitsAttrs "">
   72 <!ENTITY % lengthAttrs "">
   73 <!ENTITY % minLengthAttrs "">
   74 <!ENTITY % maxLengthAttrs "">
   75 <!ENTITY % enumerationAttrs "">
   76 <!ENTITY % whiteSpaceAttrs "">
   77 <!ENTITY % patternAttrs "">
   78 
   79 <!-- Define some entities for informative use as attribute
   80         types -->
   81 <!ENTITY % URIref "CDATA">
   82 <!ENTITY % XPathExpr "CDATA">
   83 <!ENTITY % QName "NMTOKEN">
   84 <!ENTITY % QNames "NMTOKENS">
   85 <!ENTITY % NCName "NMTOKEN">
   86 <!ENTITY % nonNegativeInteger "NMTOKEN">
   87 <!ENTITY % boolean "(true|false)">
   88 <!ENTITY % simpleDerivationSet "CDATA">
   89 <!--
   90         #all or space-separated list drawn from derivationChoice
   91   -->
   92 
   93 <!--
   94         Note that the use of 'facet' below is less restrictive
   95         than is really intended:  There should in fact be no
   96         more than one of each of minInclusive, minExclusive,
   97         maxInclusive, maxExclusive, totalDigits, fractionDigits,
   98         length, maxLength, minLength within datatype,
   99         and the min- and max- variants of Inclusive and Exclusive
  100         are mutually exclusive. On the other hand,  pattern and
  101         enumeration may repeat.
  102   -->
  103 <!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
  104 <!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
  105 <!ENTITY % bounds "%minBound; | %maxBound;">
  106 <!ENTITY % numeric "%totalDigits; | %fractionDigits;">
  107 <!ENTITY % ordered "%bounds; | %numeric;">
  108 <!ENTITY % unordered
  109    "%pattern; | %enumeration; | %whiteSpace; | %length; |
  110    %maxLength; | %minLength;">
  111 <!ENTITY % facet "%ordered; | %unordered;">
  112 <!ENTITY % facetAttr 
  113         "value CDATA #REQUIRED
  114         id ID #IMPLIED">
  115 <!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
  116 <!ENTITY % facetModel "(%annotation;)?">
  117 <!ELEMENT %simpleType;
  118         ((%annotation;)?, (%restriction; | %list; | %union;))>
  119 <!ATTLIST %simpleType;
  120     name      %NCName; #IMPLIED
  121     final     %simpleDerivationSet; #IMPLIED
  122     id        ID       #IMPLIED
  123     %simpleTypeAttrs;>
  124 <!-- name is required at top level -->
  125 <!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
  126 <!ATTLIST %list;
  127     itemType      %QName;             #IMPLIED
  128     id        ID       #IMPLIED
  129     %listAttrs;>
  130 <!--
  131         itemType and simpleType child are mutually exclusive,
  132         one is required
  133   -->
  134 <!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
  135 <!ATTLIST %union;
  136     id            ID       #IMPLIED
  137     memberTypes   %QNames;            #IMPLIED
  138     %unionAttrs;>
  139 <!--
  140         At least one item in memberTypes or one simpleType
  141         child is required
  142   -->
  143 
  144 <!ELEMENT %maxExclusive; %facetModel;>
  145 <!ATTLIST %maxExclusive;
  146         %facetAttr;
  147         %fixedAttr;
  148         %maxExclusiveAttrs;>
  149 <!ELEMENT %minExclusive; %facetModel;>
  150 <!ATTLIST %minExclusive;
  151         %facetAttr;
  152         %fixedAttr;
  153         %minExclusiveAttrs;>
  154 
  155 <!ELEMENT %maxInclusive; %facetModel;>
  156 <!ATTLIST %maxInclusive;
  157         %facetAttr;
  158         %fixedAttr;
  159         %maxInclusiveAttrs;>
  160 <!ELEMENT %minInclusive; %facetModel;>
  161 <!ATTLIST %minInclusive;
  162         %facetAttr;
  163         %fixedAttr;
  164         %minInclusiveAttrs;>
  165 
  166 <!ELEMENT %totalDigits; %facetModel;>
  167 <!ATTLIST %totalDigits;
  168         %facetAttr;
  169         %fixedAttr;
  170         %totalDigitsAttrs;>
  171 <!ELEMENT %fractionDigits; %facetModel;>
  172 <!ATTLIST %fractionDigits;
  173         %facetAttr;
  174         %fixedAttr;
  175         %fractionDigitsAttrs;>
  176 
  177 <!ELEMENT %length; %facetModel;>
  178 <!ATTLIST %length;
  179         %facetAttr;
  180         %fixedAttr;
  181         %lengthAttrs;>
  182 <!ELEMENT %minLength; %facetModel;>
  183 <!ATTLIST %minLength;
  184         %facetAttr;
  185         %fixedAttr;
  186         %minLengthAttrs;>
  187 <!ELEMENT %maxLength; %facetModel;>
  188 <!ATTLIST %maxLength;
  189         %facetAttr;
  190         %fixedAttr;
  191         %maxLengthAttrs;>
  192 
  193 <!-- This one can be repeated -->
  194 <!ELEMENT %enumeration; %facetModel;>
  195 <!ATTLIST %enumeration;
  196         %facetAttr;
  197         %enumerationAttrs;>
  198 
  199 <!ELEMENT %whiteSpace; %facetModel;>
  200 <!ATTLIST %whiteSpace;
  201         %facetAttr;
  202         %fixedAttr;
  203         %whiteSpaceAttrs;>
  204 
  205 <!-- This one can be repeated -->
  206 <!ELEMENT %pattern; %facetModel;>
  207 <!ATTLIST %pattern;
  208         %facetAttr;
  209         %patternAttrs;>
  210 
  211 <!-- Define all the element names, with optional prefix -->
  212 <!ENTITY % schema "schema">
  213 <!ENTITY % complexType "complexType">
  214 <!ENTITY % complexContent "complexContent">
  215 <!ENTITY % simpleContent "simpleContent">
  216 <!ENTITY % extension "extension">
  217 <!ENTITY % element "element">
  218 <!ENTITY % unique "unique">
  219 <!ENTITY % key "key">
  220 <!ENTITY % keyref "keyref">
  221 <!ENTITY % selector "selector">
  222 <!ENTITY % field "field">
  223 <!ENTITY % group "group">
  224 <!ENTITY % all "all">
  225 <!ENTITY % choice "choice">
  226 <!ENTITY % sequence "sequence">
  227 <!ENTITY % any "any">
  228 <!ENTITY % anyAttribute "anyAttribute">
  229 <!ENTITY % attribute "attribute">
  230 <!ENTITY % attributeGroup "attributeGroup">
  231 <!ENTITY % include "include">
  232 <!ENTITY % import "import">
  233 <!ENTITY % redefine "redefine">
  234 <!ENTITY % notation "notation">
  235 
  236 <!-- Customisation entities for the ATTLIST of each element type.
  237      Define one of these if your schema takes advantage of the
  238      anyAttribute='##other' in the schema for schemas -->
  239 
  240 <!ENTITY % schemaAttrs ''>
  241 <!ENTITY % complexTypeAttrs ''>
  242 <!ENTITY % complexContentAttrs ''>
  243 <!ENTITY % simpleContentAttrs ''>
  244 <!ENTITY % extensionAttrs ''>
  245 <!ENTITY % elementAttrs ''>
  246 <!ENTITY % groupAttrs ''>
  247 <!ENTITY % allAttrs ''>
  248 <!ENTITY % choiceAttrs ''>
  249 <!ENTITY % sequenceAttrs ''>
  250 <!ENTITY % anyAttrs ''>
  251 <!ENTITY % anyAttributeAttrs ''>
  252 <!ENTITY % attributeAttrs ''>
  253 <!ENTITY % attributeGroupAttrs ''>
  254 <!ENTITY % uniqueAttrs ''>
  255 <!ENTITY % keyAttrs ''>
  256 <!ENTITY % keyrefAttrs ''>
  257 <!ENTITY % selectorAttrs ''>
  258 <!ENTITY % fieldAttrs ''>
  259 <!ENTITY % includeAttrs ''>
  260 <!ENTITY % importAttrs ''>
  261 <!ENTITY % redefineAttrs ''>
  262 <!ENTITY % notationAttrs ''>
  263 <!ENTITY % annotationAttrs ''>
  264 <!ENTITY % appinfoAttrs ''>
  265 <!ENTITY % documentationAttrs ''>
  266 
  267 <!ENTITY % complexDerivationSet "CDATA">
  268       <!-- #all or space-separated list drawn from derivationChoice -->
  269 <!ENTITY % blockSet "CDATA">
  270       <!-- #all or space-separated list drawn from
  271                       derivationChoice + 'substitution' -->
  272 
  273 <!ENTITY % mgs '%all; | %choice; | %sequence;'>
  274 <!ENTITY % cs '%choice; | %sequence;'>
  275 <!ENTITY % formValues '(qualified|unqualified)'>
  276 
  277 
  278 <!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
  279 
  280 <!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
  281 
  282 <!-- This is used in part2 -->
  283 <!ENTITY % restriction1 '((%mgs; | %group;)?)'>
  284 <!ELEMENT %restriction; ((%annotation;)?,
  285                          (%restriction1; |
  286                           ((%simpleType;)?,(%facet;)*)),
  287                          (%attrDecls;))>
  288 <!ATTLIST %restriction;
  289     base      %QName;                  #IMPLIED
  290     id        ID       #IMPLIED
  291     %restrictionAttrs;>
  292 <!--
  293         base and simpleType child are mutually exclusive,
  294         one is required.
  295 
  296         restriction is shared between simpleType and
  297         simpleContent and complexContent (in XMLSchema.xsd).
  298         restriction1 is for the latter cases, when this
  299         is restricting a complex type, as is attrDecls.
  300   -->
  301 
  302 %xs-datatypes;
  303 
  304 <!-- the duplication below is to produce an unambiguous content model
  305      which allows annotation everywhere -->
  306 <!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
  307                     ((%simpleType; | %complexType;
  308                       | %element; | %attribute;
  309                       | %attributeGroup; | %group;
  310                       | %notation; ),
  311                      (%annotation;)*)* )>
  312 <!ATTLIST %schema;
  313    targetNamespace      %URIref;               #IMPLIED
  314    version              CDATA                  #IMPLIED
  315    %nds;                %URIref;               #FIXED 'http://www.w3.org/2001/XMLSchema'
  316    xmlns                CDATA                  #IMPLIED
  317    finalDefault         %complexDerivationSet; ''
  318    blockDefault         %blockSet;             ''
  319    id                   ID                     #IMPLIED
  320    elementFormDefault   %formValues;           'unqualified'
  321    attributeFormDefault %formValues;           'unqualified'
  322    xml:lang             CDATA                  #IMPLIED
  323    %schemaAttrs;>
  324 <!-- Note the xmlns declaration is NOT in the Schema for Schemas,
  325      because at the Infoset level where schemas operate,
  326      xmlns(:prefix) is NOT an attribute! -->
  327 <!-- The declaration of xmlns is a convenience for schema authors -->
  328  
  329 <!-- The id attribute here and below is for use in external references
  330      from non-schemas using simple fragment identifiers.
  331      It is NOT used for schema-to-schema reference, internal or
  332      external. -->
  333 
  334 <!-- a type is a named content type specification which allows attribute
  335      declarations-->
  336 <!-- -->
  337 
  338 <!ELEMENT %complexType; ((%annotation;)?,
  339                          (%simpleContent;|%complexContent;|
  340                           %particleAndAttrs;))>
  341 
  342 <!ATTLIST %complexType;
  343           name      %NCName;                        #IMPLIED
  344           id        ID                              #IMPLIED
  345           abstract  %boolean;                       #IMPLIED
  346           final     %complexDerivationSet;          #IMPLIED
  347           block     %complexDerivationSet;          #IMPLIED
  348           mixed (true|false) 'false'
  349           %complexTypeAttrs;>
  350 
  351 <!-- particleAndAttrs is shorthand for a root type -->
  352 <!-- mixed is disallowed if simpleContent, overriden if complexContent
  353      has one too. -->
  354 
  355 <!-- If anyAttribute appears in one or more referenced attributeGroups
  356      and/or explicitly, the intersection of the permissions is used -->
  357 
  358 <!ELEMENT %complexContent; (%restriction;|%extension;)>
  359 <!ATTLIST %complexContent;
  360           mixed (true|false) #IMPLIED
  361           id    ID           #IMPLIED
  362           %complexContentAttrs;>
  363 
  364 <!-- restriction should use the branch defined above, not the simple
  365      one from part2; extension should use the full model  -->
  366 
  367 <!ELEMENT %simpleContent; (%restriction;|%extension;)>
  368 <!ATTLIST %simpleContent;
  369           id    ID           #IMPLIED
  370           %simpleContentAttrs;>
  371 
  372 <!-- restriction should use the simple branch from part2, not the 
  373      one defined above; extension should have no particle  -->
  374 
  375 <!ELEMENT %extension; (%particleAndAttrs;)>
  376 <!ATTLIST %extension;
  377           base  %QName;      #REQUIRED
  378           id    ID           #IMPLIED
  379           %extensionAttrs;>
  380 
  381 <!-- an element is declared by either:
  382  a name and a type (either nested or referenced via the type attribute)
  383  or a ref to an existing element declaration -->
  384 
  385 <!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
  386                      (%unique; | %key; | %keyref;)*)>
  387 <!-- simpleType or complexType only if no type|ref attribute -->
  388 <!-- ref not allowed at top level -->
  389 <!ATTLIST %element;
  390             name               %NCName;               #IMPLIED
  391             id                 ID                     #IMPLIED
  392             ref                %QName;                #IMPLIED
  393             type               %QName;                #IMPLIED
  394             minOccurs          %nonNegativeInteger;   #IMPLIED
  395             maxOccurs          CDATA                  #IMPLIED
  396             nillable           %boolean;              #IMPLIED
  397             substitutionGroup  %QName;                #IMPLIED
  398             abstract           %boolean;              #IMPLIED
  399             final              %complexDerivationSet; #IMPLIED
  400             block              %blockSet;             #IMPLIED
  401             default            CDATA                  #IMPLIED
  402             fixed              CDATA                  #IMPLIED
  403             form               %formValues;           #IMPLIED
  404             %elementAttrs;>
  405 <!-- type and ref are mutually exclusive.
  406      name and ref are mutually exclusive, one is required -->
  407 <!-- In the absence of type AND ref, type defaults to type of
  408      substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
  409 <!-- default and fixed are mutually exclusive -->
  410 
  411 <!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
  412 <!ATTLIST %group; 
  413           name        %NCName;               #IMPLIED
  414           ref         %QName;                #IMPLIED
  415           minOccurs   %nonNegativeInteger;   #IMPLIED
  416           maxOccurs   CDATA                  #IMPLIED
  417           id          ID                     #IMPLIED
  418           %groupAttrs;>
  419 
  420 <!ELEMENT %all; ((%annotation;)?, (%element;)*)>
  421 <!ATTLIST %all;
  422           minOccurs   (1)                    #IMPLIED
  423           maxOccurs   (1)                    #IMPLIED
  424           id          ID                     #IMPLIED
  425           %allAttrs;>
  426 
  427 <!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
  428 <!ATTLIST %choice;
  429           minOccurs   %nonNegativeInteger;   #IMPLIED
  430           maxOccurs   CDATA                  #IMPLIED
  431           id          ID                     #IMPLIED
  432           %choiceAttrs;>
  433 
  434 <!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
  435 <!ATTLIST %sequence;
  436           minOccurs   %nonNegativeInteger;   #IMPLIED
  437           maxOccurs   CDATA                  #IMPLIED
  438           id          ID                     #IMPLIED
  439           %sequenceAttrs;>
  440 
  441 <!-- an anonymous grouping in a model, or
  442      a top-level named group definition, or a reference to same -->
  443 
  444 <!-- Note that if order is 'all', group is not allowed inside.
  445      If order is 'all' THIS group must be alone (or referenced alone) at
  446      the top level of a content model -->
  447 <!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
  448 <!-- Should allow minOccurs=0 inside order='all' . . . -->
  449 
  450 <!ELEMENT %any; (%annotation;)?>
  451 <!ATTLIST %any;
  452             namespace       CDATA                  '##any'
  453             processContents (skip|lax|strict)      'strict'
  454             minOccurs       %nonNegativeInteger;   '1'
  455             maxOccurs       CDATA                  '1'
  456             id              ID                     #IMPLIED
  457             %anyAttrs;>
  458 
  459 <!-- namespace is interpreted as follows:
  460                   ##any      - - any non-conflicting WFXML at all
  461 
  462                   ##other    - - any non-conflicting WFXML from namespace other
  463                                   than targetNamespace
  464 
  465                   ##local    - - any unqualified non-conflicting WFXML/attribute
  466                   one or     - - any non-conflicting WFXML from
  467                   more URI        the listed namespaces
  468                   references
  469 
  470                   ##targetNamespace ##local may appear in the above list,
  471                     with the obvious meaning -->
  472 
  473 <!ELEMENT %anyAttribute; (%annotation;)?>
  474 <!ATTLIST %anyAttribute;
  475             namespace       CDATA              '##any'
  476             processContents (skip|lax|strict)  'strict'
  477             id              ID                 #IMPLIED
  478             %anyAttributeAttrs;>
  479 <!-- namespace is interpreted as for 'any' above -->
  480 
  481 <!-- simpleType only if no type|ref attribute -->
  482 <!-- ref not allowed at top level, name iff at top level -->
  483 <!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
  484 <!ATTLIST %attribute;
  485           name      %NCName;      #IMPLIED
  486           id        ID            #IMPLIED
  487           ref       %QName;       #IMPLIED
  488           type      %QName;       #IMPLIED
  489           use       (prohibited|optional|required) #IMPLIED
  490           default   CDATA         #IMPLIED
  491           fixed     CDATA         #IMPLIED
  492           form      %formValues;  #IMPLIED
  493           %attributeAttrs;>
  494 <!-- type and ref are mutually exclusive.
  495      name and ref are mutually exclusive, one is required -->
  496 <!-- default for use is optional when nested, none otherwise -->
  497 <!-- default and fixed are mutually exclusive -->
  498 <!-- type attr and simpleType content are mutually exclusive -->
  499 
  500 <!-- an attributeGroup is a named collection of attribute decls, or a
  501      reference thereto -->
  502 <!ELEMENT %attributeGroup; ((%annotation;)?,
  503                        (%attribute; | %attributeGroup;)*,
  504                        (%anyAttribute;)?) >
  505 <!ATTLIST %attributeGroup;
  506                  name       %NCName;       #IMPLIED
  507                  id         ID             #IMPLIED
  508                  ref        %QName;        #IMPLIED
  509                  %attributeGroupAttrs;>
  510 
  511 <!-- ref iff no content, no name.  ref iff not top level -->
  512 
  513 <!-- better reference mechanisms -->
  514 <!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
  515 <!ATTLIST %unique;
  516           name     %NCName;       #REQUIRED
  517           id       ID             #IMPLIED
  518           %uniqueAttrs;>
  519 
  520 <!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
  521 <!ATTLIST %key;
  522           name     %NCName;       #REQUIRED
  523           id       ID             #IMPLIED
  524           %keyAttrs;>
  525 
  526 <!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
  527 <!ATTLIST %keyref;
  528           name     %NCName;       #REQUIRED
  529           refer    %QName;        #REQUIRED
  530           id       ID             #IMPLIED
  531           %keyrefAttrs;>
  532 
  533 <!ELEMENT %selector; ((%annotation;)?)>
  534 <!ATTLIST %selector;
  535           xpath %XPathExpr; #REQUIRED
  536           id    ID          #IMPLIED
  537           %selectorAttrs;>
  538 <!ELEMENT %field; ((%annotation;)?)>
  539 <!ATTLIST %field;
  540           xpath %XPathExpr; #REQUIRED
  541           id    ID          #IMPLIED
  542           %fieldAttrs;>
  543 
  544 <!-- Schema combination mechanisms -->
  545 <!ELEMENT %include; (%annotation;)?>
  546 <!ATTLIST %include;
  547           schemaLocation %URIref; #REQUIRED
  548           id             ID       #IMPLIED
  549           %includeAttrs;>
  550 
  551 <!ELEMENT %import; (%annotation;)?>
  552 <!ATTLIST %import;
  553           namespace      %URIref; #IMPLIED
  554           schemaLocation %URIref; #IMPLIED
  555           id             ID       #IMPLIED
  556           %importAttrs;>
  557 
  558 <!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
  559                       %attributeGroup; | %group;)*>
  560 <!ATTLIST %redefine;
  561           schemaLocation %URIref; #REQUIRED
  562           id             ID       #IMPLIED
  563           %redefineAttrs;>
  564 
  565 <!ELEMENT %notation; (%annotation;)?>
  566 <!ATTLIST %notation;
  567           name        %NCName;    #REQUIRED
  568           id          ID          #IMPLIED
  569           public      CDATA       #REQUIRED
  570           system      %URIref;    #IMPLIED
  571           %notationAttrs;>
  572 
  573 <!-- Annotation is either application information or documentation -->
  574 <!-- By having these here they are available for datatypes as well
  575      as all the structures elements -->
  576 
  577 <!ELEMENT %annotation; (%appinfo; | %documentation;)*>
  578 <!ATTLIST %annotation; %annotationAttrs;>
  579 
  580 <!-- User must define annotation elements in internal subset for this
  581      to work -->
  582 <!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
  583 <!ATTLIST %appinfo;
  584           source     %URIref;      #IMPLIED
  585           id         ID         #IMPLIED
  586           %appinfoAttrs;>
  587 <!ELEMENT %documentation; ANY>   <!-- too restrictive -->
  588 <!ATTLIST %documentation;
  589           source     %URIref;   #IMPLIED
  590           id         ID         #IMPLIED
  591           xml:lang   CDATA      #IMPLIED
  592           %documentationAttrs;>
  593 
  594 <!NOTATION XMLSchemaStructures PUBLIC
  595            'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
  596 <!NOTATION XML PUBLIC
  597            'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
  598 
  599