<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns:ns1="http://novell.com/package/metadata/suse/product" ns="http://linux.duke.edu/metadata/rpm" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<include href="rpm-ns.rng"/>
- <define name="attribute-kind">
- <attribute name="kind">
- <choice>
- <value>package</value>
- <value>patch</value>
- <value>script</value>
- <value>message</value>
- <value>product</value>
- </choice>
- </attribute>
- </define>
- <define name="usual-entry-content">
- <optional>
- <ref name="attribute-kind"/>
- </optional>
- <!-- new compared to rpm-ns -->
- <ref name="attribute-name"/>
- <optional>
- <ref name="shared-entry-attributes"/>
- <ref name="attribute-flags"/>
- </optional>
- <empty/>
- </define>
<start>
<element name="ns1:product">
<attribute name="type"/>
<optional>
<element name="provides">
<oneOrMore>
- <element name="entry">
- <optional>
- <ref name="attribute-kind"/>
- </optional>
- <ref name="attribute-name"/>
- <optional>
- <ref name="shared-entry-attributes"/>
- <ref name="attribute-flags-provides"/>
- </optional>
- <empty/>
- </element>
+ <choice>
+ <element name="entry">
+ <optional>
+ <ref name="attribute-kind"/>
+ </optional>
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <ref name="attribute-flags-provides"/>
+ </optional>
+ <empty/>
+ </element>
+ <ref name="element-capability"/>
+ </choice>
</oneOrMore>
</element>
</optional>
<optional>
<element name="conflicts">
<oneOrMore>
- <element name="entry">
- <ref name="usual-entry-content"/>
- </element>
+ <ref name="usual-entry-or-capability"/>
</oneOrMore>
</element>
</optional>
<optional>
<element name="obsoletes">
<oneOrMore>
- <element name="entry">
- <optional>
- <ref name="attribute-kind"/>
- </optional>
- <ref name="attribute-name"/>
- <optional>
- <ref name="shared-entry-attributes"/>
- <ref name="attribute-flags-obsoletes"/>
- </optional>
- <empty/>
- </element>
+ <choice>
+ <element name="entry">
+ <optional>
+ <ref name="attribute-kind"/>
+ </optional>
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <ref name="attribute-flags-obsoletes"/>
+ </optional>
+ <empty/>
+ </element>
+ <ref name="element-capability"/>
+ </choice>
</oneOrMore>
</element>
</optional>
<optional>
<element name="requires">
<zeroOrMore>
- <element name="entry">
- <optional>
- <attribute name="pre">
- <choice>
- <value>1</value>
- <value>0</value>
- </choice>
- </attribute>
- </optional>
- <ref name="usual-entry-content"/>
- </element>
+ <choice>
+ <element name="entry">
+ <optional>
+ <attribute name="pre">
+ <choice>
+ <value>1</value>
+ <value>0</value>
+ </choice>
+ </attribute>
+ </optional>
+ <ref name="usual-entry-content"/>
+ </element>
+ <ref name="element-capability"/>
+ </choice>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="recommends">
<zeroOrMore>
- <element name="entry">
- <ref name="usual-entry-content"/>
- </element>
+ <ref name="usual-entry-or-capability"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="enhances">
<zeroOrMore>
- <element name="entry">
- <ref name="usual-entry-content"/>
- </element>
+ <ref name="usual-entry-or-capability"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="supplements">
<zeroOrMore>
- <element name="entry">
- <ref name="usual-entry-content"/>
- </element>
+ <ref name="usual-entry-or-capability"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="suggests">
<zeroOrMore>
- <element name="entry">
- <ref name="usual-entry-content"/>
- </element>
+ <ref name="usual-entry-or-capability"/>
</zeroOrMore>
</element>
</optional>
</attribute>
<empty/>
</define>
- <define name="element-provides">
- <element name="provides">
- <ref name="provides"/>
- </element>
- </define>
<define name="shared-entry-attributes">
<attribute name="epoch">
<data type="nonNegativeInteger"/>
<attribute name="rel"/>
</optional>
</define>
+ <define name="attribute-kind">
+ <attribute name="kind">
+ <choice>
+ <value>package</value>
+ <value>patch</value>
+ <value>script</value>
+ <value>message</value>
+ <value>product</value>
+ </choice>
+ </attribute>
+ </define>
<define name="attribute-flags-provides">
<attribute name="flags">
<choice>
<define name="attribute-name">
<attribute name="name"/>
</define>
+ <define name="usual-entry-content">
+ <optional>
+ <ref name="attribute-kind"/>
+ </optional>
+ <!-- new compared to rpm-ns -->
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <ref name="attribute-flags"/>
+ </optional>
+ <empty/>
+ </define>
+ <define name="element-entry">
+ <element name="entry">
+ <ref name="usual-entry-content"/>
+ </element>
+ </define>
+ <define name="element-provides">
+ <element name="provides">
+ <ref name="provides"/>
+ </element>
+ </define>
<define name="provides">
<oneOrMore>
<element name="entry">
</optional>
<text/>
</define>
+ <define name="dependencies">
+ <interleave>
+ <optional>
+ <ref name="element-provides"/>
+ </optional>
+ <optional>
+ <ref name="element-conflicts"/>
+ </optional>
+ <optional>
+ <ref name="element-obsoletes"/>
+ </optional>
+ <optional>
+ <ref name="element-requires"/>
+ </optional>
+ <optional>
+ <ref name="element-suggests"/>
+ </optional>
+ <optional>
+ <ref name="element-enhances"/>
+ </optional>
+ <optional>
+ <ref name="element-supplements"/>
+ </optional>
+ <optional>
+ <ref name="element-recommends"/>
+ </optional>
+ </interleave>
+ </define>
</grammar>
<?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:ns1="http://linux.duke.edu/metadata/common" ns="http://novell.com/package/metadata/suse/common" xmlns="http://relaxng.org/ns/structure/1.0">
- <include href="primary.rng">
+<grammar xmlns:suse="http://novell.com/package/metadata/suse/common" xmlns:ns1="http://linux.duke.edu/metadata/common" xmlns:ns2="http://linux.duke.edu/metadata/rpm" ns="http://novell.com/package/metadata/suse/common" xmlns="http://relaxng.org/ns/structure/1.0">
+ <include href="primary.rng"/>
+ <include href="rpm-ns.rng">
<define name="element-format">
<element name="ns1:format">
<ref name="suse-format"/>
</element>
</define>
+ <define name="element-provides">
+ <choice>
+ <element name="suse:provides">
+ <ref name="suse-provides"/>
+ </element>
+ <element name="ns2:provides">
+ <ref name="provides"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-requires">
+ <choice>
+ <element name="suse:requires">
+ <ref name="suse-requires"/>
+ </element>
+ <element name="ns2:requires">
+ <ref name="requires"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-conflicts">
+ <choice>
+ <element name="suse:conflicts">
+ <ref name="suse-conflicts"/>
+ </element>
+ <element name="ns2:conflicts">
+ <ref name="conflicts"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-recommends">
+ <choice>
+ <element name="suse:recommends">
+ <ref name="suse-recommends"/>
+ </element>
+ <element name="ns2:recommends">
+ <ref name="recommends"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-enhances">
+ <choice>
+ <element name="suse:enhances">
+ <ref name="suse-enhances"/>
+ </element>
+ <element name="ns2:enhances">
+ <ref name="enhances"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-supplements">
+ <choice>
+ <element name="suse:supplements">
+ <ref name="suse-supplements"/>
+ </element>
+ <element name="ns2:supplements">
+ <ref name="supplements"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-suggests">
+ <choice>
+ <element name="suse:suggests">
+ <ref name="suse-suggests"/>
+ </element>
+ <element name="ns2:suggests">
+ <ref name="suggests"/>
+ </element>
+ </choice>
+ </define>
+ <define name="element-obsoletes">
+ <choice>
+ <element name="suse:obsoletes">
+ <ref name="suse-obsoletes"/>
+ </element>
+ <element name="ns2:obsoletes">
+ <ref name="obsoletes"/>
+ </element>
+ </choice>
+ </define>
+ <define name="dependencies">
+ <ref name="suse-dependencies"/>
+ </define>
</include>
+ <define name="element-capability">
+ <element name="ns1:capability">
+ <optional>
+ <ref name="attribute-kind"/>
+ </optional>
+ <text/>
+ </element>
+ </define>
+ <define name="usual-entry-or-capability">
+ <choice>
+ <ref name="element-entry"/>
+ <ref name="element-capability"/>
+ </choice>
+ </define>
<define name="suse-format">
<interleave>
<ref name="format"/>
<ref name="element-install_only"/>
</optional>
</define>
+ <define name="suse-provides">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-requires">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-conflicts">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-recommends">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-enhances">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-supplements">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-suggests">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-obsoletes">
+ <oneOrMore>
+ <ref name="usual-entry-or-capability"/>
+ </oneOrMore>
+ </define>
+ <define name="suse-dependencies">
+ <interleave>
+ <optional>
+ <ref name="element-provides"/>
+ </optional>
+ <optional>
+ <ref name="element-conflicts"/>
+ </optional>
+ <optional>
+ <ref name="element-obsoletes"/>
+ </optional>
+ <optional>
+ <ref name="freshen"/>
+ </optional>
+ <optional>
+ <ref name="element-requires"/>
+ </optional>
+ <optional>
+ <ref name="element-suggests"/>
+ </optional>
+ <optional>
+ <ref name="element-enhances"/>
+ </optional>
+ <optional>
+ <ref name="element-supplements"/>
+ </optional>
+ <optional>
+ <ref name="element-recommends"/>
+ </optional>
+ </interleave>
+ </define>
<define name="element-authors">
<element name="authors">
<ref name="authors"/>
<empty/>
</define>
<define name="element-freshen">
- <element name="freshen">
- <ref name="freshen"/>
- </element>
+ <choice>
+ <element name="suse:freshen">
+ <ref name="freshen"/>
+ </element>
+ <element name="freshen">
+ <ref name="freshen"/>
+ </element>
+ </choice>
</define>
<define name="freshen">
<oneOrMore>
- <element name="entry">
- <ref name="attribute-name"/>
- <optional>
- <ref name="shared-entry-attributes"/>
- <ref name="attribute-flags"/>
- </optional>
- <empty/>
- </element>
+ <ref name="usual-entry-or-capability"/>
</oneOrMore>
</define>
<define name="element-install_only">