blob: 963232f97215468374b4c4f08af8aa72b78d7269 [file] [log] [blame]
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +02001<?xml version="1.0" encoding="UTF-8"?>
2<!--
3
4 XLIFF Version 2.0
5 OASIS Standard
6 05 August 2014
7 Copyright (c) OASIS Open 2014. All rights reserved.
8 Source: http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/
9 -->
10<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
11 elementFormDefault="qualified"
12 xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
13 targetNamespace="urn:oasis:names:tc:xliff:document:2.0">
14
15 <!-- Import -->
16
17 <xs:import namespace="http://www.w3.org/XML/1998/namespace"
18 schemaLocation="informativeCopiesOf3rdPartySchemas/w3c/xml.xsd"/>
19
20 <!-- Element Group -->
21
22 <xs:group name="inline">
23 <xs:choice>
24 <xs:element ref="xlf:cp"/>
25 <xs:element ref="xlf:ph"/>
26 <xs:element ref="xlf:pc"/>
27 <xs:element ref="xlf:sc"/>
28 <xs:element ref="xlf:ec"/>
29 <xs:element ref="xlf:mrk"/>
30 <xs:element ref="xlf:sm"/>
31 <xs:element ref="xlf:em"/>
32 </xs:choice>
33 </xs:group>
34
35 <!-- Attribute Types -->
36
37 <xs:simpleType name="yesNo">
38 <xs:restriction base="xs:string">
39 <xs:enumeration value="yes"/>
40 <xs:enumeration value="no"/>
41 </xs:restriction>
42 </xs:simpleType>
43
44 <xs:simpleType name="yesNoFirstNo">
45 <xs:restriction base="xs:string">
46 <xs:enumeration value="yes"/>
47 <xs:enumeration value="firstNo"/>
48 <xs:enumeration value="no"/>
49 </xs:restriction>
50 </xs:simpleType>
51
52 <xs:simpleType name="dirValue">
53 <xs:restriction base="xs:string">
54 <xs:enumeration value="ltr"/>
55 <xs:enumeration value="rtl"/>
56 <xs:enumeration value="auto"/>
57 </xs:restriction>
58 </xs:simpleType>
59
60 <xs:simpleType name="appliesTo">
61 <xs:restriction base="xs:string">
62 <xs:enumeration value="source"/>
63 <xs:enumeration value="target"/>
64 </xs:restriction>
65 </xs:simpleType>
66
67 <xs:simpleType name="userDefinedValue">
68 <xs:restriction base="xs:string">
69 <xs:pattern value="[^\s:]+:[^\s:]+"/>
70 </xs:restriction>
71 </xs:simpleType>
72
73 <xs:simpleType name="attrType_type">
74 <xs:restriction base="xs:string">
75 <xs:enumeration value="fmt"/>
76 <xs:enumeration value="ui"/>
77 <xs:enumeration value="quote"/>
78 <xs:enumeration value="link"/>
79 <xs:enumeration value="image"/>
80 <xs:enumeration value="other"/>
81 </xs:restriction>
82 </xs:simpleType>
83
84 <xs:simpleType name="typeForMrkValues">
85 <xs:restriction base="xs:NMTOKEN">
86 <xs:enumeration value="generic"/>
87 <xs:enumeration value="comment"/>
88 <xs:enumeration value="term"/>
89 </xs:restriction>
90 </xs:simpleType>
91
92 <xs:simpleType name="attrType_typeForMrk">
93 <xs:union memberTypes="xlf:typeForMrkValues xlf:userDefinedValue"/>
94 </xs:simpleType>
95
96 <xs:simpleType name="priorityValue">
97 <xs:restriction base="xs:positiveInteger">
98 <xs:minInclusive value="1"/>
99 <xs:maxInclusive value="10"/>
100 </xs:restriction>
101 </xs:simpleType>
102
103 <xs:simpleType name="stateType">
104 <xs:restriction base="xs:string">
105 <xs:enumeration value="initial"/>
106 <xs:enumeration value="translated"/>
107 <xs:enumeration value="reviewed"/>
108 <xs:enumeration value="final"/>
109 </xs:restriction>
110 </xs:simpleType>
111
112 <!-- Structural Elements -->
113
114 <xs:element name="xliff">
115 <xs:complexType mixed="false">
116 <xs:sequence>
117 <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:file"/>
118 </xs:sequence>
119 <xs:attribute name="version" use="required"/>
120 <xs:attribute name="srcLang" use="required"/>
121 <xs:attribute name="trgLang" use="optional"/>
122 <xs:attribute ref="xml:space" use="optional" default="default"/>
123 <xs:anyAttribute namespace="##other" processContents="lax"/>
124 </xs:complexType>
125 </xs:element>
126
127 <xs:element name="file">
128 <xs:complexType mixed="false">
129 <xs:sequence>
130 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:skeleton"/>
131 <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
132 processContents="lax"/>
133 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
134 <xs:choice minOccurs="1" maxOccurs="unbounded">
135 <xs:element ref="xlf:unit"/>
136 <xs:element ref="xlf:group"/>
137 </xs:choice>
138 </xs:sequence>
139 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
140 <xs:attribute name="canResegment" use="optional" type="xlf:yesNo" default="yes"/>
141 <xs:attribute name="original" use="optional"/>
142 <xs:attribute name="translate" use="optional" type="xlf:yesNo" default="yes"/>
143 <xs:attribute name="srcDir" use="optional" type="xlf:dirValue" default="auto"/>
144 <xs:attribute name="trgDir" use="optional" type="xlf:dirValue" default="auto"/>
145 <xs:attribute ref="xml:space" use="optional"/>
146 <xs:anyAttribute namespace="##other" processContents="lax"/>
147 </xs:complexType>
148 </xs:element>
149
150 <xs:element name="skeleton">
151 <xs:complexType mixed="true">
152 <xs:sequence>
153 <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
154 processContents="lax"/>
155 </xs:sequence>
156 <xs:attribute name="href" use="optional"/>
157 </xs:complexType>
158 </xs:element>
159
160 <xs:element name="group">
161 <xs:complexType mixed="false">
162 <xs:sequence>
163 <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
164 processContents="lax"/>
165 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
166 <xs:choice minOccurs="0" maxOccurs="unbounded">
167 <xs:element ref="xlf:unit"/>
168 <xs:element ref="xlf:group"/>
169 </xs:choice>
170 </xs:sequence>
171 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
172 <xs:attribute name="name" use="optional"/>
173 <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
174 <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
175 <xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/>
176 <xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/>
177 <xs:attribute name="type" use="optional" type="xlf:userDefinedValue"/>
178 <xs:attribute ref="xml:space" use="optional"/>
179 <xs:anyAttribute namespace="##other" processContents="lax"/>
180 </xs:complexType>
181 </xs:element>
182
183 <xs:element name="unit">
184 <xs:complexType mixed="false">
185 <xs:sequence>
186 <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
187 processContents="lax"/>
188 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
189 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:originalData"/>
190 <xs:choice minOccurs="1" maxOccurs="unbounded">
191 <xs:element ref="xlf:segment"/>
192 <xs:element ref="xlf:ignorable"/>
193 </xs:choice>
194 </xs:sequence>
195 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
196 <xs:attribute name="name" use="optional"/>
197 <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
198 <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
199 <xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/>
200 <xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/>
201 <xs:attribute ref="xml:space" use="optional"/>
202 <xs:attribute name="type" use="optional" type="xlf:userDefinedValue"/>
203 <xs:anyAttribute namespace="##other" processContents="lax"/>
204 </xs:complexType>
205 </xs:element>
206
207 <xs:element name="segment">
208 <xs:complexType mixed="false">
209 <xs:sequence>
210 <xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/>
211 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/>
212 </xs:sequence>
213 <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
214 <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
215 <xs:attribute name="state" use="optional" type="xlf:stateType" default="initial"/>
216 <xs:attribute name="subState" use="optional"/>
217 </xs:complexType>
218 </xs:element>
219
220 <xs:element name="ignorable">
221 <xs:complexType mixed="false">
222 <xs:sequence>
223 <xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/>
224 <xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/>
225 </xs:sequence>
226 <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
227 </xs:complexType>
228 </xs:element>
229
230 <xs:element name="notes">
231 <xs:complexType mixed="false">
232 <xs:sequence>
233 <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:note"/>
234 </xs:sequence>
235 </xs:complexType>
236 </xs:element>
237
238 <xs:element name="note">
239 <xs:complexType mixed="true">
240 <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
241 <xs:attribute name="appliesTo" use="optional" type="xlf:appliesTo"/>
242 <xs:attribute name="category" use="optional"/>
243 <xs:attribute name="priority" use="optional" type="xlf:priorityValue" default="1"/>
244 <xs:anyAttribute namespace="##other" processContents="lax"/>
245 </xs:complexType>
246 </xs:element>
247
248 <xs:element name="originalData">
249 <xs:complexType mixed="false">
250 <xs:sequence>
251 <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:data"/>
252 </xs:sequence>
253 </xs:complexType>
254 </xs:element>
255
256 <xs:element name="data">
257 <xs:complexType mixed="true">
258 <xs:sequence>
259 <xs:element minOccurs="0" maxOccurs="unbounded" ref="xlf:cp"/>
260 </xs:sequence>
261 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
262 <xs:attribute name="dir" use="optional" type="xlf:dirValue" default="auto"/>
263 <xs:attribute ref="xml:space" use="optional" fixed="preserve"/>
264 </xs:complexType>
265 </xs:element>
266
267 <xs:element name="source">
268 <xs:complexType mixed="true">
269 <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
270 <xs:attribute ref="xml:lang" use="optional"/>
271 <xs:attribute ref="xml:space" use="optional"/>
272 </xs:complexType>
273 </xs:element>
274
275 <xs:element name="target">
276 <xs:complexType mixed="true">
277 <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
278 <xs:attribute ref="xml:lang" use="optional"/>
279 <xs:attribute ref="xml:space" use="optional"/>
280 <xs:attribute name="order" use="optional" type="xs:positiveInteger"/>
281 </xs:complexType>
282 </xs:element>
283
284 <!-- Inline Elements -->
285
286 <xs:element name="cp">
287 <!-- Code Point -->
288 <xs:complexType mixed="false">
289 <xs:attribute name="hex" use="required" type="xs:hexBinary"/>
290 </xs:complexType>
291 </xs:element>
292
293 <xs:element name="ph">
294 <!-- Placeholder -->
295 <xs:complexType mixed="false">
296 <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
297 <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
298 <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
299 <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
300 <xs:attribute name="disp" use="optional"/>
301 <xs:attribute name="equiv" use="optional"/>
302 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
303 <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
304 <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
305 <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
306 <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
307 <xs:anyAttribute namespace="##other" processContents="lax"/>
308 </xs:complexType>
309 </xs:element>
310
311 <xs:element name="pc">
312 <!-- Paired Code -->
313 <xs:complexType mixed="true">
314 <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
315 <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
316 <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
317 <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo"/>
318 <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
319 <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
320 <xs:attribute name="dispEnd" use="optional"/>
321 <xs:attribute name="dispStart" use="optional"/>
322 <xs:attribute name="equivEnd" use="optional"/>
323 <xs:attribute name="equivStart" use="optional"/>
324 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
325 <xs:attribute name="dataRefEnd" use="optional" type="xs:NMTOKEN"/>
326 <xs:attribute name="dataRefStart" use="optional" type="xs:NMTOKEN"/>
327 <xs:attribute name="subFlowsEnd" use="optional" type="xs:NMTOKENS"/>
328 <xs:attribute name="subFlowsStart" use="optional" type="xs:NMTOKENS"/>
329 <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
330 <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
331 <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
332 <xs:anyAttribute namespace="##other" processContents="lax"/>
333 </xs:complexType>
334 </xs:element>
335
336 <xs:element name="sc">
337 <!-- Start Code -->
338 <xs:complexType mixed="false">
339 <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
340 <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
341 <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo" default="yes"/>
342 <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
343 <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
344 <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
345 <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
346 <xs:attribute name="disp" use="optional"/>
347 <xs:attribute name="equiv" use="optional"/>
348 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
349 <xs:attribute name="isolated" use="optional" type="xlf:yesNo" default="no"/>
350 <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
351 <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
352 <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
353 <xs:anyAttribute namespace="##other" processContents="lax"/>
354 </xs:complexType>
355 </xs:element>
356
357 <xs:element name="ec">
358 <!-- End Code -->
359 <xs:complexType mixed="false">
360 <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
361 <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
362 <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo" default="yes"/>
363 <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
364 <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
365 <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
366 <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
367 <xs:attribute name="disp" use="optional"/>
368 <xs:attribute name="equiv" use="optional"/>
369 <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
370 <xs:attribute name="isolated" use="optional" type="xlf:yesNo" default="no"/>
371 <xs:attribute name="startRef" use="optional" type="xs:NMTOKEN"/>
372 <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
373 <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
374 <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
375 <xs:anyAttribute namespace="##other" processContents="lax"/>
376 </xs:complexType>
377 </xs:element>
378
379 <xs:element name="mrk">
380 <!-- Annotation Marker -->
381 <xs:complexType mixed="true">
382 <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
383 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
384 <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
385 <xs:attribute name="type" use="optional" type="xlf:attrType_typeForMrk"/>
386 <xs:attribute name="ref" use="optional" type="xs:anyURI"/>
387 <xs:attribute name="value" use="optional"/>
388 <xs:anyAttribute namespace="##other" processContents="lax"/>
389 </xs:complexType>
390 </xs:element>
391
392 <xs:element name="sm">
393 <!-- Start Annotation Marker -->
394 <xs:complexType mixed="false">
395 <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
396 <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
397 <xs:attribute name="type" use="optional" type="xlf:attrType_typeForMrk"/>
398 <xs:attribute name="ref" use="optional" type="xs:anyURI"/>
399 <xs:attribute name="value" use="optional"/>
400 <xs:anyAttribute namespace="##other" processContents="lax"/>
401 </xs:complexType>
402 </xs:element>
403
404 <xs:element name="em">
405 <!-- End Annotation Marker -->
406 <xs:complexType mixed="false">
407 <xs:attribute name="startRef" use="required" type="xs:NMTOKEN"/>
408 </xs:complexType>
409 </xs:element>
410
411</xs:schema>