xml.schema/src/org/netbeans/modules/xml/schema/resources/XMLSchema.dtd
author Milutin Kristofic <mkristofic@netbeans.org>
Mon, 30 Jan 2017 14:30:54 +0100
changeset 1583 fe20f672a61a
parent 47 0df50cd33223
permissions -rw-r--r--
Added Missing copyright information in source files
mkuchtiak@47
     1
<!-- The simpleType element and its constituent parts
mkristofic@1583
     2
<!--
mkristofic@1583
     3
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
mkristofic@1583
     4
mkristofic@1583
     5
Copyright 2009-2017 Oracle and/or its affiliates. All rights reserved.
mkristofic@1583
     6
mkristofic@1583
     7
Oracle and Java are registered trademarks of Oracle and/or its affiliates.
mkristofic@1583
     8
Other names may be trademarks of their respective owners.
mkristofic@1583
     9
mkristofic@1583
    10
The contents of this file are subject to the terms of either the GNU
mkristofic@1583
    11
General Public License Version 2 only ("GPL") or the Common
mkristofic@1583
    12
Development and Distribution License("CDDL") (collectively, the
mkristofic@1583
    13
"License"). You may not use this file except in compliance with the
mkristofic@1583
    14
License. You can obtain a copy of the License at
mkristofic@1583
    15
http://www.netbeans.org/cddl-gplv2.html
mkristofic@1583
    16
or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
mkristofic@1583
    17
specific language governing permissions and limitations under the
mkristofic@1583
    18
License.  When distributing the software, include this License Header
mkristofic@1583
    19
Notice in each file and include the License file at
mkristofic@1583
    20
nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
mkristofic@1583
    21
particular file as subject to the "Classpath" exception as provided
mkristofic@1583
    22
by Oracle in the GPL Version 2 section of the License file that
mkristofic@1583
    23
accompanied this code. If applicable, add the following below the
mkristofic@1583
    24
License Header, with the fields enclosed by brackets [] replaced by
mkristofic@1583
    25
your own identifying information:
mkristofic@1583
    26
"Portions Copyrighted [year] [name of copyright owner]"
mkristofic@1583
    27
mkristofic@1583
    28
Contributor(s):
mkristofic@1583
    29
mkristofic@1583
    30
The Original Software is NetBeans. The Initial Developer of the Original
mkristofic@1583
    31
Software is Sun Microsystems, Inc. Portions Copyright 2009-2010 Sun
mkristofic@1583
    32
Microsystems, Inc. All Rights Reserved.
mkristofic@1583
    33
mkristofic@1583
    34
If you wish your version of this file to be governed by only the CDDL
mkristofic@1583
    35
or only the GPL Version 2, indicate your decision by adding
mkristofic@1583
    36
"[Contributor] elects to include this software in this distribution
mkristofic@1583
    37
under the [CDDL or GPL Version 2] license." If you do not indicate a
mkristofic@1583
    38
single choice of license, a recipient has the option to distribute
mkristofic@1583
    39
your version of this file under either the CDDL, the GPL Version 2 or
mkristofic@1583
    40
to extend the choice of license to its licensees as provided above.
mkristofic@1583
    41
However, if you add GPL Version 2 code and therefore, elected the GPL
mkristofic@1583
    42
Version 2 license, then the option applies only if the new code is
mkristofic@1583
    43
made subject to such option by the copyright holder.
mkristofic@1583
    44
-->
mkuchtiak@47
    45
     are defined in XML Schema: Part 2: Datatypes -->
mkuchtiak@47
    46
<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
mkuchtiak@47
    47
<!ENTITY % nds 'xmlns%s;'>
mkuchtiak@47
    48
mkuchtiak@47
    49
<!-- Define all the element names, with optional prefix -->
mkuchtiak@47
    50
<!ENTITY % schema "%p;schema">
mkuchtiak@47
    51
<!ENTITY % complexType "%p;complexType">
mkuchtiak@47
    52
<!ENTITY % complexContent "%p;complexContent">
mkuchtiak@47
    53
<!ENTITY % simpleContent "%p;simpleContent">
mkuchtiak@47
    54
<!ENTITY % extension "%p;extension">
mkuchtiak@47
    55
