source: metadata/trunk/toolkit/src/main/resources/toolkit/xsd/cmd-component.xsd @ 6910

Last change on this file since 6910 was 6910, checked in by Menzo Windhouwer, 8 years ago

M toolkit/src/main/resources/toolkit/xsd/cmd-component.xsd

  • use an xsl:key to check the uniqueness of an item in an enumeration

NOTE: needs the latest version of SchemAnon? that includes a fix in the Schematron XSLT to copy of over the XSLT elements in a xs:appinfo

  • Property svn:executable set to *
  • Property svn:keywords set to
    Rev
    Date
  • Property svn:mergeinfo set to (toggle deleted branches)
    /ComponentRegistry/branches/ComponentRegistry-1.12.0/ComponentRegistry/src/main/binding/general-component-schema.xsd2071-2124
    /ComponentRegistry/branches/ComponentRegistry-1.13.0-olha/ComponentRegistry/src/main/binding/components/general-component-schema.xsd2143-2514
    /ComponentRegistry/branches/ComponentRegistry-schematron/ComponentRegistry/src/main/binding/general-component-schema.xsd1751-1797
    /ComponentRegistry/tags/ComponentRegistry-1.8.1/ComponentRegistry/src/main/binding/general-component-schema.xsd1420-1453
    /ComponentRegistry/tags/ComponentRegistry-1.9.1/ComponentRegistry/src/main/binding/general-component-schema.xsd1565
    /ComponentRegistry/trunk/ComponentRegistry/src/main/binding/components/general-component-schema.xsd2143-2395
    /ComponentRegistry/trunk/ComponentRegistry/src/main/binding/general-component-schema.xsd17-1476
    /ComponentRegistry/trunk/ComponentRegistry/src/test/resources/clarin_catalog/general-component-schema.xsd3885-3892
