home *** CD-ROM | disk | FTP | other *** search
- <!-- edited with XML Spy v3.0b3 NT (http://www.xmlspy.com) by Vladislav Gavrielov (Icon) -->
- <!-- DTD for XML Schemas: Part 1: Structures -->
- <!-- $Id: XMLSchema.dtd,v 1.1 2000/04/06 13:50:43 aqw Exp $ -->
- <!-- Note this DTD is NOT the normative structures DTD - - the
- prose copy in the structures REC is the normative version (which
- shouldn't differ from this one except for this comment and entity
- expansions, but just in case -->
- <!-- The the datatype element and its components
- are defined in XML Schema: Part 2: Datatypes -->
- <!-- Note %p is defined in part2.dtd -->
- <!ENTITY % xs-datatypes PUBLIC 'datatypes' 'part2.dtd'>
- %xs-datatypes;
- <!ENTITY % s ''>
- <!-- 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 % 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 % notation "%p;notation">
- <!-- 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 % elementAttrs ''>
- <!ENTITY % groupAttrs ''>
- <!ENTITY % allAttrs ''>
- <!ENTITY % choiceAttrs ''>
- <!ENTITY % sequenceAttrs ''>
- <!ENTITY % anyAttrs ''>
- <!ENTITY % anyAttributeAttrs ''>
- <!ENTITY % attributeAttrs ''>
- <!ENTITY % attributeGroupAttrs ''>
- <!ENTITY % uniqueAttrs ''>
- <!ENTITY % keyAttrs ''>
- <!ENTITY % keyrefAttrs ''>
- <!ENTITY % includeAttrs ''>
- <!ENTITY % importAttrs ''>
- <!ENTITY % notationAttrs ''>
- <!ENTITY % complexDerivationChoice "(extension|restriction)">
- <!ENTITY % complexDerivationSet "CDATA">
- <!-- #all or space-separated list drawn from derivationChoice -->
- <!ENTITY % blockSet "CDATA">
- <!-- #all or space-separated list drawn from
- derivationChoice + 'equivClass' -->
- <!ENTITY % mgs '%all; | %choice; | %sequence;'>
- <!ENTITY % cs '%choice; | %sequence;'>
- <!ENTITY % formValues '(qualified|unqualified)'>
- <!-- the duplication below is to produce an unambiguous content model
- which allows annotation everywhere -->
- <!ELEMENT %schema; ((%include; | %import; | %annotation;)*, (%simpleType; | %complexType; | %element; | %attribute; | %attributeGroup; | %group; | %notation;), (%annotation; | %simpleType; | %complexType; | %element; | %attribute; | %attributeGroup; | %group; | %notation;)*)>
- <!ATTLIST %schema;
- targetNamespace %URIref; #IMPLIED
- version CDATA #IMPLIED
- %nds; %URIref; #FIXED "http://www.w3.org/1999/XMLSchema"
- finalDefault %complexDerivationSet; ""
- blockDefault %blockSet; ""
- id ID #IMPLIED
- elementFormDefault %formValues; "unqualified"
- attributeFormDefault %formValues; "unqualified"
- %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 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;)?, ((%facet;)* | (%element; | %mgs; | %group; | %any;)*), (%attribute; | %attributeGroup;)*, (%anyAttribute;)?)>
- <!ATTLIST %complexType;
- name %NCName; #IMPLIED
- id ID #IMPLIED
- content (textOnly | mixed | elementOnly | empty) #IMPLIED
- abstract %boolean; "false"
- final %complexDerivationSet; ""
- block %complexDerivationSet; ""
- derivedBy %complexDerivationChoice; #IMPLIED
- base %QName; #IMPLIED
- %complexTypeAttrs;
- >
- <!-- facets only if derivedBy='restriction' -->
- <!-- (element|group|any) only if content=mixed or =elementOnly
- and no base at all, i.e. a root type, or base is a complex type -->
- <!-- content defaults to base's if there is a complex base,
- textonly if there's a simple base,
- 'mixed' if no base (because that's the urType's content)
- and no content daughters,
- 'elementOnly' otherwise -->
- <!-- should we replace content='empty' with content='elementOnly'
- final='#all' plus no content? -->
- <!-- If one top-level group, that IS the content model, otherwise
- an implicit group obtains.
- This is
- <sequence minOccurs='1' maxOccurs='1'>
- unless content='mixed', in which case it's
- <choice minOccurs='0' maxOccurs='unbounded'> -->
- <!-- If anyAttribute appears in one or more referenced attributeGroups
- and/or explicitly, the intersection of the permissions is used -->
- <!-- A text-only type with no attributes differs from a datatype with
- the same base qualified the same way in regard to the impact on
- attributes of anyAttribute -->
- <!-- 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; "1"
- maxOccurs CDATA #IMPLIED
- nullable %boolean; "false"
- equivClass %QName; #IMPLIED
- abstract %boolean; "false"
- final %complexDerivationSet; ""
- block %blockSet; ""
- default CDATA #IMPLIED
- fixed CDATA #IMPLIED
- form %formValues; #IMPLIED
- %elementAttrs;
- >
- <!-- type and ref are mutually exclusive.
- name and ref are mutually exculsive, one is required -->
- <!-- In the absence of type AND ref, type defaults to type of
- equivClass, if any, else the ur-type, i.e. unconstrained -->
- <!-- maxOccurs defaults to 1 or minOccurs, whichever is greater -->
- <!-- default and fixed are mutually exclusive -->
- <!ELEMENT %group; ((%annotation;)?, (%element; | %group; | %mgs; | %any;)*)>
- <!ATTLIST %group;
- name %NCName; #IMPLIED
- ref %QName; #IMPLIED
- minOccurs %nonNegativeInteger; "1"
- maxOccurs CDATA #IMPLIED
- id ID #IMPLIED
- %groupAttrs;
- >
- <!ELEMENT %all; ((%annotation;)?, (%element; | %group; | %cs; | %any;)*)>
- <!ATTLIST %all;
- minOccurs %nonNegativeInteger; "1"
- maxOccurs CDATA #IMPLIED
- id ID #IMPLIED
- %allAttrs;
- >
- <!ELEMENT %choice; ((%annotation;)?, (%element; | %group; | %cs; | %any;)*)>
- <!ATTLIST %choice;
- minOccurs %nonNegativeInteger; "1"
- maxOccurs CDATA #IMPLIED
- id ID #IMPLIED
- %choiceAttrs;
- >
- <!ELEMENT %sequence; ((%annotation;)?, (%element; | %group; | %cs; | %any;)*)>
- <!ATTLIST %sequence;
- minOccurs %nonNegativeInteger; "1"
- 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 #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 may appear in the above list, with the
- obvious meaning -->
- <!ELEMENT %anyAttribute; (%annotation;)?>
- <!ATTLIST %anyAttribute;
- namespace CDATA "##any"
- %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 | fixed | default) #IMPLIED
- value CDATA #IMPLIED
- form %formValues; #IMPLIED
- %attributeAttrs;
- >
- <!-- type and ref are mutually exclusive.
- name and ref are mutually exculsive, one is required -->
- <!-- value only if use is fixed, required or default, or name -->
- <!-- name and use are mutually exclusive -->
- <!-- default for use is optional when nested, none otherwise -->
- <!-- 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
- id ID #IMPLIED
- refer %QName; #REQUIRED
- %keyrefAttrs;
- >
- <!ELEMENT %selector; (#PCDATA)>
- <!ELEMENT %field; (#PCDATA)>
- <!-- Schema combination mechanisms -->
- <!ELEMENT %include; (%annotation;)?>
- <!ATTLIST %include;
- schemaLocation %URIref; #REQUIRED
- %includeAttrs;
- >
- <!ELEMENT %import; (%annotation;)?>
- <!ATTLIST %import;
- namespace %URIref; #IMPLIED
- schemaLocation %URIref; #IMPLIED
- %importAttrs;
- >
- <!ELEMENT %notation; (%annotation;)?>
- <!ATTLIST %notation;
- name %NCName; #REQUIRED
- id ID #IMPLIED
- public CDATA #REQUIRED
- system %URIref; #IMPLIED
- %notationAttrs;
- >
- <!NOTATION XMLSchemaStructures PUBLIC 'structures'
- 'http://www.w3.org/1999/XMLSchema.xsd'>
- <!NOTATION XML PUBLIC 'REC-xml-1998-0210'
- 'http://www.w3.org/TR/1998/REC-xml-19980210'>
-