<!ENTITY % element "%p;element">
mkuchtiak@47
    56
<!ENTITY % unique "%p;unique">
mkuchtiak@47
    57
<!ENTITY % key "%p;key">
mkuchtiak@47
    58
<!ENTITY % keyref "%p;keyref">
mkuchtiak@47
    59
<!ENTITY % selector "%p;selector">
mkuchtiak@47
    60
<!ENTITY % field "%p;field">
mkuchtiak@47
    61
<!ENTITY % group "%p;group">
mkuchtiak@47
    62
<!ENTITY % all "%p;all">
mkuchtiak@47
    63
<!ENTITY % choice "%p;choice">
mkuchtiak@47
    64
<!ENTITY % sequence "%p;sequence">
mkuchtiak@47
    65
<!ENTITY % any "%p;any">
mkuchtiak@47
    66
<!ENTITY % anyAttribute "%p;anyAttribute">
mkuchtiak@47
    67
<!ENTITY % attribute "%p;attribute">
mkuchtiak@47
    68
<!ENTITY % attributeGroup "%p;attributeGroup">
mkuchtiak@47
    69
<!ENTITY % include "%p;include">
mkuchtiak@47
    70
<!ENTITY % import "%p;import">
mkuchtiak@47
    71
<!ENTITY % redefine "%p;redefine">
mkuchtiak@47
    72
<!ENTITY % notation "%p;notation">
mkuchtiak@47
    73
mkuchtiak@47
    74
<!-- annotation elements -->
mkuchtiak@47
    75
<!ENTITY % annotation "%p;annotation">
mkuchtiak@47
    76
<!ENTITY % appinfo "%p;appinfo">
mkuchtiak@47
    77
<!ENTITY % documentation "%p;documentation">
mkuchtiak@47
    78
mkuchtiak@47
    79
<!-- Customisation entities for the ATTLIST of each element type.
mkuchtiak@47
    80
     Define one of these if your schema takes advantage of the
mkuchtiak@47
    81
     anyAttribute='##other' in the schema for schemas -->
mkuchtiak@47
    82
mkuchtiak@47
    83
<!ENTITY % schemaAttrs ''>
mkuchtiak@47
    84
<!ENTITY % complexTypeAttrs ''>
mkuchtiak@47
    85
<!ENTITY % complexContentAttrs ''>
mkuchtiak@47
    86
<!ENTITY % simpleContentAttrs ''>
mkuchtiak@47
    87
<!ENTITY % extensionAttrs ''>
mkuchtiak@47
    88
<!ENTITY % elementAttrs ''>
mkuchtiak@47
    89
<!ENTITY % groupAttrs ''>
mkuchtiak@47
    90
<!ENTITY % allAttrs ''>
mkuchtiak@47
    91
<!ENTITY % choiceAttrs ''>
mkuchtiak@47
    92
<!ENTITY % sequenceAttrs ''>
mkuchtiak@47
    93
<!ENTITY % anyAttrs ''>
mkuchtiak@47
    94
<!ENTITY % anyAttributeAttrs ''>
mkuchtiak@47
    95
<!ENTITY % attributeAttrs ''>
mkuchtiak@47
    96
<!ENTITY % attributeGroupAttrs ''>
mkuchtiak@47
    97
<!ENTITY % uniqueAttrs ''>
mkuchtiak@47
    98
<!ENTITY % keyAttrs ''>
mkuchtiak@47
    99
<!ENTITY % keyrefAttrs ''>
mkuchtiak@47
   100
<!ENTITY % selectorAttrs ''>
mkuchtiak@47
   101
<!ENTITY % fieldAttrs ''>
mkuchtiak@47
   102
<!ENTITY % includeAttrs ''>
mkuchtiak@47
   103
<!ENTITY % importAttrs ''>
mkuchtiak@47
   104
<!ENTITY % redefineAttrs ''>
mkuchtiak@47
   105
<!ENTITY % notationAttrs ''>
mkuchtiak@47
   106
<!ENTITY % annotationAttrs ''>
mkuchtiak@47
   107
<!ENTITY % appinfoAttrs ''>
mkuchtiak@47
   108
<!ENTITY % documentationAttrs ''>
mkuchtiak@47
   109
mkuchtiak@47
   110
