Manifeste
1
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
2
namespace cid="http://www.cid-protocol.org/schema/v1/core"
3
namespace local = ""
4
5
grammar{
6
7
#Defininition of a user description
8
user-desc =
9
element cid:label{attribute xml:lang {text}?,text}*,
10
element cid:doc{attribute xml:lang {text},text}*
11
12
#Definition of a step
13
step-def =
14
#URL to use in the transport
15
attribute url{xsd:anyURI},
16
#Mandatory metas
17
attribute needMetas{list{xsd:NCName+}}?,
18
#Accepted metas
19
attribute useMetas{list{xsd:NCName+}}?,
20
#Returned metas
21
attribute returnMetas{list{xsd:NCName+}}?,
22
#Mandatory step
23
attribute required{xsd:boolean},
24
#URI which define the step
25
attribute is{list{xsd:anyURI+}}?
26
27
#Definition of a request for web interact
28
webInteractRequest-def =
29
element cid:request{
30
#Supported methods
31
attribute method{"GET"|"POST;application/x-www-form-urlencoded"|"POST;multipart/form-data"},
32
#Supported property storages
33
attribute properties{list{("header" | "queryString" | "post")+}}?,
34
35
attribute excludeHeaderUriEncoding{list{xsd:NCName+}}?
36
}
37
38
#Definition of a request for web data exchange
39
webExchangeRequest-def =
40
element cid:request{
41
#Supported methods
42
attribute method{"GET"|"POST;application/x-www-form-urlencoded"|"POST;multipart/form-data"},
43
#Supported property storages
44
attribute properties{list{("header" | "queryString" | "post")+}}?,
45
46
attribute excludeHeaderUriEncoding{list{xsd:NCName+}}?
47
}
48
49
#Definition of a request for web upload
50
webUploadRequest-def =
51
element cid:request{
52
#Supported methods
53
attribute method{"PUT"|"GET"|"POST"|"POST;multipart/form-data"},
54
#Supported property storages
55
attribute properties{list{("header" | "queryString" | "post")+}}?,
56
57
attribute excludeHeaderUriEncoding{list{xsd:NCName+}}?
58
}
59
60
#Definition of a transport property
61
prop-def = element property{attribute key{xsd:NCName},attribute value{xsd:NCName}}
62
63
#Definition of chunked file upload
64
chunk-def =
65
element preliminaryChunk{attribute strategy{"sequential"|"unordered"|"random"},prop-def?}?,
66
element finalChunk{prop-def}?
67
68
#Definition of system wait
69
systWait-def = element systemWait{prop-def?,webExchangeRequest-def+}
70
71
#Definition of user wait
72
userWait-def = element userWait{prop-def?,webInteractRequest-def+}
73
74
#Definition of foreign element (use to valid a CID extension)
75
foreign-elements = element * - (cid:* | local:*) { anything }*
76
anything = ( element * - (cid:* | local:*) { anything } | attribute * { text } | text )*
77
78
79
start =
80
element cid:manifest{
81
#Manifest documentation
82
user-desc,
83
84
#Processes definition
85
element cid:process{
86
#Transports binded to this process
87
attribute transports{xsd:IDREFS}?,
88
#URI which defines this process
89
attribute is{list{xsd:anyURI+}}?,
90
#Process documentation
91
user-desc,
92
93
#Restriction on the meta used by the system
94
element cid:restriction{
95
#Name of the meta
96
attribute name{xsd:NCName},
97
#URI which defines the meta
98
attribute is{list{xsd:anyURI+}}?,
99
#Mandatory value of the meta
100
attribute value{text},
101
#Meta documentation
102
user-desc
103
}*,
104
105
#Definition of a meta
106
element cid:meta{
107
#Name of the meta
108
attribute name{xsd:NCName},
109
#Accepted cardinality of the meta
110
attribute cardinality{"1"|"?"|"+"|"*"}?,
111
#URI which defines the meta
112
attribute is{list{xsd:anyURI+}}?,
113
#Meta documentation
114
user-desc,
115
#Restricted values
116
element cid:value{text}*
117
}*,
118
119
(
120
#Data exchange step
121
element cid:exchange{step-def, attribute exchangeTransports{xsd:IDREFS}?} |
122
#User interact step
123
element cid:interact{step-def, attribute interactTransports{xsd:IDREFS}?} |
124
#File upload step
125
element cid:upload {step-def, attribute uploadTransports{xsd:IDREFS}?}
126
)+
127
}+,
128
129
#Definition of supported authentications scheme
130
element cid:authentications{
131
#No authentication
132
element cid:noAuthentication{empty}?&
133
#Basic HTTP Authentication
134
element cid:basicHttp{empty}?&
135
#CAS Authentication
136
element cid:cas{attribute url{xsd:anyURI}}?&
137
#Internal Authentication (+cookie or properties)
138
element cid:internal{attribute url{xsd:anyURI},attribute authProperties{list{xsd:NCName+}}?}?&
139
#CID extension allowed
140
foreign-elements*
141
}?,
142
143
#Supported transport definition
144
element cid:transports{
145
#Web transport definition
146
element cid:webTransport{
147
#Id of the transport
148
attribute id{xsd:ID}?,
149
#Mandatory support of cookies
150
attribute needCookies{xsd:boolean}?,
151
#Mandatory support of session properties. Properties name definition
152
attribute sessionProperties{list{xsd:NCName+}}?,
153
(
154
#Data exchange web transport definition
155
element cid:webExchange{attribute id{xsd:ID}?,webExchangeRequest-def+}|
156
#User interact web transport definition
157
element cid:webInteract{attribute id{xsd:ID}?,webInteractRequest-def+}|
158
#File upload web transport definition
159
element cid:webUpload {attribute id{xsd:ID}?,webUploadRequest-def+, chunk-def }|
160
#Asynchronous file upload definition
161
element cid:webAsyncUpload{
162
attribute id{xsd:ID}?,
163
webUploadRequest-def+,
164
((systWait-def, userWait-def?) | (userWait-def, systWait-def?)),
165
chunk-def
166
}
167
)+
168
}*,
169
#CID extension allowed
170
foreign-elements*
171
}
172
}
173
174
}