1<grammar xmlns="http://relaxng.org/ns/structure/1.0">
2<start>
3  <ref name="comps"/>
4</start>
5
6<define name="package-name">
7  <text/>
8</define>
9
10<define name="group-name">
11  <text/>
12</define>
13
14<define name="lang">
15  <text/>
16</define>
17
18<define name="description-text">
19  <text/>
20</define>
21
22<define name="comps">
23  <element name="comps">
24    <oneOrMore>
25      <ref name="group"/>
26    </oneOrMore>
27    <ref name="grouphierarchy"/>
28    <oneOrMore>
29      <ref name="package"/>
30    </oneOrMore>
31  </element>
32</define>
33
34<define name="group">
35  <element name="group">
36    <element name="id">
37      <ref name="group-name"/>
38    </element>
39    <interleave>
40      <ref name="names"/>
41      <optional>
42        <element name="default">
43          <choice>
44            <value>true</value>
45            <value>false</value>
46          </choice>
47        </element>
48      </optional>
49      <optional>
50        <ref name="descriptions"/>
51      </optional>
52      <optional>
53        <element name="uservisible">
54          <choice>
55            <value>true</value>
56            <value>false</value>
57          </choice>
58        </element>
59      </optional>
60      <optional>
61        <element name="langonly">
62	  <ref name="lang"/>
63        </element>
64      </optional>
65    </interleave>
66    <optional>
67      <element name="grouplist">
68        <zeroOrMore>
69	  <element name="groupreq">
70	    <ref name="group-name"/>
71	  </element>
72        </zeroOrMore>
73        <zeroOrMore>
74	  <element name="metapkg">
75	    <attribute name="type">
76	      <choice>
77	        <value>default</value>
78	        <!-- <value>mandatory</value> ?? -->
79	        <value>optional</value>
80	      </choice>
81	    </attribute>
82	    <ref name="package-name"/>
83	  </element>
84        </zeroOrMore>
85      </element>
86    </optional>
87    <optional>
88      <element name="packagelist">
89        <oneOrMore>
90          <element name="packagereq">
91	    <attribute name="type">
92	      <choice>
93	        <value>default</value>
94	        <value>mandatory</value>
95	        <value>optional</value>
96	      </choice>
97	    </attribute>
98	    <optional>
99	      <attribute name="requires">
100	        <ref name="package-name"/>
101	      </attribute>
102	    </optional>
103	    <ref name="package-name"/>
104	  </element>
105        </oneOrMore>
106      </element>
107    </optional>
108  </element>
109</define>
110
111<define name="grouphierarchy">
112  <element name="grouphierarchy">
113    <oneOrMore>
114      <ref name="category"/>
115    </oneOrMore>
116  </element>
117</define>
118
119<define name="category">
120  <element name="category">
121    <ref name="names"/>
122    <optional>
123      <element name="subcategories">
124        <oneOrMore>
125	  <element name="subcategory">
126	    <ref name="package-name"/>
127	  </element>
128        </oneOrMore>
129      </element>
130    </optional>
131  </element>
132</define>
133
134<define name="package">
135  <element name="package">
136    <element name="name">
137      <ref name="package-name"/>
138    </element>
139    <element name="dependencylist">
140      <zeroOrMore>
141        <element name="dependency">
142	  <ref name="package-name"/>
143	</element>
144      </zeroOrMore>
145    </element>
146  </element>
147</define>
148
149<define name="names">
150  <element name="name">
151    <ref name="description-text"/>
152  </element>
153  <zeroOrMore>
154    <element name="name">
155      <attribute name="xml:lang">
156        <ref name="lang"/>
157      </attribute>
158      <ref name="description-text"/>
159    </element>
160  </zeroOrMore>
161</define>
162
163<define name="descriptions">
164  <element name="description">
165    <ref name="description-text"/>
166  </element>
167  <zeroOrMore>
168    <element name="description">
169      <attribute name="xml:lang">
170        <ref name="lang"/>
171      </attribute>
172      <ref name="description-text"/>
173    </element>
174  </zeroOrMore>
175</define>
176
177</grammar>
178