<!ENTITY % complexDerivationSet "CDATA">
mkuchtiak@47
   111
      <!-- #all or space-separated list drawn from derivationChoice -->
mkuchtiak@47
   112
<!ENTITY % blockSet "CDATA">
mkuchtiak@47
   113
      <!-- #all or space-separated list drawn from
mkuchtiak@47
   114
                      derivationChoice + 'substitution' -->
mkuchtiak@47
   115
mkuchtiak@47
   116
<!ENTITY % mgs '%all; | %choice; | %sequence;'>
mkuchtiak@47
   117
<!ENTITY % cs '%choice; | %sequence;'>
mkuchtiak@47
   118
<!ENTITY % formValues '(qualified|unqualified)'>
mkuchtiak@47
   119
mkuchtiak@47
   120
mkuchtiak@47
   121
<!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
mkuchtiak@47
   122
mkuchtiak@47
   123
<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
mkuchtiak@47
   124
mkuchtiak@47
   125
<!-- This is used in part2 -->
mkuchtiak@47
   126
<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
mkuchtiak@47
   127
mkuchtiak@47
   128
%xs-datatypes;
mkuchtiak@47
   129
mkuchtiak@47
   130
<!-- the duplication below is to produce an unambiguous content model
mkuchtiak@47
   131
     which allows annotation everywhere -->
mkuchtiak@47
   132
<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
mkuchtiak@47
   133
                    (%simpleType; | %complexType;
mkuchtiak@47
   134
                      | %element; | %attribute;
mkuchtiak@47
   135
                      | %attributeGroup; | %group;
mkuchtiak@47
   136
                      | %notation; | %annotation;)* )>
mkuchtiak@47
   137
<!ATTLIST %schema;
mkuchtiak@47
   138
   targetNamespace      %URIref;               #IMPLIED
mkuchtiak@47
   139
   version              CDATA                  #IMPLIED
mkuchtiak@47
   140
   %nds;                %URIref;               #FIXED 'http://www.w3.org/2001/XMLSchema'
mkuchtiak@47
   141
   xmlns                CDATA                  #IMPLIED
mkuchtiak@47
   142
   finalDefault         %complexDerivationSet; ''
mkuchtiak@47
   143
   blockDefault         %blockSet;             ''
mkuchtiak@47
   144
   id                   ID                     #IMPLIED
mkuchtiak@47
   145
   elementFormDefault   %formValues;           'unqualified'
mkuchtiak@47
   146
   attributeFormDefault %formValues;           'unqualified'
mkuchtiak@47
   147
   xml:lang             CDATA                  #IMPLIED
mkuchtiak@47
   148
   %schemaAttrs;>
mkuchtiak@47
   149
<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
mkuchtiak@47
   150
     because at the Infoset level where schemas operate,
mkuchtiak@47
   151
     xmlns(:prefix) is NOT an attribute! -->
mkuchtiak@47
   152
<!-- The declaration of xmlns is a convenience for schema authors -->
mkuchtiak@47
   153
 
mkuchtiak@47
   154
<!-- The id attribute here and below is for use in external references
mkuchtiak@47
   155
     from non-schemas using simple fragment identifiers.
mkuchtiak@47
   156
     It is NOT used for schema-to-schema reference, internal or
mkuchtiak@47
   157
     external. -->
mkuchtiak@47
   158
mkuchtiak@47
   159
<!-- a type is a named content type specification which allows attribute
mkuchtiak@47
   160
     declarations-->
mkuchtiak@47
   161
<!-- -->
mkuchtiak@47
   162
mkuchtiak@47
   163
<!ELEMENT %complexType; ((%annotation;)?,
mkuchtiak@47
   164
                         (%simpleContent;|%complexContent;|
mkuchtiak@47
   165
                          %particleAndAttrs;))>
mkuchtiak@47
   166
mkuchtiak@47
   167
<!ATTLIST %complexType;
mkuchtiak@47
   168
          name      %NCName;                        #IMPLIED
mkuchtiak@47
   169
          id        ID                              #IMPLIED
mkuchtiak@47
   170
          abstract  %boolean;                       #IMPLIED
mkuchtiak@47
   171
          final     %complexDerivationSet;          #IMPLIED
