0
|
1 <?xml version="1.0" encoding="utf-8"?>
|
|
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
3 xmlns="http://schemas.microsoft.com/practices/2010/unity"
|
|
4 targetNamespace="http://schemas.microsoft.com/practices/2010/unity"
|
|
5 elementFormDefault="qualified"
|
|
6 attributeFormDefault="unqualified">
|
|
7
|
|
8 <!-- Core unity config -->
|
|
9
|
|
10 <xs:element name="unity" type="UnityConfigurationSection" />
|
|
11
|
|
12 <xs:complexType name="UnityConfigurationSection">
|
|
13 <xs:sequence>
|
|
14 <xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
15 <xs:element name="container" type="ContainerElement"/>
|
|
16 <xs:element name="alias" type="AliasElement" />
|
|
17 <xs:element name="sectionExtension" type="SectionExtensionElement" />
|
|
18 <xs:element name="namespace" type="NamedElement" />
|
|
19 <xs:element name="assembly" type="NamedElement" />
|
|
20 </xs:choice>
|
|
21 </xs:sequence>
|
|
22 </xs:complexType>
|
|
23
|
|
24 <xs:complexType name="Containers">
|
|
25 <xs:sequence>
|
|
26 <xs:element name="container" minOccurs="0" maxOccurs="unbounded" type="ContainerElement"/>
|
|
27 </xs:sequence>
|
|
28 </xs:complexType>
|
|
29
|
|
30 <xs:complexType name="ContainerElement">
|
|
31 <xs:sequence>
|
|
32 <xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
33 <xs:element name="instance" type="InstanceElement"/>
|
|
34 <xs:element name="register" type="RegisterElement"/>
|
|
35 <xs:element name="extension" type="ContainerExtensionElement"/>
|
|
36 <xs:element name="interception" type="InterceptionElement"/>
|
|
37 <xs:element name="interceptors" type="InterceptorsElement"/>
|
|
38 </xs:choice>
|
|
39 </xs:sequence>
|
|
40 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
41 </xs:complexType>
|
|
42
|
|
43 <xs:complexType name="InstanceElement">
|
|
44 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
45 <xs:attribute name="type" type="TypeName_Type"/>
|
|
46 <xs:attribute name="value" type="LiteralValue_Type"/>
|
|
47 <xs:attribute name="typeConverter" type="TypeName_Type"/>
|
|
48 </xs:complexType>
|
|
49
|
|
50 <xs:complexType name="ContainerExtensionElement">
|
|
51 <xs:attribute name="type" type="ContainerExtensionTypeName_Type" use="required"/>
|
|
52 </xs:complexType>
|
|
53
|
|
54 <xs:complexType name="RegisterElement">
|
|
55 <xs:group ref="InjectionGroup"/>
|
|
56 <xs:attribute name="type" type="TypeName_Type" use="required" />
|
|
57 <xs:attribute name="name" type="IdentifierName_Type" />
|
|
58 <xs:attribute name="mapTo" type="TypeName_Type"/>
|
|
59 </xs:complexType>
|
|
60
|
|
61 <xs:complexType name="LifetimeElement">
|
|
62 <xs:attribute name="type" type="LifetimeTypeName_Type" use="required"/>
|
|
63 <xs:attribute name="value" type="LiteralValue_Type"/>
|
|
64 <xs:attribute name="typeConverter" type="TypeName_Type"/>
|
|
65 </xs:complexType>
|
|
66
|
|
67 <xs:complexType name="ConstructorElement">
|
|
68 <xs:sequence minOccurs="0" maxOccurs="unbounded">
|
|
69 <xs:element name="param" type="ParameterElement"/>
|
|
70 </xs:sequence>
|
|
71 </xs:complexType>
|
|
72
|
|
73 <xs:complexType name="MethodElement">
|
|
74 <xs:sequence minOccurs="0" maxOccurs="unbounded">
|
|
75 <xs:element name="param" type="ParameterElement"/>
|
|
76 </xs:sequence>
|
|
77 <xs:attribute name="name" type="IdentifierName_Type" use="required"/>
|
|
78 </xs:complexType>
|
|
79
|
|
80 <xs:complexType name="PropertyElement">
|
|
81 <xs:group ref="ValueResolutionGroup" minOccurs="0"/>
|
|
82 <xs:attribute name="name" type="IdentifierName_Type" use="required"/>
|
|
83 <xs:attributeGroup ref="ValueOptimizationAttributes"/>
|
|
84 </xs:complexType>
|
|
85
|
|
86 <xs:complexType name="ParameterElement">
|
|
87 <xs:group ref="ValueResolutionGroup" minOccurs="0"/>
|
|
88 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
89 <xs:attribute name="type" type="TypeName_Type"/>
|
|
90 <xs:attributeGroup ref="ValueOptimizationAttributes"/>
|
|
91 </xs:complexType>
|
|
92
|
|
93 <xs:complexType name="DependencyElement">
|
|
94 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
95 <xs:attribute name="type" type="TypeName_Type"/>
|
|
96 </xs:complexType>
|
|
97
|
|
98 <xs:complexType name="ValueElement">
|
|
99 <xs:attribute name="value" type="LiteralValue_Type"/>
|
|
100 <xs:attribute name="typeConverter" type="TypeName_Type"/>
|
|
101 </xs:complexType>
|
|
102
|
|
103 <xs:complexType name="ArrayElement">
|
|
104 <xs:group ref="ValueResolutionGroup" minOccurs="0" maxOccurs="unbounded"/>
|
|
105 <xs:attribute name="type" type="TypeName_Type"/>
|
|
106 </xs:complexType>
|
|
107
|
|
108 <xs:complexType name="OptionalElement">
|
|
109 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
110 <xs:attribute name="type" type="TypeName_Type"/>
|
|
111 </xs:complexType>
|
|
112
|
|
113
|
|
114 <xs:complexType name="AliasElement">
|
|
115 <xs:attribute name="alias" type="IdentifierName_Type" use="required"/>
|
|
116 <xs:attribute name="type" type="TypeName_Type" use="required"/>
|
|
117 </xs:complexType>
|
|
118
|
|
119
|
|
120 <xs:complexType name="SectionExtensionElement">
|
|
121 <xs:attribute name="prefix" type="IdentifierName_Type"/>
|
|
122 <xs:attribute name="type" type="SectionExtensionTypeName_Type" use="required"/>
|
|
123 </xs:complexType>
|
|
124
|
|
125
|
|
126 <xs:attributeGroup name="ValueOptimizationAttributes">
|
|
127 <xs:attribute name="value" type="LiteralValue_Type"/>
|
|
128 <xs:attribute name="dependencyName" type="IdentifierName_Type"/>
|
|
129 <xs:attribute name="dependencyType" type="TypeName_Type"/>
|
|
130 </xs:attributeGroup>
|
|
131
|
|
132 <xs:group name="ValueResolutionGroup">
|
|
133 <xs:choice>
|
|
134 <xs:element name="value" type="ValueElement"/>
|
|
135 <xs:element name="dependency" type="DependencyElement"/>
|
|
136 <xs:element name="array" type="ArrayElement"/>
|
|
137 <xs:element name="optional" type="OptionalElement"/>
|
|
138 </xs:choice>
|
|
139 </xs:group>
|
|
140
|
|
141 <xs:group name="InjectionGroup">
|
|
142 <xs:sequence>
|
|
143 <xs:element minOccurs="0" name="lifetime" type="LifetimeElement"/>
|
|
144 <xs:element minOccurs="0" name="constructor" type="ConstructorElement"/>
|
|
145 <xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
146 <xs:element name="method" type="MethodElement"/>
|
|
147 <xs:element name="property" type="PropertyElement"/>
|
|
148 <xs:element name="interceptor" type="InterceptorElement"/>
|
|
149 <xs:element name="interceptionBehavior" type="InterceptionBehaviorElement"/>
|
|
150 <xs:element name="addInterface" type="AddInterfaceElement"/>
|
|
151 <xs:element name="policyInjection" type="PolicyInjectionElement"/>
|
|
152 </xs:choice>
|
|
153 </xs:sequence>
|
|
154 </xs:group>
|
|
155
|
|
156 <!-- Interception config -->
|
|
157
|
|
158 <xs:complexType name="InterceptionElement">
|
|
159 <xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
160 <xs:element name="policy" type="PolicyElement"/>
|
|
161 </xs:choice>
|
|
162 </xs:complexType>
|
|
163
|
|
164 <xs:complexType name="PolicyElement">
|
|
165 <xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
166 <xs:element name="callHandler" type="CallHandlerElement"/>
|
|
167 <xs:element name="matchingRule" type="MatchingRuleElement"/>
|
|
168 </xs:choice>
|
|
169 <xs:attribute name="name" type="IdentifierName_Type" use="required"/>
|
|
170 </xs:complexType>
|
|
171
|
|
172 <xs:complexType name="CallHandlerElement">
|
|
173 <xs:group ref="InjectionGroup"/>
|
|
174 <xs:attribute name="type" type="TypeName_Type"/>
|
|
175 <xs:attribute name="name" type="IdentifierName_Type" use="required"/>
|
|
176 </xs:complexType>
|
|
177
|
|
178 <xs:complexType name="MatchingRuleElement">
|
|
179 <xs:group ref="InjectionGroup"/>
|
|
180 <xs:attribute name="type" type="MatchingRuleTypeName_Type"/>
|
|
181 <xs:attribute name="name" type="IdentifierName_Type" use="required"/>
|
|
182 </xs:complexType>
|
|
183
|
|
184 <xs:complexType name="InterceptorElement">
|
|
185 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
186 <xs:attribute name="type" type="InterceptorTypeName_Type"/>
|
|
187 <xs:attribute name="isDefaultForType" type="boolean_Type2"/>
|
|
188 </xs:complexType>
|
|
189
|
|
190 <xs:complexType name="InterceptionBehaviorElement">
|
|
191 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
192 <xs:attribute name="type" type="TypeName_Type"/>
|
|
193 <xs:attribute name="isDefaultForType" type="boolean_Type2"/>
|
|
194 </xs:complexType>
|
|
195
|
|
196 <xs:complexType name="AddInterfaceElement">
|
|
197 <xs:attribute name="type" type="TypeName_Type" use="required"/>
|
|
198 </xs:complexType>
|
|
199
|
|
200 <xs:complexType name="PolicyInjectionElement"/>
|
|
201
|
|
202 <xs:complexType name="InterceptorsElement">
|
|
203 <xs:sequence minOccurs="0" maxOccurs="unbounded">
|
|
204 <xs:element name="interceptor" type="InterceptorsInterceptorElement"/>
|
|
205 </xs:sequence>
|
|
206 </xs:complexType>
|
|
207
|
|
208 <xs:complexType name="InterceptorsInterceptorElement">
|
|
209 <xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
210 <xs:element name="key" type="KeyElement"/>
|
|
211 <xs:element name="default" type="DefaultElement"/>
|
|
212 </xs:choice>
|
|
213 <xs:attribute name="type" type="InterceptorTypeName_Type"/>
|
|
214 <xs:attribute name="value" type="LiteralValue_Type"/>
|
|
215 <xs:attribute name="typeConverter" type="TypeName_Type"/>
|
|
216 </xs:complexType>
|
|
217
|
|
218 <xs:complexType name="KeyElement">
|
|
219 <xs:attribute name="type" type="TypeName_Type" use="required"/>
|
|
220 <xs:attribute name="name" type="IdentifierName_Type"/>
|
|
221 </xs:complexType>
|
|
222
|
|
223 <xs:complexType name="DefaultElement">
|
|
224 <xs:attribute name="type" type="TypeName_Type" use="required"/>
|
|
225 </xs:complexType>
|
|
226
|
|
227 <!-- common types -->
|
|
228
|
|
229 <xs:simpleType name="LiteralValue_Type">
|
|
230 <xs:restriction base="xs:string"/>
|
|
231 </xs:simpleType>
|
|
232
|
|
233 <xs:simpleType name="TypeName_Type">
|
|
234 <xs:restriction base="xs:string"/>
|
|
235 </xs:simpleType>
|
|
236
|
|
237 <xs:simpleType name="LifetimeTypeName_Type">
|
|
238 <xs:union memberTypes="TypeName_Type">
|
|
239 <xs:simpleType>
|
|
240 <xs:restriction base="xs:NMTOKEN">
|
|
241 <xs:enumeration value="singleton"/>
|
|
242 <xs:enumeration value="transient"/>
|
|
243 <xs:enumeration value="perthread"/>
|
|
244 <xs:enumeration value="external"/>
|
|
245 <xs:enumeration value="hierarchical"/>
|
|
246 <xs:enumeration value="resolve"/>
|
|
247 <xs:enumeration value="perresolve"/>
|
|
248 </xs:restriction>
|
|
249 </xs:simpleType>
|
|
250 </xs:union>
|
|
251 </xs:simpleType>
|
|
252
|
|
253 <xs:simpleType name="ContainerExtensionTypeName_Type">
|
|
254 <xs:union memberTypes="TypeName_Type">
|
|
255 <xs:simpleType>
|
|
256 <xs:restriction base="xs:NMTOKEN">
|
|
257 <xs:enumeration value="Interception"/>
|
|
258 </xs:restriction>
|
|
259 </xs:simpleType>
|
|
260 </xs:union>
|
|
261 </xs:simpleType>
|
|
262
|
|
263 <xs:simpleType name="SectionExtensionTypeName_Type">
|
|
264 <xs:union memberTypes="TypeName_Type">
|
|
265 <xs:simpleType>
|
|
266 <xs:restriction base="xs:string">
|
|
267 <xs:enumeration value="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Microsoft.Practices.Unity.Interception.Configuration"/>
|
|
268 </xs:restriction>
|
|
269 </xs:simpleType>
|
|
270 </xs:union>
|
|
271 </xs:simpleType>
|
|
272
|
|
273 <xs:simpleType name="InterceptorTypeName_Type">
|
|
274 <xs:union memberTypes="TypeName_Type">
|
|
275 <xs:simpleType>
|
|
276 <xs:restriction base="xs:NMTOKEN">
|
|
277 <xs:enumeration value="VirtualMethodInterceptor"/>
|
|
278 <xs:enumeration value="InterfaceInterceptor"/>
|
|
279 <xs:enumeration value="TransparentProxyInterceptor"/>
|
|
280 </xs:restriction>
|
|
281 </xs:simpleType>
|
|
282 </xs:union>
|
|
283 </xs:simpleType>
|
|
284
|
|
285 <xs:simpleType name="MatchingRuleTypeName_Type">
|
|
286 <xs:union memberTypes="TypeName_Type">
|
|
287 <xs:simpleType>
|
|
288 <xs:restriction base="xs:NMTOKEN">
|
|
289 <xs:enumeration value="AssemblyMatchingRule"/>
|
|
290 <xs:enumeration value="CustomAttributeMatchingRule"/>
|
|
291 <xs:enumeration value="MemberNameMatchingRule"/>
|
|
292 <xs:enumeration value="NamespaceMatchingRule"/>
|
|
293 <xs:enumeration value="ParameterTypeMatchingRule"/>
|
|
294 <xs:enumeration value="PropertyMatchingRule"/>
|
|
295 <xs:enumeration value="TagAttributeMatchingRule"/>
|
|
296 <xs:enumeration value="TypeMatchingRule"/>
|
|
297 </xs:restriction>
|
|
298 </xs:simpleType>
|
|
299 </xs:union>
|
|
300 </xs:simpleType>
|
|
301
|
|
302 <xs:simpleType name="IdentifierName_Type">
|
|
303 <xs:restriction base="xs:string"/>
|
|
304 </xs:simpleType>
|
|
305
|
|
306 <xs:simpleType name="boolean_Type2">
|
|
307 <xs:restriction base="xs:boolean">
|
|
308 <xs:pattern value="true" />
|
|
309 <xs:pattern value="false" />
|
|
310 </xs:restriction>
|
|
311 </xs:simpleType>
|
|
312
|
|
313 <xs:complexType name="Empty"/>
|
|
314
|
|
315 <xs:complexType name="NamedElement">
|
|
316 <xs:attribute name="name" type="IdentifierName_Type" use="required"/>
|
|
317 </xs:complexType>
|
|
318
|
|
319 </xs:schema>
|