<!-- | |
Copyright 2004 The Apache Software Foundation | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |
implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
--> | |
<!-- DTD for XML Schemas: Part 1: Structures | |
Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN" | |
Official Location: http://www.w3.org/2001/XMLSchema.dtd --> | |
<!-- $Id: XMLSchema.dtd,v 1.1.1.1 2003/09/30 14:03:01 rubys Exp $ --> | |
<!-- Note this DTD is NOT normative, or even definitive. --> <!--d--> | |
<!-- prose copy in the structures REC is the definitive version --> <!--d--> | |
<!-- (which shouldn't differ from this one except for this --> <!--d--> | |
<!-- comment and entity expansions, but just in case) --> <!--d--> | |
<!-- With the exception of cases with multiple namespace | |
prefixes for the XML Schema namespace, any XML document which is | |
not valid per this DTD given redefinitions in its internal subset of the | |
'p' and 's' parameter entities below appropriate to its namespace | |
declaration of the XML Schema namespace is almost certainly not | |
a valid schema. --> | |
<!-- The simpleType element and its constituent parts | |
are defined in XML Schema: Part 2: Datatypes --> | |
<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' > | |
<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a | |
schema document to establish a different | |
namespace prefix --> | |
<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must | |
also define %s as the suffix for the appropriate | |
namespace declaration (e.g. :foo) --> | |
<!ENTITY % nds 'xmlns%s;'> | |
<!-- Define all the element names, with optional prefix --> | |
<!ENTITY % schema "%p;schema"> | |
<!ENTITY % complexType "%p;complexType"> | |
<!ENTITY % complexContent "%p;complexContent"> | |
<!ENTITY % simpleContent "%p;simpleContent"> | |
<!ENTITY % extension "%p;extension"> | |
<!ENTITY % element "%p;element"> | |
<!ENTITY % unique "%p;unique"> | |
<!ENTITY % key "%p;key"> | |
<!ENTITY % keyref "%p;keyref"> | |
<!ENTITY % selector "%p;selector"> | |
<!ENTITY % field "%p;field"> | |
<!ENTITY % group "%p;group"> | |
<!ENTITY % all "%p;all"> | |
<!ENTITY % choice "%p;choice"> | |
<!ENTITY % sequence "%p;sequence"> | |
<!ENTITY % any "%p;any"> | |
<!ENTITY % anyAttribute "%p;anyAttribute"> | |
<!ENTITY % attribute "%p;attribute"> | |
<!ENTITY % attributeGroup "%p;attributeGroup"> | |
<!ENTITY % include "%p;include"> | |
<!ENTITY % import "%p;import"> | |
<!ENTITY % redefine "%p;redefine"> | |
<!ENTITY % notation "%p;notation"> | |
<!-- annotation elements --> | |
<!ENTITY % annotation "%p;annotation"> | |
<!ENTITY % appinfo "%p;appinfo"> | |
<!ENTITY % documentation "%p;documentation"> | |
<!-- Customisation entities for the ATTLIST of each element type. | |
Define one of these if your schema takes advantage of the | |
anyAttribute='##other' in the schema for schemas --> | |
<!ENTITY % schemaAttrs ''> | |
<!ENTITY % complexTypeAttrs ''> | |
<!ENTITY % complexContentAttrs ''> | |
<!ENTITY % simpleContentAttrs ''> | |
<!ENTITY % extensionAttrs ''> | |
<!ENTITY % elementAttrs ''> | |
<!ENTITY % groupAttrs ''> | |
<!ENTITY % allAttrs ''> | |
<!ENTITY % choiceAttrs ''> | |
<!ENTITY % sequenceAttrs ''> | |
<!ENTITY % anyAttrs ''> | |
<!ENTITY % anyAttributeAttrs ''> | |
<!ENTITY % attributeAttrs ''> | |
<!ENTITY % attributeGroupAttrs ''> | |
<!ENTITY % uniqueAttrs ''> | |
<!ENTITY % keyAttrs ''> | |
<!ENTITY % keyrefAttrs ''> | |
<!ENTITY % selectorAttrs ''> | |
<!ENTITY % fieldAttrs ''> | |
<!ENTITY % includeAttrs ''> | |
<!ENTITY % importAttrs ''> | |
<!ENTITY % redefineAttrs ''> | |
<!ENTITY % notationAttrs ''> | |
<!ENTITY % annotationAttrs ''> | |
<!ENTITY % appinfoAttrs ''> | |
<!ENTITY % documentationAttrs ''> | |
<!ENTITY % complexDerivationSet "CDATA"> | |
<!-- #all or space-separated list drawn from derivationChoice --> | |
<!ENTITY % blockSet "CDATA"> | |
<!-- #all or space-separated list drawn from | |
derivationChoice + 'substitution' --> | |
<!ENTITY % mgs '%all; | %choice; | %sequence;'> | |
<!ENTITY % cs '%choice; | %sequence;'> | |
<!ENTITY % formValues '(qualified|unqualified)'> | |
<!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'> | |
<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'> | |
<!-- This is used in part2 --> | |
<!ENTITY % restriction1 '((%mgs; | %group;)?)'> | |
%xs-datatypes; | |
<!-- the duplication below is to produce an unambiguous content model | |
which allows annotation everywhere --> | |
<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*, | |
((%simpleType; | %complexType; | |
| %element; | %attribute; | |
| %attributeGroup; | %group; | |
| %notation; ), | |
(%annotation;)*)* )> | |
<!ATTLIST %schema; | |
targetNamespace %URIref; #IMPLIED | |
version CDATA #IMPLIED | |
%nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema' | |
xmlns CDATA #IMPLIED | |
finalDefault %complexDerivationSet; '' | |
blockDefault %blockSet; '' | |
id ID #IMPLIED | |
elementFormDefault %formValues; 'unqualified' | |
attributeFormDefault %formValues; 'unqualified' | |
xml:lang CDATA #IMPLIED | |
%schemaAttrs;> | |
<!-- Note the xmlns declaration is NOT in the Schema for Schemas, | |
because at the Infoset level where schemas operate, | |
xmlns(:prefix) is NOT an attribute! --> | |
<!-- The declaration of xmlns is a convenience for schema authors --> | |
<!-- The id attribute here and below is for use in external references | |
from non-schemas using simple fragment identifiers. | |
It is NOT used for schema-to-schema reference, internal or | |
external. --> | |
<!-- a type is a named content type specification which allows attribute | |
declarations--> | |
<!-- --> | |
<!ELEMENT %complexType; ((%annotation;)?, | |
(%simpleContent;|%complexContent;| | |
%particleAndAttrs;))> | |
<!ATTLIST %complexType; | |
name %NCName; #IMPLIED | |
id ID #IMPLIED | |
abstract %boolean; #IMPLIED | |
final %complexDerivationSet; #IMPLIED | |
block %complexDerivationSet; #IMPLIED | |
mixed (true|false) 'false' | |
%complexTypeAttrs;> | |
<!-- particleAndAttrs is shorthand for a root type --> | |
<!-- mixed is disallowed if simpleContent, overriden if complexContent | |
has one too. --> | |
<!-- If anyAttribute appears in one or more referenced attributeGroups | |
and/or explicitly, the intersection of the permissions is used --> | |
<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))> | |
<!ATTLIST %complexContent; | |
mixed (true|false) #IMPLIED | |
id ID #IMPLIED | |
%complexContentAttrs;> | |
<!-- restriction should use the branch defined above, not the simple | |
one from part2; extension should use the full model --> | |
<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))> | |
<!ATTLIST %simpleContent; | |
id ID #IMPLIED | |
%simpleContentAttrs;> | |
<!-- restriction should use the simple branch from part2, not the | |
one defined above; extension should have no particle --> | |
<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))> | |
<!ATTLIST %extension; | |
base %QName; #REQUIRED | |
id ID #IMPLIED | |
%extensionAttrs;> | |
<!-- an element is declared by either: | |
a name and a type (either nested or referenced via the type attribute) | |
or a ref to an existing element declaration --> | |
<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?, | |
(%unique; | %key; | %keyref;)*)> | |
<!-- simpleType or complexType only if no type|ref attribute --> | |
<!-- ref not allowed at top level --> | |
<!ATTLIST %element; | |
name %NCName; #IMPLIED | |
id ID #IMPLIED | |
ref %QName; #IMPLIED | |
type %QName; #IMPLIED | |
minOccurs %nonNegativeInteger; #IMPLIED | |
maxOccurs CDATA #IMPLIED | |
nillable %boolean; #IMPLIED | |
substitutionGroup %QName; #IMPLIED | |
abstract %boolean; #IMPLIED | |
final %complexDerivationSet; #IMPLIED | |
block %blockSet; #IMPLIED | |
default CDATA #IMPLIED | |
fixed CDATA #IMPLIED | |
form %formValues; #IMPLIED | |
%elementAttrs;> | |
<!-- type and ref are mutually exclusive. | |
name and ref are mutually exclusive, one is required --> | |
<!-- In the absence of type AND ref, type defaults to type of | |
substitutionGroup, if any, else the ur-type, i.e. unconstrained --> | |
<!-- default and fixed are mutually exclusive --> | |
<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)> | |
<!ATTLIST %group; | |
name %NCName; #IMPLIED | |
ref %QName; #IMPLIED | |
minOccurs %nonNegativeInteger; #IMPLIED | |
maxOccurs CDATA #IMPLIED | |
id ID #IMPLIED | |
%groupAttrs;> | |
<!ELEMENT %all; ((%annotation;)?, (%element;)*)> | |
<!ATTLIST %all; | |
minOccurs (1) #IMPLIED | |
maxOccurs (1) #IMPLIED | |
id ID #IMPLIED | |
%allAttrs;> | |
<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)> | |
<!ATTLIST %choice; | |
minOccurs %nonNegativeInteger; #IMPLIED | |
maxOccurs CDATA #IMPLIED | |
id ID #IMPLIED | |
%choiceAttrs;> | |
<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)> | |
<!ATTLIST %sequence; | |
minOccurs %nonNegativeInteger; #IMPLIED | |
maxOccurs CDATA #IMPLIED | |
id ID #IMPLIED | |
%sequenceAttrs;> | |
<!-- an anonymous grouping in a model, or | |
a top-level named group definition, or a reference to same --> | |
<!-- Note that if order is 'all', group is not allowed inside. | |
If order is 'all' THIS group must be alone (or referenced alone) at | |
the top level of a content model --> | |
<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside --> | |
<!-- Should allow minOccurs=0 inside order='all' . . . --> | |
<!ELEMENT %any; (%annotation;)?> | |
<!ATTLIST %any; | |
namespace CDATA '##any' | |
processContents (skip|lax|strict) 'strict' | |
minOccurs %nonNegativeInteger; '1' | |
maxOccurs CDATA '1' | |
id ID #IMPLIED | |
%anyAttrs;> | |
<!-- namespace is interpreted as follows: | |
##any - - any non-conflicting WFXML at all | |
##other - - any non-conflicting WFXML from namespace other | |
than targetNamespace | |
##local - - any unqualified non-conflicting WFXML/attribute | |
one or - - any non-conflicting WFXML from | |
more URI the listed namespaces | |
references | |
##targetNamespace ##local may appear in the above list, | |
with the obvious meaning --> | |
<!ELEMENT %anyAttribute; (%annotation;)?> | |
<!ATTLIST %anyAttribute; | |
namespace CDATA '##any' | |
processContents (skip|lax|strict) 'strict' | |
id ID #IMPLIED | |
%anyAttributeAttrs;> | |
<!-- namespace is interpreted as for 'any' above --> | |
<!-- simpleType only if no type|ref attribute --> | |
<!-- ref not allowed at top level, name iff at top level --> | |
<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)> | |
<!ATTLIST %attribute; | |
name %NCName; #IMPLIED | |
id ID #IMPLIED | |
ref %QName; #IMPLIED | |
type %QName; #IMPLIED | |
use (prohibited|optional|required) #IMPLIED | |
default CDATA #IMPLIED | |
fixed CDATA #IMPLIED | |
form %formValues; #IMPLIED | |
%attributeAttrs;> | |
<!-- type and ref are mutually exclusive. | |
name and ref are mutually exclusive, one is required --> | |
<!-- default for use is optional when nested, none otherwise --> | |
<!-- default and fixed are mutually exclusive --> | |
<!-- type attr and simpleType content are mutually exclusive --> | |
<!-- an attributeGroup is a named collection of attribute decls, or a | |
reference thereto --> | |
<!ELEMENT %attributeGroup; ((%annotation;)?, | |
(%attribute; | %attributeGroup;)*, | |
(%anyAttribute;)?) > | |
<!ATTLIST %attributeGroup; | |
name %NCName; #IMPLIED | |
id ID #IMPLIED | |
ref %QName; #IMPLIED | |
%attributeGroupAttrs;> | |
<!-- ref iff no content, no name. ref iff not top level --> | |
<!-- better reference mechanisms --> | |
<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)> | |
<!ATTLIST %unique; | |
name %NCName; #REQUIRED | |
id ID #IMPLIED | |
%uniqueAttrs;> | |
<!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)> | |
<!ATTLIST %key; | |
name %NCName; #REQUIRED | |
id ID #IMPLIED | |
%keyAttrs;> | |
<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)> | |
<!ATTLIST %keyref; | |
name %NCName; #REQUIRED | |
refer %QName; #REQUIRED | |
id ID #IMPLIED | |
%keyrefAttrs;> | |
<!ELEMENT %selector; ((%annotation;)?)> | |
<!ATTLIST %selector; | |
xpath %XPathExpr; #REQUIRED | |
id ID #IMPLIED | |
%selectorAttrs;> | |
<!ELEMENT %field; ((%annotation;)?)> | |
<!ATTLIST %field; | |
xpath %XPathExpr; #REQUIRED | |
id ID #IMPLIED | |
%fieldAttrs;> | |
<!-- Schema combination mechanisms --> | |
<!ELEMENT %include; (%annotation;)?> | |
<!ATTLIST %include; | |
schemaLocation %URIref; #REQUIRED | |
id ID #IMPLIED | |
%includeAttrs;> | |
<!ELEMENT %import; (%annotation;)?> | |
<!ATTLIST %import; | |
namespace %URIref; #IMPLIED | |
schemaLocation %URIref; #IMPLIED | |
id ID #IMPLIED | |
%importAttrs;> | |
<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; | | |
%attributeGroup; | %group;)*> | |
<!ATTLIST %redefine; | |
schemaLocation %URIref; #REQUIRED | |
id ID #IMPLIED | |
%redefineAttrs;> | |
<!ELEMENT %notation; (%annotation;)?> | |
<!ATTLIST %notation; | |
name %NCName; #REQUIRED | |
id ID #IMPLIED | |
public CDATA #REQUIRED | |
system %URIref; #IMPLIED | |
%notationAttrs;> | |
<!-- Annotation is either application information or documentation --> | |
<!-- By having these here they are available for datatypes as well | |
as all the structures elements --> | |
<!ELEMENT %annotation; (%appinfo; | %documentation;)*> | |
<!ATTLIST %annotation; %annotationAttrs;> | |
<!-- User must define annotation elements in internal subset for this | |
to work --> | |
<!ELEMENT %appinfo; ANY> <!-- too restrictive --> | |
<!ATTLIST %appinfo; | |
source %URIref; #IMPLIED | |
id ID #IMPLIED | |
%appinfoAttrs;> | |
<!ELEMENT %documentation; ANY> <!-- too restrictive --> | |
<!ATTLIST %documentation; | |
source %URIref; #IMPLIED | |
id ID #IMPLIED | |
xml:lang CDATA #IMPLIED | |
%documentationAttrs;> | |
<!NOTATION XMLSchemaStructures PUBLIC | |
'structures' 'http://www.w3.org/2001/XMLSchema.xsd' > | |
<!NOTATION XML PUBLIC | |
'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' > |