mkuchtiak@47
   172
          block     %complexDerivationSet;          #IMPLIED
mkuchtiak@47
   173
          mixed (true|false) 'false'
mkuchtiak@47
   174
          %complexTypeAttrs;>
mkuchtiak@47
   175
mkuchtiak@47
   176
<!-- particleAndAttrs is shorthand for a root type -->
mkuchtiak@47
   177
<!-- mixed is disallowed if simpleContent, overriden if complexContent
mkuchtiak@47
   178
     has one too. -->
mkuchtiak@47
   179
mkuchtiak@47
   180
<!-- If anyAttribute appears in one or more referenced attributeGroups
mkuchtiak@47
   181
     and/or explicitly, the intersection of the permissions is used -->
mkuchtiak@47
   182
mkuchtiak@47
   183
<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
mkuchtiak@47
   184
<!ATTLIST %complexContent;
mkuchtiak@47
   185
          mixed (true|false) #IMPLIED
mkuchtiak@47
   186
          id    ID           #IMPLIED
mkuchtiak@47
   187
          %complexContentAttrs;>
mkuchtiak@47
   188
mkuchtiak@47
   189
<!-- restriction should use the branch defined above, not the simple
mkuchtiak@47
   190
     one from part2; extension should use the full model  -->
mkuchtiak@47
   191
mkuchtiak@47
   192
<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
mkuchtiak@47
   193
<!ATTLIST %simpleContent;
mkuchtiak@47
   194
          id    ID           #IMPLIED
mkuchtiak@47
   195
          %simpleContentAttrs;>
mkuchtiak@47
   196
mkuchtiak@47
   197
<!-- restriction should use the simple branch from part2, not the 
mkuchtiak@47
   198
     one defined above; extension should have no particle  -->
mkuchtiak@47
   199
mkuchtiak@47
   200
<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
mkuchtiak@47
   201
<!ATTLIST %extension;
mkuchtiak@47
   202
          base  %QName;      #REQUIRED
mkuchtiak@47
   203
          id    ID           #IMPLIED
mkuchtiak@47
   204
          %extensionAttrs;>
mkuchtiak@47
   205
mkuchtiak@47
   206
<!-- an element is declared by either:
mkuchtiak@47
   207
 a name and a type (either nested or referenced via the type attribute)
mkuchtiak@47
   208
 or a ref to an existing element declaration -->
mkuchtiak@47
   209
mkuchtiak@47
   210
<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
mkuchtiak@47
   211
                     (%unique; | %key; | %keyref;)*)>
mkuchtiak@47
   212
<!-- simpleType or complexType only if no type|ref attribute -->
mkuchtiak@47
   213
<!-- ref not allowed at top level -->
mkuchtiak@47
   214
<!ATTLIST %element;
mkuchtiak@47
   215
            name               %NCName;               #IMPLIED
mkuchtiak@47
   216
            id                 ID                     #IMPLIED
mkuchtiak@47
   217
            ref                %QName;                #IMPLIED
mkuchtiak@47
   218
            type               %QName;                #IMPLIED
mkuchtiak@47
   219
            minOccurs          %nonNegativeInteger;   #IMPLIED
mkuchtiak@47
   220
            maxOccurs          CDATA                  #IMPLIED
mkuchtiak@47
   221
            nillable           %boolean;              #IMPLIED
mkuchtiak@47
   222
            substitutionGroup  %QName;                #IMPLIED
mkuchtiak@47
   223
            abstract           %boolean;              #IMPLIED
mkuchtiak@47
   224
            final              %complexDerivationSet; #IMPLIED
mkuchtiak@47
   225
            block              %blockSet;             #IMPLIED
mkuchtiak@47
   226
            default            CDATA                  #IMPLIED
mkuchtiak@47
   227
            fixed              CDATA                  #IMPLIED
mkuchtiak@47
   228
            form               %formValues;           #IMPLIED
mkuchtiak@47
   229
            %elementAttrs;>
mkuchtiak@47
   230
<!-- type and ref are mutually exclusive.
mkuchtiak@47
   231
     name and ref are mutually exclusive, one is required -->
mkuchtiak@47
   232
<!-- In the absence of type AND ref, type defaults to type of
mkuchtiak@47
   233
     substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
mkuchtiak@47
   234
