Merge branch 'it-xhtml' of git+ssh://repo.or.cz/srv/git/msmp into patisserie
[msmp.git] / patisserie.xsd
bloba4228f8cfef3a648b54a93ecf19c79248919868e
1 <?xml version="1.0" encoding="utf-8"?>
2 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
3 version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 targetNamespace="http://xml.bruzgys.eu/patisserie"
5 xmlns:ns="http://xml.bruzgys.eu/patisserie">
6 <xs:element name="patisserie">
7 <xs:complexType>
8 <xs:sequence>
9 <xs:element name="meta" type="ns:metaType" />
10 <xs:element name="authors">
11 <xs:complexType>
12 <xs:sequence>
13 <xs:element name="author" type="ns:authorTypeAddKey"
14 minOccurs="1" maxOccurs="unbounded" />
15 </xs:sequence>
16 </xs:complexType>
17 </xs:element>
18 <xs:element name="recipes">
19 <xs:complexType>
20 <xs:sequence>
21 <xs:element name="recipe" type="ns:recipeType"
22 minOccurs="1" maxOccurs="unbounded" />
23 </xs:sequence>
24 </xs:complexType>
25 </xs:element>
26 </xs:sequence>
27 </xs:complexType>
28 <xs:key name="authorKey">
29 <xs:selector xpath="ns:authors/ns:author" />
30 <xs:field xpath="@id" />
31 </xs:key>
32 <xs:keyref name="recipeRefer" refer="ns:authorKey">
33 <xs:selector xpath="ns:recipes/ns:recipe" />
34 <xs:field xpath="ns:author" />
35 </xs:keyref>
36 </xs:element>
38 <xs:complexType name="metaType">
39 <xs:sequence>
40 <xs:element name="title" type="xs:string" />
41 <xs:element name="founded" type="xs:date" />
42 </xs:sequence>
43 </xs:complexType>
45 <xs:complexType name="authorType">
46 <xs:sequence>
47 <xs:element name="name" type="ns:nameType" />
48 <xs:element name="birth" type="xs:date" />
49 </xs:sequence>
50 </xs:complexType>
52 <xs:complexType name="authorTypeAddKey">
53 <xs:complexContent>
54 <xs:extension base="ns:authorType">
55 <xs:attribute name="id" type="ns:keyType" use="required" />
56 </xs:extension>
57 </xs:complexContent>
58 </xs:complexType>
60 <xs:complexType name="recipeType">
61 <xs:sequence>
62 <xs:element name="author" type="ns:keyType" />
63 <xs:element name="title" type="xs:string" />
64 <xs:element name="created" type="xs:date" />
65 <xs:element name="price" type="ns:priceTypeAddCurrency" />
66 <xs:element name="ingredients">
67 <xs:complexType>
68 <xs:sequence>
69 <xs:element name="ingredient" type="xs:string"
70 minOccurs="0" maxOccurs="unbounded"/>
71 </xs:sequence>
72 </xs:complexType>
73 </xs:element>
74 <xs:element name="description" minOccurs="0"
75 type="ns:descriptionTypeAddRestriction" />
76 </xs:sequence>
77 <xs:attribute name="type" type="xs:string" />
78 </xs:complexType>
80 <xs:simpleType name="priceType">
81 <xs:restriction base="xs:decimal">
82 <xs:minInclusive value="0" />
83 </xs:restriction>
84 </xs:simpleType>
86 <xs:complexType name="priceTypeAddCurrency">
87 <xs:simpleContent>
88 <xs:extension base="ns:priceType">
89 <xs:attribute name="currency" use="optional" default="LTL">
90 <xs:simpleType>
91 <xs:restriction base="xs:string">
92 <xs:enumeration value="LTL" />
93 <xs:enumeration value="USD" />
94 <xs:enumeration value="EUR" />
95 </xs:restriction>
96 </xs:simpleType>
97 </xs:attribute>
98 </xs:extension>
99 </xs:simpleContent>
100 </xs:complexType>
102 <xs:complexType name="descriptionType" mixed="true">
103 <xs:sequence>
104 <xs:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0"
105 maxOccurs="unbounded" />
106 </xs:sequence>
107 <xs:attribute name="lang" type="xs:string" use="optional" />
108 </xs:complexType>
110 <xs:complexType name="descriptionTypeAddRestriction">
111 <xs:complexContent>
112 <xs:restriction base="ns:descriptionType">
113 <xs:attribute name="lang" default="en">
114 <xs:simpleType>
115 <xs:restriction base="xs:language">
116 <xs:enumeration value="lt" />
117 <xs:enumeration value="en" />
118 </xs:restriction>
119 </xs:simpleType>
120 </xs:attribute>
121 </xs:restriction>
122 </xs:complexContent>
123 </xs:complexType>
125 <xs:simpleType name="nameSubType">
126 <xs:restriction base="xs:string">
127 <xs:maxLength value="50" />
128 </xs:restriction>
129 </xs:simpleType>
131 <xs:simpleType name="nameType">
132 <xs:restriction base="ns:nameSubType">
133 <xs:pattern value="[A-Z][a-z]+[ ]([A-Z][a-z]*[ ])?[A-Z][a-z]+" />
134 </xs:restriction>
135 </xs:simpleType>
137 <xs:simpleType name="keyType">
138 <xs:list itemType="xs:int" />
139 </xs:simpleType>
140 </xs:schema>