source: metadata/trunk/toolkit/xsd/cmd-envelop.xsd @ 5628

Last change on this file since 5628 was 5628, checked in by Menzo Windhouwer, 10 years ago

Refactoring the toolkit to support CMDI 1.2

File size: 10.7 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dcr="http://www.isocat.org/ns/dcr" xmlns:cmd="http://www.clarin.eu/cmd/" targetNamespace="http://www.clarin.eu/cmd/" elementFormDefault="qualified">
3    <!-- globally declare attributes, so they have to be qualified -->
4    <xs:attribute name="ref" type="xs:IDREF"/>
5    <xs:attribute name="ComponentId" type="xs:anyURI"/>
6    <xs:attribute name="ValueConceptLink" type="xs:anyURI"/>
7    <!-- enumeration of resource types -->
8    <xs:simpleType name="Resourcetype_simple">
9        <xs:restriction base="xs:string">
10            <xs:enumeration value="Metadata">
11                <xs:annotation>
12                    <xs:documentation>The ResourceProxy refers to another component metadata instance (e.g. for grouping metadata descriptions into collections)</xs:documentation>
13                </xs:annotation>
14            </xs:enumeration>
15            <xs:enumeration value="Resource">
16                <xs:annotation>
17                    <xs:documentation>The ResourceProxy refers to a file that is not a metadata instance (e.g. a text document)</xs:documentation>
18                </xs:annotation>
19            </xs:enumeration>
20            <xs:enumeration value="SearchService">
21                <xs:annotation>
22                    <xs:documentation>The ResourceProxy refers to a (SRU/CQL) web service that can be used to query the resource described in this file</xs:documentation>
23                </xs:annotation>
24            </xs:enumeration>
25            <xs:enumeration value="SearchPage">
26                <xs:annotation>
27                    <xs:documentation>The ResourceProxy refers to a web page that can be used to query the resource described in this file</xs:documentation>
28                </xs:annotation>
29            </xs:enumeration>
30            <xs:enumeration value="LandingPage">
31                <xs:annotation>
32                    <xs:documentation>The ResourceProxy refers to a web page that contains the "original context" of the resource described in this file (e.g. repository web page displaying the metadata).</xs:documentation>
33                </xs:annotation>
34            </xs:enumeration>
35        </xs:restriction>
36    </xs:simpleType>
37    <!-- the root of a CMD record -->
38    <xs:element name="CMD">
39        <xs:complexType>
40            <xs:sequence>
41                <!-- metadata of the CMD record -->
42                <xs:element name="Header" minOccurs="1" maxOccurs="1">
43                    <xs:complexType>
44                        <xs:sequence>
45                            <xs:element name="MdCreator" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
46                            <xs:element name="MdCreationDate" type="xs:date" minOccurs="0" maxOccurs="1"/>
47                            <xs:element name="MdSelfLink" type="xs:anyURI" minOccurs="0" maxOccurs="1"/>
48                            <xs:element name="MdProfile" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
49                            <xs:element name="MdCollectionDisplayName" type="xs:string" minOccurs="0" maxOccurs="1"/>
50                        </xs:sequence>
51                    </xs:complexType>
52                </xs:element>
53                <!-- this CMD record is related to these resources -->
54                <xs:element name="Resources" minOccurs="1" maxOccurs="1">
55                    <xs:complexType>
56                        <xs:sequence>
57                            <xs:element name="ResourceProxyList" minOccurs="1" maxOccurs="1">
58                                <xs:complexType>
59                                    <xs:sequence>
60                                        <xs:element name="ResourceProxy" minOccurs="0" maxOccurs="unbounded">
61                                            <xs:complexType>
62                                                <xs:sequence>
63                                                    <xs:element name="ResourceType" minOccurs="1" maxOccurs="1">
64                                                        <xs:complexType>
65                                                            <xs:simpleContent>
66                                                                <xs:extension base="cmd:Resourcetype_simple">
67                                                                    <xs:attribute name="mimetype" type="xs:string" use="optional"/>
68                                                                </xs:extension>
69                                                            </xs:simpleContent>
70                                                        </xs:complexType>
71                                                    </xs:element>
72                                                    <xs:element name="ResourceRef" minOccurs="1" maxOccurs="1" type="xs:anyURI"/>
73                                                </xs:sequence>
74                                                <xs:attribute name="id" type="xs:ID" use="required"/>
75                                            </xs:complexType>
76                                        </xs:element>
77                                    </xs:sequence>
78                                </xs:complexType>
79                            </xs:element>
80                            <xs:element name="JournalFileProxyList" minOccurs="1" maxOccurs="1">
81                                <xs:complexType>
82                                    <xs:sequence>
83                                        <xs:element name="JournalFileProxy" minOccurs="0" maxOccurs="unbounded">
84                                            <xs:complexType>
85                                                <xs:sequence>
86                                                    <xs:element name="JournalFileRef" minOccurs="1" maxOccurs="1" type="xs:anyURI"/>
87                                                </xs:sequence>
88                                            </xs:complexType>
89                                        </xs:element>
90                                    </xs:sequence>
91                                </xs:complexType>
92                            </xs:element>
93                            <!-- the resouces can have relationships among them -->
94                            <xs:element name="ResourceRelationList" minOccurs="1" maxOccurs="1">
95                                <xs:complexType>
96                                    <xs:sequence>
97                                        <xs:element name="ResourceRelation" minOccurs="0" maxOccurs="unbounded">
98                                            <xs:complexType>
99                                                <xs:sequence>
100                                                    <xs:element name="RelationType" minOccurs="1" maxOccurs="1">
101                                                        <xs:complexType>
102                                                            <xs:simpleContent>
103                                                                <xs:extension base="xs:string">
104                                                                    <xs:attribute name="ConceptLink" type="xs:anyURI" use="optional"/>
105                                                                </xs:extension>
106                                                            </xs:simpleContent>
107                                                        </xs:complexType>
108                                                    </xs:element>
109                                                    <xs:element name="Resource" minOccurs="2" maxOccurs="2">
110                                                        <xs:complexType>
111                                                            <xs:sequence>
112                                                                <xs:element name="Role" minOccurs="0" maxOccurs="1">
113                                                                    <xs:complexType>
114                                                                        <xs:simpleContent>
115                                                                            <xs:extension base="xs:string">
116                                                                                <xs:attribute name="ConceptLink" type="xs:anyURI" use="optional"/>
117                                                                            </xs:extension>
118                                                                        </xs:simpleContent>
119                                                                    </xs:complexType>
120                                                                </xs:element>
121                                                            </xs:sequence>
122                                                            <xs:attribute name="ref" type="xs:IDREF" use="required"/>
123                                                        </xs:complexType>
124                                                    </xs:element>
125                                                </xs:sequence>
126                                            </xs:complexType>
127                                        </xs:element>
128                                    </xs:sequence>
129                                </xs:complexType>
130                            </xs:element>
131                        </xs:sequence>
132                    </xs:complexType>
133                </xs:element>
134                <!-- this CMD record can be part of ... -->
135                <xs:element name="IsPartOfList" minOccurs="0" maxOccurs="1">
136                    <xs:complexType>
137                        <xs:sequence>
138                            <xs:element name="IsPartOf" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI"/>
139                        </xs:sequence>
140                    </xs:complexType>
141                </xs:element>
142                <xs:element name="Components" minOccurs="1" maxOccurs="1">
143                    <xs:complexType>
144                        <xs:sequence>
145                            <!-- only one root node is allowed -->
146                            <xs:any namespace="##other" minOccurs="1" maxOccurs="1" processContents="strict"/>
147                        </xs:sequence>
148                    </xs:complexType>
149                </xs:element>
150            </xs:sequence>
151            <xs:attribute name="CMDVersion" fixed="1.2" use="required"/>
152        </xs:complexType>
153        <!-- Resource key and reference constraints -->
154        <xs:key name="ResourceProxy">
155            <xs:selector
156                xpath="cmd:Resources/cmd:ResourceProxyList/cmd:ResourceProxy"/>
157            <xs:field xpath="@id"/>
158        </xs:key>
159        <xs:keyref name="EnvelopResourceRef"
160            refer="cmd:ResourceProxy">
161            <xs:selector xpath=".//cmd:*"/>
162            <xs:field xpath="@ref"/>
163        </xs:keyref>
164        <xs:keyref name="PayloadResourceRef"
165            refer="cmd:ResourceProxy">
166            <xs:selector xpath=".//*"/>
167            <xs:field xpath="@cmd:ref"/>
168        </xs:keyref>
169    </xs:element>
170</xs:schema>
Note: See TracBrowser for help on using the repository browser.