<!-- default and fixed are mutually exclusive -->
mkuchtiak@47
   235
mkuchtiak@47
   236
<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
mkuchtiak@47
   237
<!ATTLIST %group; 
mkuchtiak@47
   238
          name        %NCName;               #IMPLIED
mkuchtiak@47
   239
          ref         %QName;                #IMPLIED
mkuchtiak@47
   240
          minOccurs   %nonNegativeInteger;   #IMPLIED
mkuchtiak@47
   241
          maxOccurs   CDATA                  #IMPLIED
mkuchtiak@47
   242
          id          ID                     #IMPLIED
mkuchtiak@47
   243
          %groupAttrs;>
mkuchtiak@47
   244
mkuchtiak@47
   245
<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
mkuchtiak@47
   246
<!ATTLIST %all;
mkuchtiak@47
   247
          minOccurs   (1)                    #IMPLIED
mkuchtiak@47
   248
          maxOccurs   (1)                    #IMPLIED
mkuchtiak@47
   249
          id          ID                     #IMPLIED
mkuchtiak@47
   250
          %allAttrs;>
mkuchtiak@47
   251
mkuchtiak@47
   252
<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
mkuchtiak@47
   253
<!ATTLIST %choice;
mkuchtiak@47
   254
          minOccurs   %nonNegativeInteger;   #IMPLIED
mkuchtiak@47
   255
          maxOccurs   CDATA                  #IMPLIED
mkuchtiak@47
   256
          id          ID                     #IMPLIED
mkuchtiak@47
   257
          %choiceAttrs;>
mkuchtiak@47
   258
mkuchtiak@47
   259
<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
mkuchtiak@47
   260
<!ATTLIST %sequence;
mkuchtiak@47
   261
          minOccurs   %nonNegativeInteger;   #IMPLIED
mkuchtiak@47
   262
          maxOccurs   CDATA                  #IMPLIED
mkuchtiak@47
   263
          id          ID                     #IMPLIED
mkuchtiak@47
   264
          %sequenceAttrs;>
mkuchtiak@47
   265
mkuchtiak@47
   266
<!-- an anonymous grouping in a model, or
mkuchtiak@47
   267
     a top-level named group definition, or a reference to same -->
mkuchtiak@47
   268
mkuchtiak@47
   269
<!-- Note that if order is 'all', group is not allowed inside.
mkuchtiak@47
   270
     If order is 'all' THIS group must be alone (or referenced alone) at
mkuchtiak@47
   271
     the top level of a content model -->
mkuchtiak@47
   272
<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
mkuchtiak@47
   273
<!-- Should allow minOccurs=0 inside order='all' . . . -->
mkuchtiak@47
   274
mkuchtiak@47
   275
<!ELEMENT %any; (%annotation;)?>
mkuchtiak@47
   276
<!ATTLIST %any;
mkuchtiak@47
   277
            namespace       CDATA                  '##any'
mkuchtiak@47
   278
            processContents (skip|lax|strict)      'strict'
mkuchtiak@47
   279
            minOccurs       %nonNegativeInteger;   '1'
mkuchtiak@47
   280
            maxOccurs       CDATA                  '1'
mkuchtiak@47
   281
            id              ID                     #IMPLIED
mkuchtiak@47
   282
            %anyAttrs;>
mkuchtiak@47
   283
mkuchtiak@47
   284
<!-- namespace is interpreted as follows:
mkuchtiak@47
   285
                  ##any      - - any non-conflicting WFXML at all
mkuchtiak@47
   286
mkuchtiak@47
   287
                  ##other    - - any non-conflicting WFXML from namespace other
mkuchtiak@47
   288
                                  than targetNamespace
mkuchtiak@47
   289
mkuchtiak@47
   290
                  ##local    - - any unqualified non-conflicting WFXML/attribute
mkuchtiak@47
   291
                  one or     - - any non-conflicting WFXML from
mkuchtiak@47
   292
                  more URI        the listed namespaces
mkuchtiak@47
   293
                  references
mkuchtiak@47
   294
mkuchtiak@47
   295
                  ##targetNamespace ##local may appear in the above list,
mkuchtiak@47
   296
                    with the obvious meaning -->
mkuchtiak@47
   297
mkuchtiak@47
   298
