<grammar xmlns="http://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>