1 <?xml version='1.0' encoding='UTF-8'?> |
|
2 <!-- http://www.xml.com/lpt/a/2002/01/23/relaxng.html --> |
|
3 <!-- http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html --> |
|
4 <!-- http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_wildcards_st8.html --> |
|
5 <!-- http://lists.oasis-open.org/archives/relax-ng-comment/200206/maillist.html --> |
|
6 |
|
7 <grammar xmlns='http://relaxng.org/ns/structure/1.0' |
|
8 xmlns:ds='http://www.w3.org/2000/09/xmldsig#' |
|
9 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' |
|
10 ns='http://www.w3.org/2000/09/xmldsig#' |
|
11 datatypeLibrary='http://www.w3.org/2001/XMLSchema-datatypes'> |
|
12 |
|
13 <start> |
|
14 <element name='Signature'><ref name='SignatureType'/></element> |
|
15 </start> |
|
16 |
|
17 <define name='CryptoBinary'> |
|
18 <data type='base64Binary'/> |
|
19 </define> |
|
20 |
|
21 <define name='SignatureType'> |
|
22 <element name='SignedInfo'><ref name='SignedInfoType'/></element> |
|
23 <element name='SignatureValue'><ref name='SignatureValueType'/></element> |
|
24 <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional> |
|
25 <zeroOrMore><element name='Object'><ref name='ObjectType'/></element></zeroOrMore> |
|
26 <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
|
27 <optional><attribute name='xsi:schemaLocation'/></optional> |
|
28 </define> |
|
29 |
|
30 <define name='SignatureValueType'> |
|
31 <data type='base64Binary'/> |
|
32 <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
|
33 </define> |
|
34 |
|
35 <!-- Start SignedInfo --> |
|
36 |
|
37 <define name='SignedInfoType'> |
|
38 <element name='CanonicalizationMethod'><ref name='CanonicalizationMethodType'/></element> |
|
39 <element name='SignatureMethod'><ref name='SignatureMethodType'/></element> |
|
40 <optional><element name='KeyInfo'><ref name='KeyInfoType'/></element></optional> |
|
41 <oneOrMore><element name='Reference'><ref name='ReferenceType'/></element></oneOrMore> |
|
42 <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
|
43 </define> |
|
44 |
|
45 <define name='CanonicalizationMethodType'> |
|
46 <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
|
47 <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional> |
|
48 </define> |
|
49 |
|
50 |
|
51 <define name='SignatureMethodType'> |
|
52 <optional><element name='HMACOutputLength'><data type='integer'/></element></optional> |
|
53 <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
|
54 <optional><attribute name='Algorithm'><data type='anyURI'/></attribute></optional> |
|
55 </define> |
|
56 |
|
57 <!-- Start Reference --> |
|
58 |
|
59 <define name='ReferenceType'> |
|
60 <optional><element name='Transforms'><ref name='TransformsType'/></element></optional> |
|
61 <element name='DigestMethod'><ref name='DigestMethodType'/></element> |
|
62 <element name='DigestValue'><ref name='DigestValueType'/></element> |
|
63 <optional><attribute name='Type'><data type='anyURI'/></attribute></optional> |
|
64 <optional><attribute name='URI'><data type='anyURI'/></attribute></optional> |
|
65 <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
|
66 </define> |
|
67 |
|
68 <define name='TransformsType'> |
|
69 <oneOrMore><element name='Transform'><ref name='TransformType'/></element></oneOrMore> |
|
70 </define> |
|
71 |
|
72 <define name='TransformType'> |
|
73 <optional><element name='XPath'><data type='string'/></element></optional> |
|
74 <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
|
75 <attribute name='Algorithm'><data type='anyURI'/></attribute> |
|
76 </define> |
|
77 |
|
78 <!-- End Reference --> |
|
79 |
|
80 <define name='DigestMethodType'> |
|
81 <zeroOrMore><ref name='anyThing'/></zeroOrMore> |
|
82 <attribute name='Algorithm'><data type='anyURI'/></attribute> |
|
83 </define> |
|
84 |
|
85 <define name='DigestValueType'> |
|
86 <data type='base64Binary'/> |
|
87 </define> |
|
88 |
|
89 <!-- End SignedInfo --> |
|
90 |
|
91 <!-- Start KeyInfo --> |
|
92 |
|
93 <define name='KeyInfoType'> |
|
94 <oneOrMore> |
|
95 <choice> |
|
96 <element name='KeyName'><data type='string'/></element> |
|
97 <element name='KeyValue'><ref name='KeyValueType'/></element> |
|
98 <element name='RetrievalMethod'><ref name='RetrievalMethodType'/></element> |
|
99 <element name='X509Data'><ref name='X509DataType'/></element> |
|
100 <element name='PGPData'><ref name='PGPDataType'/></element> |
|
101 <element name='SPKIData'><ref name='SPKIDataType'/></element> |
|
102 <element name='MgmtData'><data type='string'/></element> |
|
103 <ref name='anyThing'/> |
|
104 </choice> |
|
105 </oneOrMore> |
|
106 <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
|
107 </define> |
|
108 |
|
109 <define name='KeyValueType'> |
|
110 <choice> |
|
111 <text/> |
|
112 <element name='DSAKeyValue'><ref name='DSAKeyValueType'/></element> |
|
113 <element name='RSAKeyValue'><ref name='RSAKeyValueType'/></element> |
|
114 <ref name='anyThing'/> |
|
115 </choice> |
|
116 </define> |
|
117 |
|
118 <define name='RetrievalMethodType'> |
|
119 <optional><element name='Transforms'><ref name='TransformsType'/></element></optional> |
|
120 <optional><attribute name='Type'><data type='anyURI'/></attribute></optional> |
|
121 <optional><attribute name='URI'><data type='anyURI'/></attribute></optional> |
|
122 </define> |
|
123 |
|
124 <!-- Start X509Data --> |
|
125 |
|
126 <define name='X509DataType'> |
|
127 <oneOrMore> |
|
128 <choice> |
|
129 <element name='X509IssuerSerial'> |
|
130 <element name='X509IssuerName'> |
|
131 <data type='string'/> |
|
132 </element> |
|
133 <element name='X509SerialNumber'> |
|
134 <data type='integer'/> |
|
135 </element> |
|
136 </element> |
|
137 <element name='X509SKI'> |
|
138 <data type='base64Binary'/> |
|
139 </element> |
|
140 <element name='X509SubjectName'> |
|
141 <data type='string'/> |
|
142 </element> |
|
143 <element name='X509Certificate'> |
|
144 <data type='base64Binary'/> |
|
145 </element> |
|
146 <element name='X509CRL'> |
|
147 <data type='base64Binary'/> |
|
148 </element> |
|
149 <ref name='anyThing'/> |
|
150 </choice> |
|
151 </oneOrMore> |
|
152 </define> |
|
153 |
|
154 <!-- End X509Data --> |
|
155 |
|
156 <!-- Begin PGPData --> |
|
157 |
|
158 <define name='PGPDataType'> |
|
159 <choice> |
|
160 <group> |
|
161 <element name='PGPKeyID'> |
|
162 <data type='base64Binary'/> |
|
163 </element> |
|
164 <optional> |
|
165 <element name='PGPKeyPacket'> |
|
166 <data type='base64Binary'/> |
|
167 </element> |
|
168 </optional> |
|
169 <zeroOrMore> |
|
170 <ref name='anyThing'/> |
|
171 </zeroOrMore> |
|
172 </group> |
|
173 <group> |
|
174 <element name='PGPKeyPacket'> |
|
175 <data type='base64Binary'/> |
|
176 </element> |
|
177 <zeroOrMore> |
|
178 <ref name='anyThing'/> |
|
179 </zeroOrMore> |
|
180 </group> |
|
181 </choice> |
|
182 </define> |
|
183 |
|
184 <!-- End PGPData --> |
|
185 |
|
186 <!-- Begin SPKIData --> |
|
187 |
|
188 <define name='SPKIDataType'> |
|
189 <oneOrMore> |
|
190 <element name='SPKISexp'> |
|
191 <data type='base64Binary'/> |
|
192 </element> |
|
193 <optional> |
|
194 <ref name='anyThing'/> |
|
195 </optional> |
|
196 </oneOrMore> |
|
197 </define> |
|
198 |
|
199 <!-- End SPKIData --> |
|
200 |
|
201 <!-- End KeyInfo --> |
|
202 |
|
203 |
|
204 <!-- Start Object (Manifest, SignatureProperty) --> |
|
205 |
|
206 <define name='ObjectType'> |
|
207 <zeroOrMore> |
|
208 <choice> |
|
209 <element name='Manifest'><ref name='ManifestType'/></element> |
|
210 <element name='SignatureProperties'><ref name='SignaturePropertiesType'/></element> |
|
211 <ref name='anyThing'/> |
|
212 </choice> |
|
213 </zeroOrMore> |
|
214 <optional> |
|
215 <attribute name='Encoding'> |
|
216 <data type='anyURI'/> |
|
217 </attribute> |
|
218 </optional> |
|
219 <optional> |
|
220 <attribute name='MimeType'> |
|
221 <data type='string'/> |
|
222 </attribute> |
|
223 </optional> |
|
224 <optional> |
|
225 <attribute name='Id'> |
|
226 <data type='ID'/> |
|
227 </attribute> |
|
228 </optional> |
|
229 </define> |
|
230 |
|
231 <define name='ManifestType'> |
|
232 <oneOrMore> |
|
233 <element name='Reference'><ref name='ReferenceType'/></element> |
|
234 </oneOrMore> |
|
235 <optional><attribute name='Id'><data type='ID'/></attribute></optional> |
|
236 </define> |
|
237 |
|
238 <define name='SignaturePropertiesType'> |
|
239 <oneOrMore> |
|
240 <element name='SignatureProperty'><ref name='SignaturePropertyType'/></element> |
|
241 </oneOrMore> |
|
242 <optional> |
|
243 <attribute name='Id'> |
|
244 <data type='ID'/> |
|
245 </attribute> |
|
246 </optional> |
|
247 </define> |
|
248 |
|
249 <define name='SignaturePropertyType'> |
|
250 <oneOrMore><ref name='anyThing'/></oneOrMore> |
|
251 <optional> |
|
252 <attribute name='Id'> |
|
253 <data type='ID'/> |
|
254 </attribute> |
|
255 </optional> |
|
256 <attribute name='Target'> |
|
257 <data type='anyURI'/> |
|
258 </attribute> |
|
259 </define> |
|
260 |
|
261 <!-- End Object (Manifest, SignatureProperty) --> |
|
262 |
|
263 |
|
264 <!-- Start KeyValue Element-types --> |
|
265 |
|
266 <define name='DSAKeyValueType'> |
|
267 <optional> |
|
268 <element name='P'> |
|
269 <ref name='CryptoBinary'/> |
|
270 </element> |
|
271 <element name='Q'> |
|
272 <ref name='CryptoBinary'/> |
|
273 </element> |
|
274 </optional> |
|
275 <optional> |
|
276 <element name='G'> |
|
277 <ref name='CryptoBinary'/> |
|
278 </element> |
|
279 </optional> |
|
280 <element name='Y'> |
|
281 <ref name='CryptoBinary'/> |
|
282 </element> |
|
283 <optional> |
|
284 <element name='J'> |
|
285 <ref name='CryptoBinary'/> |
|
286 </element> |
|
287 </optional> |
|
288 <optional> |
|
289 <element name='Seed'> |
|
290 <ref name='CryptoBinary'/> |
|
291 </element> |
|
292 <element name='PgenCounter'> |
|
293 <ref name='CryptoBinary'/> |
|
294 </element> |
|
295 </optional> |
|
296 </define> |
|
297 |
|
298 <define name='RSAKeyValueType'> |
|
299 <element name='Modulus'> |
|
300 <ref name='CryptoBinary'/> |
|
301 </element> |
|
302 <element name='Exponent'> |
|
303 <ref name='CryptoBinary'/> |
|
304 </element> |
|
305 </define> |
|
306 |
|
307 |
|
308 <!-- End KeyValue Element-types --> |
|
309 |
|
310 <!-- End Signature --> |
|
311 |
|
312 |
|
313 <!-- This should emulate the ANY content model under lax validation --> |
|
314 <define name='anyThing'> |
|
315 <zeroOrMore> |
|
316 <choice> |
|
317 <text/> |
|
318 <element> |
|
319 <!-- "except" provided for DTD compatibility --> |
|
320 <!-- [1] ns='http://www.oasis-open.org/committees/relax-ng/compatibility.html#id' --> |
|
321 <anyName> |
|
322 <except> |
|
323 <nsName/> |
|
324 <!-- <nsName ns='http://www.w3.org/2001/04/xmlenc#'/> --> |
|
325 </except> |
|
326 </anyName> |
|
327 <ref name='anyThing'/> |
|
328 <zeroOrMore> |
|
329 <attribute> |
|
330 <anyName/> |
|
331 </attribute> |
|
332 </zeroOrMore> |
|
333 </element> |
|
334 </choice> |
|
335 </zeroOrMore> |
|
336 </define> |
|
337 |
|
338 |
|
339 </grammar> |
|