<grammar xmlns=“relaxng.org/ns/structure/1.0”> <start>
<ref name="comps"/>
</start>
<define name=“package-name”>
<text/>
</define>
<define name=“group-name”>
<text/>
</define>
<define name=“lang”>
<text/>
</define>
<define name=“description-text”>
<text/>
</define>
<define name=“comps”>
<element name="comps"> <oneOrMore> <ref name="group"/> </oneOrMore> <ref name="grouphierarchy"/> <oneOrMore> <ref name="package"/> </oneOrMore> </element>
</define>
<define name=“group”>
<element name="group"> <element name="id"> <ref name="group-name"/> </element> <interleave> <ref name="names"/> <optional> <element name="default"> <choice> <value>true</value> <value>false</value> </choice> </element> </optional> <optional> <ref name="descriptions"/> </optional> <optional> <element name="uservisible"> <choice> <value>true</value> <value>false</value> </choice> </element> </optional> <optional> <element name="langonly"> <ref name="lang"/> </element> </optional> </interleave> <optional> <element name="grouplist"> <zeroOrMore> <element name="groupreq"> <ref name="group-name"/> </element> </zeroOrMore> <zeroOrMore> <element name="metapkg"> <attribute name="type"> <choice> <value>default</value> <!-- <value>mandatory</value> ?? --> <value>optional</value> </choice> </attribute> <ref name="package-name"/> </element> </zeroOrMore> </element> </optional> <optional> <element name="packagelist"> <oneOrMore> <element name="packagereq"> <attribute name="type"> <choice> <value>default</value> <value>mandatory</value> <value>optional</value> </choice> </attribute> <optional> <attribute name="requires"> <ref name="package-name"/> </attribute> </optional> <ref name="package-name"/> </element> </oneOrMore> </element> </optional> </element>
</define>
<define name=“grouphierarchy”>
<element name="grouphierarchy"> <oneOrMore> <ref name="category"/> </oneOrMore> </element>
</define>
<define name=“category”>
<element name="category"> <ref name="names"/> <optional> <element name="subcategories"> <oneOrMore> <element name="subcategory"> <ref name="package-name"/> </element> </oneOrMore> </element> </optional> </element>
</define>
<define name=“package”>
<element name="package"> <element name="name"> <ref name="package-name"/> </element> <element name="dependencylist"> <zeroOrMore> <element name="dependency"> <ref name="package-name"/> </element> </zeroOrMore> </element> </element>
</define>
<define name=“names”>
<element name="name"> <ref name="description-text"/> </element> <zeroOrMore> <element name="name"> <attribute name="xml:lang"> <ref name="lang"/> </attribute> <ref name="description-text"/> </element> </zeroOrMore>
</define>
<define name=“descriptions”>
<element name="description"> <ref name="description-text"/> </element> <zeroOrMore> <element name="description"> <attribute name="xml:lang"> <ref name="lang"/> </attribute> <ref name="description-text"/> </element> </zeroOrMore>
</define>
</grammar>