File size: 25.0 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3    $Revision: 6910 $
4    $Date: 2016-01-15 16:09:21 +0000 (Fri, 15 Jan 2016) $
5-->
6
7<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.0" vc:maxVersion="1.1">
9   
10    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
11        schemaLocation="http://www.w3.org/2005/08/xml.xsd"/>
12
13    <xs:annotation>
14        <xs:appinfo>
15            <xsl:key name="enums" match="item" use="."/>
16        </xs:appinfo>
17    </xs:annotation>
18
19    <!-- root element -->
20    <xs:element name="ComponentSpec">
21        <xs:annotation>
22            <xs:appinfo>
23                <sch:pattern id="h_succ">
24                    <sch:title>Check successor</sch:title>
25                    <sch:rule context="Header/Successor">
26                        <sch:assert test="../Status='deprecated'">There can only be a successor component/profile if the status of this component/profile is deprecated!</sch:assert>
27                    </sch:rule>
28                </sch:pattern>
29                <sch:pattern id="r_card">
30                    <sch:title>Cardinality root component</sch:title>
31                    <sch:rule context="ComponentSpec/Component">
32                        <sch:assert test="empty(@CardinalityMin) or @CardinalityMin='1'">The minimum cardinality of the root component should be 1!</sch:assert>
33                        <sch:assert test="empty(@CardinalityMax) or @CardinalityMax='1'">The maximum cardinality of the root component should be 1!</sch:assert>
34                    </sch:rule>
35                </sch:pattern>
36            </xs:appinfo>
37        </xs:annotation>
38        <xs:complexType>
39            <xs:sequence>
40                <xs:element name="Header">
41                    <xs:complexType>
42                        <xs:sequence>
43                            <xs:element name="ID" type="xs:anyURI" minOccurs="0" maxOccurs="1"/>
44                            <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
45                            <xs:element name="Description" type="xs:string" minOccurs="0" maxOccurs="1"/>
46                            <!-- status information -->
47                            <xs:element name="Status" minOccurs="1" maxOccurs="1">
48                                <xs:simpleType>
49                                    <xs:restriction base="xs:string">
50                                        <xs:enumeration value="development"/>
51                                        <xs:enumeration value="production"/>
52                                        <xs:enumeration value="deprecated"/>
53                                    </xs:restriction>
54                                </xs:simpleType>
55                            </xs:element>
56                            <xs:element name="StatusComment" type="xs:string" minOccurs="0" maxOccurs="1"/>
57                            <xs:element name="Successor" type="xs:anyURI" minOccurs="0" maxOccurs="1"/>
58                        </xs:sequence>
59                    </xs:complexType>
60                </xs:element>
61                <xs:element name="Component" type="Component_type">
62                    <xs:annotation>
63                        <xs:documentation>At the root level there should always be a Component.</xs:documentation>
64                    </xs:annotation>
65                </xs:element>
66            </xs:sequence>
67            <xs:attribute name="isProfile" type="xs:boolean" use="required"/>
68        </xs:complexType>
69    </xs:element>
70
71    <!-- recursive construction: A component can contain elements and/or other components  -->
72    <xs:group name="group">
73        <xs:annotation>
74            <xs:appinfo>
75                <sch:pattern id="c_sibs">
76                    <sch:title>Check siblings</sch:title>
77                    <sch:rule context="Component|Element">
78                        <sch:assert test="empty(preceding-sibling::*[@name=current()/@name])">Sibling components or elements should all have a different name. Found multiple components or elements named '<sch:value-of select="@name"/>'!</sch:assert>
79                    </sch:rule>
80                </sch:pattern>
81                <sch:pattern id="c_csibs">
82                    <sch:title>Check component siblings</sch:title>
83                    <sch:rule context="Component">
84                        <sch:assert test="empty(preceding-sibling::Component[@ComponentId=current()/@ComponentId])">Sibling components should all be different. Found multiple components with id '<sch:value-of select="@ComponentId"/>'!</sch:assert>
85                    </sch:rule>
86                </sch:pattern>
87                <!-- TODO: check: the names of referenced external components are not known, so we can't currently check if two or more of them use the same name -->
88            </xs:appinfo>
89        </xs:annotation>
90        <xs:sequence>
91            <xs:element name="Documentation" type="Documentation_type" minOccurs="0" maxOccurs="unbounded"/>
92            <!-- from small (attribute) to big (component) -->
93            <xs:element name="AttributeList" type="AttributeList_type" minOccurs="0" maxOccurs="1"/>
94            <xs:element name="Element" type="Element_type" minOccurs="0" maxOccurs="unbounded"/>
95            <xs:element name="Component" type="Component_type" minOccurs="0" maxOccurs="unbounded"/>
96        </xs:sequence>
97    </xs:group>
98
99    <!-- type definitions -->
100    <xs:complexType name="Documentation_type">
101        <xs:annotation>
102            <xs:documentation>Some information an application (eg Arbil) can display to give
103                guidance to the user when entering metadata.</xs:documentation>
104            <xs:appinfo>
105                <sch:pattern id="d_dsibs">
106                    <sch:title>Check Documentation siblings</sch:title>
107                    <sch:rule context="Documentation">
108                        <sch:assert test="empty(preceding-sibling::Documentation[@xml:lang=current()/@xml:lang])">Sibling Documentation elements should all be for different languages. Found multiple Documentation elements with xml:lang '<sch:value-of select="@xml:lang"/>'!</sch:assert>
109                    </sch:rule>
110                </sch:pattern>
111            </xs:appinfo>
112        </xs:annotation>
113        <xs:simpleContent>
114            <xs:extension base="xs:string">
115                <xs:attribute ref="xml:lang" use="optional"/>
116            </xs:extension>
117        </xs:simpleContent>
118    </xs:complexType>
119
120    <xs:complexType name="Element_type">
121        <xs:annotation>
122            <xs:appinfo>
123                <sch:pattern id="e_vs">
124                    <sch:title>Check Element ValueScheme</sch:title>
125                    <sch:rule context="Element">
126                        <sch:assert test="exists(@ValueScheme) or exists(ValueScheme)">An Element must have either a @ValueScheme or a ./ValueScheme!</sch:assert>
127                    </sch:rule>
128                </sch:pattern>
129            </xs:appinfo>
130        </xs:annotation>
131        <xs:sequence>
132            <xs:element name="Documentation" type="Documentation_type" minOccurs="0" maxOccurs="unbounded"/>
133            <xs:element name="AttributeList" type="AttributeList_type" minOccurs="0" maxOccurs="1">
134                <xs:annotation>
135                    <xs:documentation>The AttributeList child of an element contains a set of XML
136                        attributes for that element.</xs:documentation>
137                </xs:annotation>
138            </xs:element>
139            <xs:element minOccurs="0" maxOccurs="1" name="ValueScheme" type="ValueScheme_type">
140                <xs:annotation>
141                    <xs:documentation>When an element is linked to a regular expression or a
142                        controlled vocabulary, the ValueScheme sub-element contains more information
143                        about this.</xs:documentation>
144                </xs:annotation>
145            </xs:element>
146            <xs:element name="AutoValue" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
147        </xs:sequence>
148        <xs:attributeGroup ref="element_attributes"/>
149    </xs:complexType>
150
151    <xs:complexType name="ValueScheme_type">
152        <xs:annotation>
153            <xs:appinfo>
154                <sch:pattern id="v_uri">
155                    <sch:title>Check Vocabulary URI</sch:title>
156                    <sch:rule context="Vocabulary[exists(@URI)]">
157                        <sch:assert test="exists(@ValueProperty)">When an external vocabulary is used (identified by the @URI) a @ValueProperty has to be specified!</sch:assert>
158                    </sch:rule>
159                </sch:pattern>
160            </xs:appinfo>
161        </xs:annotation>
162        <xs:choice>
163            <xs:element name="pattern" type="xs:string" minOccurs="1" maxOccurs="1">
164                <xs:annotation>
165                    <xs:documentation>Specification of a regular expression the element should
166                        comply with.</xs:documentation>
167                </xs:annotation>
168            </xs:element>
169            <xs:element name="Vocabulary" type="Vocabulary_type" minOccurs="1" maxOccurs="1">
170                <xs:annotation>
171                    <xs:documentation>Specification of an open or closed vocabulary</xs:documentation>
172                </xs:annotation>
173            </xs:element>
174        </xs:choice>
175    </xs:complexType>
176
177    <xs:complexType name="Vocabulary_type">
178        <xs:sequence>
179            <xs:element name="enumeration" type="enumeration_type" minOccurs="0" maxOccurs="1">
180                <xs:annotation>
181                    <xs:documentation>A list of the allowed values of a controlled vocabulary.</xs:documentation>
182                </xs:annotation>
183            </xs:element>
184        </xs:sequence>
185        <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
186        <!-- optionally selects a label -->
187        <xs:attribute name="ValueProperty" type="xs:string" use="optional"/>
188        <!-- optionally selects a language -->
189        <xs:attribute name="ValueLanguage" type="xs:language" use="optional"/>
190    </xs:complexType>
191
192    <xs:complexType name="AttributeList_type">
193        <xs:annotation>
194            <xs:appinfo>
195                <sch:pattern id="a_vs">
196                    <sch:title>Check Attribute ValueScheme</sch:title>
197                    <sch:rule context="Attribute">
198                        <sch:assert test="exists(@ValueScheme) or exists(ValueScheme)">An Attribute must have either a @ValueScheme or a ./ValueScheme!</sch:assert>
199                    </sch:rule>
200                </sch:pattern>
201            </xs:appinfo>
202        </xs:annotation>
203        <xs:sequence>
204            <xs:element name="Attribute" minOccurs="1" maxOccurs="unbounded">
205                <xs:annotation>
206                    <xs:appinfo>
207                        <sch:pattern id="a_res">
208                            <sch:title>Check reserved attribute names</sch:title>
209                            <sch:rule context="Attribute" role="warning">
210                                <sch:assert test="not(exists(parent::AttributeList/parent::Component) and @name=('ref','ComponentId'))">Attributes with name 'ref' or 'ComponentId' will not be available in a downgrade to CMDI 1.1!</sch:assert>
211                            </sch:rule>
212                        </sch:pattern>
213                        <sch:pattern id="a_sibs">
214                            <sch:title>Check attribute siblings</sch:title>
215                            <sch:rule context="Attribute">
216                                <sch:assert test="empty(preceding-sibling::Attribute[@name=current()/@name])">All attributes in an attribute list should have a different name. Found multiple attributes named '<sch:value-of select="Name"/>'!</sch:assert>
217                            </sch:rule>
218                        </sch:pattern>
219                    </xs:appinfo>
220                </xs:annotation>
221                <xs:complexType>
222                    <xs:sequence>
223                        <xs:element name="Documentation" type="Documentation_type" minOccurs="0" maxOccurs="unbounded"/>
224                        <xs:element name="ValueScheme" type="ValueScheme_type" minOccurs="0" maxOccurs="1">
225                            <xs:annotation>
226                                <xs:documentation>For the use of a regular expression or a
227                                    controlled vocabulary as the type of the
228                                    attribute.</xs:documentation>
229                            </xs:annotation>
230                        </xs:element>
231                        <xs:element name="AutoValue" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
232                    </xs:sequence>
233                    <xs:attributeGroup ref="attribute_attributes"/>
234                </xs:complexType>
235            </xs:element>
236        </xs:sequence>
237    </xs:complexType>
238
239    <xs:complexType name="Component_type">
240        <xs:group ref="group" minOccurs="0"/>
241        <xs:attributeGroup ref="component_attributes"/>
242    </xs:complexType>
243
244    <xs:attributeGroup name="attribute_attributes">
245        <xs:attribute name="name" type="xs:Name" use="required">
246            <xs:annotation>
247                <xs:documentation>The name of the attribute.</xs:documentation>
248            </xs:annotation>
249        </xs:attribute>
250        <xs:attribute name="ConceptLink" type="xs:anyURI" use="optional">
251            <xs:annotation>
252                <xs:documentation>A link to the ISOcat data category registry (or any other concept
253                    registry).</xs:documentation>
254            </xs:annotation>
255        </xs:attribute>
256        <xs:attribute name="ValueScheme" type="allowed_attributetypes_type" use="optional">
257            <xs:annotation>
258                <xs:documentation>For the use of simple XML types as the type of
259                    the attribute.</xs:documentation>
260            </xs:annotation>
261        </xs:attribute>
262        <xs:attribute name="Required" type="xs:boolean" use="optional">
263            <xs:annotation>
264                <xs:documentation>Is the attribute required or not?</xs:documentation>
265            </xs:annotation>
266        </xs:attribute>
267        <xs:anyAttribute namespace="http://www.clarin.eu/cmdi/cues/1" processContents="lax"/>
268    </xs:attributeGroup>
269
270    <xs:attributeGroup name="element_attributes">
271        <xs:attribute name="name" type="xs:Name" use="required">
272            <xs:annotation>
273                <xs:documentation>The name of the element.</xs:documentation>
274            </xs:annotation>
275        </xs:attribute>
276        <xs:attribute name="ConceptLink" type="xs:anyURI" use="optional">
277            <xs:annotation>
278                <xs:documentation>A link to the ISOcat data category registry (or any other concept
279                    registry).</xs:documentation>
280            </xs:annotation>
281        </xs:attribute>
282        <xs:attribute name="ValueScheme" type="allowed_attributetypes_type" use="optional">
283            <xs:annotation>
284                <xs:documentation>Used to specify that an element has a simple XML type (string,
285                    integer, etc)</xs:documentation>
286            </xs:annotation>
287        </xs:attribute>
288        <xs:attribute name="CardinalityMin" type="cardinality_type" use="optional" default="1">
289            <xs:annotation>
290                <xs:documentation>Minimal number of occurrences.</xs:documentation>
291            </xs:annotation>
292        </xs:attribute>
293        <xs:attribute name="CardinalityMax" type="cardinality_type" use="optional" default="1">
294            <xs:annotation>
295                <xs:documentation>Maximal number of occurrences.</xs:documentation>
296            </xs:annotation>
297        </xs:attribute>
298        <xs:attribute name="Multilingual" type="xs:boolean" use="optional">
299            <xs:annotation>
300                <xs:documentation>Indicates that this element can have values in multiple languages
301                    (and thus is repeatable). This will result in the possibility of using the
302                    xml:lang attribute in the metadata instances that are
303                created.</xs:documentation>
304            </xs:annotation>
305        </xs:attribute>
306        <xs:anyAttribute namespace="http://www.clarin.eu/cmdi/cues/1" processContents="lax"/>
307    </xs:attributeGroup>
308
309    <xs:attributeGroup name="component_attributes">
310        <xs:annotation>
311            <xs:appinfo>
312                <sch:pattern id="c_atts">
313                    <sch:title>Check component attributes</sch:title>
314                    <sch:rule context="Component">
315                        <sch:assert test="normalize-space(@name)!='' or normalize-space(@ComponentId)!=''">A Component should have a name or a ComponentId!</sch:assert>
316                    </sch:rule>
317                </sch:pattern>
318            </xs:appinfo>
319        </xs:annotation>
320        <xs:attribute name="name" type="xs:Name" use="optional"/>
321        <xs:attribute name="ComponentId" type="xs:anyURI" use="optional">
322            <xs:annotation>
323                <xs:documentation>Indicates that a component (using its unique ComponentId issued by
324                    the ComponentRegistry) should be included.</xs:documentation>
325            </xs:annotation>
326        </xs:attribute>
327        <xs:attribute name="ConceptLink" type="xs:anyURI" use="optional">
328            <xs:annotation>
329                <xs:documentation>A link to the ISOcat data category registry (or any other concept
330                    registry). Currently not used.</xs:documentation>
331            </xs:annotation>
332        </xs:attribute>
333        <xs:attribute name="CardinalityMin" type="cardinality_type" use="optional" default="1"/>
334        <xs:attribute name="CardinalityMax" type="cardinality_type" use="optional" default="1"/>
335        <xs:attribute ref="xml:base" use="optional"/>
336        <xs:anyAttribute namespace="http://www.clarin.eu/cmdi/cues/1" processContents="lax"/>
337    </xs:attributeGroup>
338
339
340    <xs:simpleType name="cardinality_type">
341        <xs:annotation>
342            <xs:documentation>cardinality for elements and components</xs:documentation>
343            <xs:appinfo>
344                <sch:pattern id="c_card">
345                    <sch:title>Check cardinalities</sch:title>
346                    <!--
347                        case minimum   maximum   check
348                        1    UNK       UNK       OK
349                        2    UNK       number    maximum ne 0
350                        3    UNK       unbounded OK
351                        4    number    UNK       minimum le 1
352                        5    number    number    minimum le maximum
353                        6    number    unbounded OK
354                        7    unbounded UNK       NOK
355                        8    unbounded number    NOK
356                        9    unbounded unbounded OK
357
358                        UNK can be either a missing attribute or an empty value, both can be detected with normalize-space(@...)=''
359
360                        default CardinalityMin is 1 (based on the XSD minOccurs default value)
361                        default CardinalityMax is 1 (based on the XSD maxOccurs default value)
362
363                        If a basic XSLT 2.0 engine, like Saxon HE, is used for Schematron validation we can't cast to xs:nonNegativeInteger.
364                        So we cast to xs:integer. The XSD validator should have already validated that the values are valid cardinality_types.
365                    -->
366                    <!-- skip case 1 -->
367                    <!-- case 2 -->
368                    <sch:rule context="*[(normalize-space(@CardinalityMin)='')][@CardinalityMax castable as xs:integer]">
369                        <sch:assert test="xs:integer(@CardinalityMax) ne 0">Maximum cardinality (0) cannot be lower than the default minimum cardinality (1)!</sch:assert>
370                    </sch:rule>
371                    <!-- skip case 3 -->
372                    <!-- case 4 -->
373                    <sch:rule context="*[@CardinalityMin castable as xs:integer][normalize-space(@CardinalityMax)='']">
374                        <sch:assert test="xs:integer(@CardinalityMin) le 1">Minimum cardinality (<sch:value-of select="@CardinalityMin"/>) should be lower or equal then the default maximum cardinality (1)!</sch:assert>
375                    </sch:rule>
376                    <!-- case 5 -->
377                    <sch:rule context="*[@CardinalityMin castable as xs:integer][@CardinalityMax castable as xs:integer]">
378                        <sch:assert test="xs:integer(@CardinalityMin) le xs:integer(@CardinalityMax)">Minimum cardinality (<sch:value-of select="@CardinalityMin"/>) should be lower or equal then the maximum cardinality (<sch:value-of select="@CardinalityMax"/>)!</sch:assert>
379                    </sch:rule>
380                    <!-- skip case 6 -->
381                    <!-- case 7, 8 and 9 -->
382                    <sch:rule context="*[@CardinalityMin='unbounded']">
383                        <!-- case 7 and 8 -->
384                        <sch:assert test="@CardinalityMax='unbounded'">Minimum cardinality (unbounded) can't be higher than the (default) maximum cardinality (<sch:value-of select="if (normalize-space(@CardinalityMax)='') then ('1') else (@CardinalityMax)"/>)!</sch:assert>
385                        <!-- skip case 9 -->
386                    </sch:rule>
387                </sch:pattern>
388            </xs:appinfo>
389        </xs:annotation>
390        <xs:union>
391            <xs:simpleType>
392                <xs:list itemType="xs:nonNegativeInteger"/>
393            </xs:simpleType>
394            <xs:simpleType>
395                <xs:restriction base="xs:string">
396                    <xs:enumeration value="unbounded"/>
397                </xs:restriction>
398            </xs:simpleType>
399        </xs:union>
400    </xs:simpleType>
401
402    <xs:simpleType name="allowed_attributetypes_type">
403        <xs:annotation>
404            <xs:documentation>Subset of XSD types that are allowed as CMD type</xs:documentation>
405        </xs:annotation>
406
407        <xs:restriction base="xs:token">
408            <xs:enumeration value="boolean"/>
409            <xs:enumeration value="decimal"/>
410            <xs:enumeration value="float"/>
411            <xs:enumeration value="int"/>
412            <xs:enumeration value="string"/>
413            <xs:enumeration value="anyURI"/>
414            <xs:enumeration value="date"/>
415            <xs:enumeration value="gDay"/>
416            <xs:enumeration value="gMonth"/>
417            <xs:enumeration value="gYear"/>
418            <xs:enumeration value="time"/>
419            <xs:enumeration value="dateTime"/>
420        </xs:restriction>
421    </xs:simpleType>
422
423    <xs:complexType name="enumeration_type">
424        <xs:annotation>
425            <xs:documentation>controlled vocabularies</xs:documentation>
426        </xs:annotation>
427        <xs:sequence>
428            <xs:element name="appinfo" type="xs:string" minOccurs="0" maxOccurs="1">
429                <xs:annotation>
430                    <xs:documentation>End-user guidance about the value of the controlled vocabulary
431                        as a whole. Currently not used.</xs:documentation>
432                </xs:annotation>
433            </xs:element>
434            <xs:element name="item" type="item_type" minOccurs="0" maxOccurs="unbounded">
435                <xs:annotation>
436                    <xs:documentation>An item from a controlled vocabulary.</xs:documentation>
437                </xs:annotation>
438            </xs:element>
439        </xs:sequence>
440    </xs:complexType>
441
442    <xs:complexType name="item_type">
443        <xs:annotation>
444            <xs:appinfo>
445                <sch:pattern id="item">
446                    <sch:title>CMD enumeration item</sch:title>
447                    <sch:rule context="item">
448                        <sch:assert test="count(key('enums',current(),current()/parent::enumeration)) eq 1">All items in an enumeration should be different. Found multiple items with value '<sch:value-of select="."/>'!</sch:assert>
449                    </sch:rule>
450                </sch:pattern>
451            </xs:appinfo>
452        </xs:annotation>
453        <xs:simpleContent>
454            <xs:extension base="xs:string">
455                <xs:attribute type="xs:anyURI" name="ConceptLink" use="optional">
456                    <xs:annotation>
457                        <xs:documentation>A link to the ISOcat data category registry (or any other
458                            concept registry) related to this controllec vocabulary
459                        item.</xs:documentation>
460                    </xs:annotation>
461                </xs:attribute>
462                <xs:attribute type="xs:string" name="AppInfo" use="optional">
463                    <xs:annotation>
464                        <xs:documentation>End-user guidance about the value of this controlled
465                            vocabulary item.</xs:documentation>
466                    </xs:annotation>
467                </xs:attribute>
468                <xs:anyAttribute namespace="http://www.clarin.eu/cmdi/cues/1" processContents="lax"/>
469            </xs:extension>
470        </xs:simpleContent>
471    </xs:complexType>
472
473</xs:schema>
Note: See TracBrowser for help on using the repository browser.