<!ELEMENT %anyAttribute; (%annotation;)?>
mkuchtiak@47
   299
<!ATTLIST %anyAttribute;
mkuchtiak@47
   300
            namespace       CDATA              '##any'
mkuchtiak@47
   301
            processContents (skip|lax|strict)  'strict'
mkuchtiak@47
   302
            id              ID                 #IMPLIED
mkuchtiak@47
   303
            %anyAttributeAttrs;>
mkuchtiak@47
   304
<!-- namespace is interpreted as for 'any' above -->
mkuchtiak@47
   305
mkuchtiak@47
   306
<!-- simpleType only if no type|ref attribute -->
mkuchtiak@47
   307
<!-- ref not allowed at top level, name iff at top level -->
mkuchtiak@47
   308
<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
mkuchtiak@47
   309
<!ATTLIST %attribute;
mkuchtiak@47
   310
          name      %NCName;      #IMPLIED
mkuchtiak@47
   311
          id        ID            #IMPLIED
mkuchtiak@47
   312
          ref       %QName;       #IMPLIED
mkuchtiak@47
   313
          type      %QName;       #IMPLIED
mkuchtiak@47
   314
          use       (prohibited|optional|required) #IMPLIED
mkuchtiak@47
   315
          default   CDATA         #IMPLIED
mkuchtiak@47
   316
          fixed     CDATA         #IMPLIED
mkuchtiak@47
   317
          form      %formValues;  #IMPLIED
mkuchtiak@47
   318
          %attributeAttrs;>
mkuchtiak@47
   319
<!-- type and ref are mutually exclusive.
mkuchtiak@47
   320
     name and ref are mutually exclusive, one is required -->
mkuchtiak@47
   321
<!-- default for use is optional when nested, none otherwise -->
mkuchtiak@47
   322
<!-- default and fixed are mutually exclusive -->
mkuchtiak@47
   323
<!-- type attr and simpleType content are mutually exclusive -->
mkuchtiak@47
   324
mkuchtiak@47
   325
<!-- an attributeGroup is a named collection of attribute decls, or a
mkuchtiak@47
   326
     reference thereto -->
mkuchtiak@47
   327
<!ELEMENT %attributeGroup; ((%annotation;)?,
mkuchtiak@47
   328
                       (%attribute; | %attributeGroup;)*,
mkuchtiak@47
   329
                       (%anyAttribute;)?) >
mkuchtiak@47
   330
<!ATTLIST %attributeGroup;
mkuchtiak@47
   331
                 name       %NCName;       #IMPLIED
mkuchtiak@47
   332
                 id         ID             #IMPLIED
mkuchtiak@47
   333
                 ref        %QName;        #IMPLIED
mkuchtiak@47
   334
                 %attributeGroupAttrs;>
mkuchtiak@47
   335
mkuchtiak@47
   336
<!-- ref iff no content, no name.  ref iff not top level -->
mkuchtiak@47
   337
mkuchtiak@47
   338
<!-- better reference mechanisms -->
mkuchtiak@47
   339
<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
mkuchtiak@47
   340
<!ATTLIST %unique;
mkuchtiak@47
   341
          name     %NCName;       #REQUIRED
mkuchtiak@47
   342
	  id       ID             #IMPLIED
mkuchtiak@47
   343
	  %uniqueAttrs;>
mkuchtiak@47
   344
mkuchtiak@47
   345
<!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
mkuchtiak@47
   346
<!ATTLIST %key;
mkuchtiak@47
   347
          name     %NCName;       #REQUIRED
mkuchtiak@47
   348
	  id       ID             #IMPLIED
mkuchtiak@47
   349
	  %keyAttrs;>
mkuchtiak@47
   350
mkuchtiak@47
   351
<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
mkuchtiak@47
   352
<!ATTLIST %keyref;
mkuchtiak@47
   353
          name     %NCName;       #REQUIRED
mkuchtiak@47
   354
	  refer    %QName;        #REQUIRED
mkuchtiak@47
   355
	  id       ID             #IMPLIED
mkuchtiak@47
   356
	  %keyrefAttrs;>
mkuchtiak@47
   357
mkuchtiak@47
   358
<!ELEMENT %selector; ((%annotation;)?)>
mkuchtiak@47
   359
