1 <!-- 2 DTD for XML Schemas: Part 2: Datatypes 3 $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $ 4 Note this DTD is NOT normative, or even definitive. - - the 5 prose copy in the datatypes REC is the definitive version 6 (which shouldn't differ from this one except for this comment 7 and entity expansions, but just in case) 8 --> 9 10 <!-- 11 This DTD cannot be used on its own, it is intended 12 only for incorporation in XMLSchema.dtd, q.v. 13 --> 14 15 <!-- Define all the element names, with optional prefix --> 16 <!ENTITY % simpleType "%p;simpleType"> 17 <!ENTITY % restriction "%p;restriction"> 18 <!ENTITY % list "%p;list"> 19 <!ENTITY % union "%p;union"> 20 <!ENTITY % maxExclusive "%p;maxExclusive"> 21 <!ENTITY % minExclusive "%p;minExclusive"> 22 <!ENTITY % maxInclusive "%p;maxInclusive"> 23 <!ENTITY % minInclusive "%p;minInclusive"> 24 <!ENTITY % totalDigits "%p;totalDigits"> 25 <!ENTITY % fractionDigits "%p;fractionDigits"> 26 <!ENTITY % length "%p;length"> 27 <!ENTITY % minLength "%p;minLength"> 28 <!ENTITY % maxLength "%p;maxLength"> 29 <!ENTITY % enumeration "%p;enumeration"> 30 <!ENTITY % whiteSpace "%p;whiteSpace"> 31 <!ENTITY % pattern "%p;pattern"> 32 33 <!-- 34 Customisation entities for the ATTLIST of each element 35 type. Define one of these if your schema takes advantage 36 of the anyAttribute='##other' in the schema for schemas 37 --> 38 39 <!ENTITY % simpleTypeAttrs ""> 40 <!ENTITY % restrictionAttrs ""> 41 <!ENTITY % listAttrs ""> 42 <!ENTITY % unionAttrs ""> 43 <!ENTITY % maxExclusiveAttrs ""> 44 <!ENTITY % minExclusiveAttrs ""> 45 <!ENTITY % maxInclusiveAttrs ""> 46 <!ENTITY % minInclusiveAttrs ""> 47 <!ENTITY % totalDigitsAttrs ""> 48 <!ENTITY % fractionDigitsAttrs ""> 49 <!ENTITY % lengthAttrs ""> 50 <!ENTITY % minLengthAttrs ""> 51 <!ENTITY % maxLengthAttrs ""> 52 <!ENTITY % enumerationAttrs ""> 53 <!ENTITY % whiteSpaceAttrs ""> 54 <!ENTITY % patternAttrs ""> 55 56 <!-- Define some entities for informative use as attribute 57 types --> 58 <!ENTITY % URIref "CDATA"> 59 <!ENTITY % XPathExpr "CDATA"> 60 <!ENTITY % QName "NMTOKEN"> 61 <!ENTITY % QNames "NMTOKENS"> 62 <!ENTITY % NCName "NMTOKEN"> 63 <!ENTITY % nonNegativeInteger "NMTOKEN"> 64 <!ENTITY % boolean "(true|false)"> 65 <!ENTITY % simpleDerivationSet "CDATA"> 66 <!-- 67 #all or space-separated list drawn from derivationChoice 68 --> 69 70 <!-- 71 Note that the use of 'facet' below is less restrictive 72 than is really intended: There should in fact be no 73 more than one of each of minInclusive, minExclusive, 74 maxInclusive, maxExclusive, totalDigits, fractionDigits, 75 length, maxLength, minLength within datatype, 76 and the min- and max- variants of Inclusive and Exclusive 77 are mutually exclusive. On the other hand, pattern and 78 enumeration may repeat. 79 --> 80 <!ENTITY % minBound "(%minInclusive; | %minExclusive;)"> 81 <!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)"> 82 <!ENTITY % bounds "%minBound; | %maxBound;"> 83 <!ENTITY % numeric "%totalDigits; | %fractionDigits;"> 84 <!ENTITY % ordered "%bounds; | %numeric;"> 85 <!ENTITY % unordered 86 "%pattern; | %enumeration; | %whiteSpace; | %length; | 87 %maxLength; | %minLength;"> 88 <!ENTITY % facet "%ordered; | %unordered;"> 89 <!ENTITY % facetAttr 90 "value CDATA #REQUIRED 91 id ID #IMPLIED"> 92 <!ENTITY % fixedAttr "fixed %boolean; #IMPLIED"> 93 <!ENTITY % facetModel "(%annotation;)?"> 94 <!ELEMENT %simpleType; 95 ((%annotation;)?, (%restriction; | %list; | %union;))> 96 <!ATTLIST %simpleType; 97 name %NCName; #IMPLIED 98 final %simpleDerivationSet; #IMPLIED 99 id ID #IMPLIED 100 %simpleTypeAttrs;> 101 <!-- name is required at top level --> 102 <!ELEMENT %restriction; ((%annotation;)?, 103 (%restriction1; | 104 ((%simpleType;)?,(%facet;)*)), 105 (%attrDecls;))> 106 <!ATTLIST %restriction; 107 base %QName; #IMPLIED 108 id ID #IMPLIED 109 %restrictionAttrs;> 110 <!-- 111 base and simpleType child are mutually exclusive, 112 one is required. 113 114 restriction is shared between simpleType and 115 simpleContent and complexContent (in XMLSchema.xsd). 116 restriction1 is for the latter cases, when this 117 is restricting a complex type, as is attrDecls. 118 --> 119 <!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)> 120 <!ATTLIST %list; 121 itemType %QName; #IMPLIED 122 id ID #IMPLIED 123 %listAttrs;> 124 <!-- 125 itemType and simpleType child are mutually exclusive, 126 one is required 127 --> 128 <!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)> 129 <!ATTLIST %union; 130 id ID #IMPLIED 131 memberTypes %QNames; #IMPLIED 132 %unionAttrs;> 133 <!-- 134 At least one item in memberTypes or one simpleType 135 child is required 136 --> 137 138 <!ELEMENT %maxExclusive; %facetModel;> 139 <!ATTLIST %maxExclusive; 140 %facetAttr; 141 %fixedAttr; 142 %maxExclusiveAttrs;> 143 <!ELEMENT %minExclusive; %facetModel;> 144 <!ATTLIST %minExclusive; 145 %facetAttr; 146 %fixedAttr; 147 %minExclusiveAttrs;> 148 149 <!ELEMENT %maxInclusive; %facetModel;> 150 <!ATTLIST %maxInclusive; 151 %facetAttr; 152 %fixedAttr; 153 %maxInclusiveAttrs;> 154 <!ELEMENT %minInclusive; %facetModel;> 155 <!ATTLIST %minInclusive; 156 %facetAttr; 157 %fixedAttr; 158 %minInclusiveAttrs;> 159 160 <!ELEMENT %totalDigits; %facetModel;> 161 <!ATTLIST %totalDigits; 162 %facetAttr; 163 %fixedAttr; 164 %totalDigitsAttrs;> 165 <!ELEMENT %fractionDigits; %facetModel;> 166 <!ATTLIST %fractionDigits; 167 %facetAttr; 168 %fixedAttr; 169 %fractionDigitsAttrs;> 170 171 <!ELEMENT %length; %facetModel;> 172 <!ATTLIST %length; 173 %facetAttr; 174 %fixedAttr; 175 %lengthAttrs;> 176 <!ELEMENT %minLength; %facetModel;> 177 <!ATTLIST %minLength; 178 %facetAttr; 179 %fixedAttr; 180 %minLengthAttrs;> 181 <!ELEMENT %maxLength; %facetModel;> 182 <!ATTLIST %maxLength; 183 %facetAttr; 184 %fixedAttr; 185 %maxLengthAttrs;> 186 187 <!-- This one can be repeated --> 188 <!ELEMENT %enumeration; %facetModel;> 189 <!ATTLIST %enumeration; 190 %facetAttr; 191 %enumerationAttrs;> 192 193 <!ELEMENT %whiteSpace; %facetModel;> 194 <!ATTLIST %whiteSpace; 195 %facetAttr; 196 %fixedAttr; 197 %whiteSpaceAttrs;> 198 199 <!-- This one can be repeated --> 200 <!ELEMENT %pattern; %facetModel;> 201 <!ATTLIST %pattern; 202 %facetAttr; 203 %patternAttrs;>