<!ATTLIST %selector;
mkuchtiak@47
   360
          xpath %XPathExpr; #REQUIRED
mkuchtiak@47
   361
          id    ID          #IMPLIED
mkuchtiak@47
   362
          %selectorAttrs;>
mkuchtiak@47
   363
<!ELEMENT %field; ((%annotation;)?)>
mkuchtiak@47
   364
<!ATTLIST %field;
mkuchtiak@47
   365
          xpath %XPathExpr; #REQUIRED
mkuchtiak@47
   366
          id    ID          #IMPLIED
mkuchtiak@47
   367
          %fieldAttrs;>
mkuchtiak@47
   368
mkuchtiak@47
   369
<!-- Schema combination mechanisms -->
mkuchtiak@47
   370
<!ELEMENT %include; (%annotation;)?>
mkuchtiak@47
   371
<!ATTLIST %include;
mkuchtiak@47
   372
          schemaLocation %URIref; #REQUIRED
mkuchtiak@47
   373
          id             ID       #IMPLIED
mkuchtiak@47
   374
          %includeAttrs;>
mkuchtiak@47
   375
mkuchtiak@47
   376
<!ELEMENT %import; (%annotation;)?>
mkuchtiak@47
   377
<!ATTLIST %import;
mkuchtiak@47
   378
          namespace      %URIref; #IMPLIED
mkuchtiak@47
   379
          schemaLocation %URIref; #IMPLIED
mkuchtiak@47
   380
          id             ID       #IMPLIED
mkuchtiak@47
   381
          %importAttrs;>
mkuchtiak@47
   382
mkuchtiak@47
   383
<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
mkuchtiak@47
   384
                      %attributeGroup; | %group;)*>
mkuchtiak@47
   385
<!ATTLIST %redefine;
mkuchtiak@47
   386
          schemaLocation %URIref; #REQUIRED
mkuchtiak@47
   387
          id             ID       #IMPLIED
mkuchtiak@47
   388
          %redefineAttrs;>
mkuchtiak@47
   389
mkuchtiak@47
   390
<!ELEMENT %notation; (%annotation;)?>
mkuchtiak@47
   391
<!ATTLIST %notation;
mkuchtiak@47
   392
	  name        %NCName;    #REQUIRED
mkuchtiak@47
   393
	  id          ID          #IMPLIED
mkuchtiak@47
   394
	  public      CDATA       #REQUIRED
mkuchtiak@47
   395
	  system      %URIref;    #IMPLIED
mkuchtiak@47
   396
	  %notationAttrs;>
mkuchtiak@47
   397
mkuchtiak@47
   398
<!-- Annotation is either application information or documentation -->
mkuchtiak@47
   399
<!-- By having these here they are available for datatypes as well
mkuchtiak@47
   400
     as all the structures elements -->
mkuchtiak@47
   401
mkuchtiak@47
   402
<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
mkuchtiak@47
   403
<!ATTLIST %annotation; %annotationAttrs;>
mkuchtiak@47
   404
mkuchtiak@47
   405
<!-- User must define annotation elements in internal subset for this
mkuchtiak@47
   406
     to work -->
mkuchtiak@47
   407
<!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
mkuchtiak@47
   408
<!ATTLIST %appinfo;
mkuchtiak@47
   409
          source     %URIref;      #IMPLIED
mkuchtiak@47
   410
          id         ID         #IMPLIED
mkuchtiak@47
   411
          %appinfoAttrs;>
mkuchtiak@47
   412
<!ELEMENT %documentation; ANY>   <!-- too restrictive -->
mkuchtiak@47
   413
<!ATTLIST %documentation;
mkuchtiak@47
   414
          source     %URIref;   #IMPLIED
mkuchtiak@47
   415
          id         ID         #IMPLIED
mkuchtiak@47
   416
          xml:lang   CDATA      #IMPLIED
mkuchtiak@47
   417
          %documentationAttrs;>
mkuchtiak@47
   418
mkuchtiak@47
   419
<!NOTATION XMLSchemaStructures PUBLIC
mkuchtiak@47
   420
           'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
mkuchtiak@47
   421
<!NOTATION XML PUBLIC
mkuchtiak@47
   422
           'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >