zypp/detail/Makefile \
zypp/capability/Makefile \
zypp/parser/Makefile \
- zypp/parser/yum/Makefile
+ zypp/parser/yum/Makefile \
+ zypp/parser/yum/schema/Makefile
)
dnl ==================================================
## ##################################################
-LDADD = $(top_srcdir)/zypp/lib@PACKAGE@.la
+LDADD = $(top_srcdir)/zypp/lib@PACKAGE@.la /usr/lib/libxml2.a /usr/lib/libz.a
## ##################################################
AM_CXXFLAGS = -pg
-LDADD = $(top_srcdir)/zypp/lib@PACKAGE@.la
+LDADD = $(top_srcdir)/zypp/lib@PACKAGE@.la /usr/lib/libxml2.a /usr/lib/libz.a
## ##################################################
AM_CXXFLAGS = -pg
-LDADD = $(top_srcdir)/zypp/lib@PACKAGE@.la
+LDADD = $(top_srcdir)/zypp/lib@PACKAGE@.la /usr/lib/libxml2.a /usr/lib/libz.a
## ##################################################
## Process this file with automake to produce Makefile.in
## ##################################################
-SUBDIRS =
+SUBDIRS = schema
INCLUDES = -I$(oldincludedir)/libxml2 -I..
--- /dev/null
+schemafilesdir = /usr/share/YaST2/schema/packagemanager
+schemafiles_DATA = $(wildcard *.rng *.rnc)
+EXTRA_DIST = $(schemafiles_DATA)
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/filelists"
+
+element filelists {
+ attribute packages { xsd:nonNegativeInteger },
+ element package {
+ attribute pkgid { text },
+ attribute name { text },
+ attribute arch {
+ "noarch"
+ | "athlon"
+ | "i386"
+ | "i486"
+ | "i586"
+ | "i686"
+ | "ia64"
+ | "ppc"
+ | "ppc64"
+ | "s390"
+ | "s390x"
+ | "x86_64"
+ | "src"
+ },
+ element version {
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text },
+ empty
+ },
+ element file {
+ attribute type { "dir" | "ghost" }?,
+ text
+ }*,
+ empty
+ }+,
+ empty
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<element name="filelists" ns="http://linux.duke.edu/metadata/filelists" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <attribute name="packages">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <oneOrMore>
+ <element name="package">
+ <attribute name="pkgid"/>
+ <attribute name="name"/>
+ <attribute name="arch">
+ <choice>
+ <value>noarch</value>
+ <value>athlon</value>
+ <value>i386</value>
+ <value>i486</value>
+ <value>i586</value>
+ <value>i686</value>
+ <value>ia64</value>
+ <value>ppc</value>
+ <value>ppc64</value>
+ <value>s390</value>
+ <value>s390x</value>
+ <value>x86_64</value>
+ <value>src</value>
+ </choice>
+ </attribute>
+ <element name="version">
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ <empty/>
+ </element>
+ <zeroOrMore>
+ <element name="file">
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>dir</value>
+ <value>ghost</value>
+ </choice>
+ </attribute>
+ </optional>
+ <text/>
+ </element>
+ </zeroOrMore>
+ <empty/>
+ </element>
+ </oneOrMore>
+ <empty/>
+</element>
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/groups"
+
+element groups {
+ element group {
+ element groupid { text },
+ element name {
+ attribute lang { text }?,
+ text
+ }+,
+ element default { "true" | "false" }?,
+ element uservisible { "true" | "false" },
+ element description {
+ attribute lang { text }?,
+ text
+ }+,
+ element grouplist {
+ element metapkg {
+ attribute type { text }?,
+ text
+ }+
+ }?,
+ element packagelist {
+ element packagereq {
+ attribute type { text }?,
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text },
+ text
+ }+
+ }?,
+ empty
+ }+,
+ empty
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<element name="groups" ns="http://linux.duke.edu/metadata/groups" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <oneOrMore>
+ <element name="group">
+ <element name="groupid">
+ <text/>
+ </element>
+ <oneOrMore>
+ <element name="name">
+ <optional>
+ <attribute name="lang"/>
+ </optional>
+ <text/>
+ </element>
+ </oneOrMore>
+ <optional>
+ <element name="default">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </element>
+ </optional>
+ <element name="uservisible">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </element>
+ <oneOrMore>
+ <element name="description">
+ <optional>
+ <attribute name="lang"/>
+ </optional>
+ <text/>
+ </element>
+ </oneOrMore>
+ <optional>
+ <element name="grouplist">
+ <oneOrMore>
+ <element name="metapkg">
+ <optional>
+ <attribute name="type"/>
+ </optional>
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <optional>
+ <element name="packagelist">
+ <oneOrMore>
+ <element name="packagereq">
+ <optional>
+ <attribute name="type"/>
+ </optional>
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ <empty/>
+</element>
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/other"
+
+element otherdata {
+ attribute packages { xsd:positiveInteger },
+ element package {
+ attribute pkgid { text },
+ attribute name { text },
+ attribute arch {
+ "noarch"
+ | "athlon"
+ | "i386"
+ | "i486"
+ | "i586"
+ | "i686"
+ | "ia64"
+ | "ppc"
+ | "ppc64"
+ | "s390"
+ | "x390x"
+ | "x86_64"
+ | "src"
+ },
+ element version {
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text },
+ empty
+ },
+ element changelog {
+ attribute author { text },
+ attribute date { xsd:integer },
+ text
+ }*,
+ empty
+ }+,
+ empty
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<element name="otherdata" ns="http://linux.duke.edu/metadata/other" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <attribute name="packages">
+ <data type="positiveInteger"/>
+ </attribute>
+ <oneOrMore>
+ <element name="package">
+ <attribute name="pkgid"/>
+ <attribute name="name"/>
+ <attribute name="arch">
+ <choice>
+ <value>noarch</value>
+ <value>athlon</value>
+ <value>i386</value>
+ <value>i486</value>
+ <value>i586</value>
+ <value>i686</value>
+ <value>ia64</value>
+ <value>ppc</value>
+ <value>ppc64</value>
+ <value>s390</value>
+ <value>x390x</value>
+ <value>x86_64</value>
+ <value>src</value>
+ </choice>
+ </attribute>
+ <element name="version">
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ <empty/>
+ </element>
+ <zeroOrMore>
+ <element name="changelog">
+ <attribute name="author"/>
+ <attribute name="date">
+ <data type="integer"/>
+ </attribute>
+ <text/>
+ </element>
+ </zeroOrMore>
+ <empty/>
+ </element>
+ </oneOrMore>
+ <empty/>
+</element>
--- /dev/null
+default namespace = "http://novell.com/package/metadata/suse/patch"
+namespace ns1 = "http://novell.com/package/metadata/suse/common"
+namespace yum = "http://linux.duke.edu/metadata/common"
+
+include "suse-primary.rnc" {
+ start = element-patch
+ # patches use localized summary and description fields
+ element-summary = element summary { localized-string }+
+ element-description = element description { localized-string }+
+ # packages in patches have an additional rpmfiles element
+ element-package = element yum:package { package, element-pkgfiles }
+ # names in dependencies can include a "kind". Should not be used for packages.
+ attribute-name =
+ attribute kind { "package" | "patch" | "script" | "message" | "product" }?,
+ attribute name { text }
+}
+
+element-patch = element patch { patch }
+
+localized-string =
+ attribute lang { text },
+ text
+
+patch =
+ attribute engine { text },
+ attribute patchid { text },
+ attribute timestamp { xsd:nonNegativeInteger },
+ element-name,
+ element-summary,
+ element-description,
+ element-version,
+ dependency-block,
+ element-category,
+ element reboot_needed { empty }?,
+ element package_manager { empty }?,
+ element-update_script?,
+ element atoms { element-package | element-script | element-message }+
+
+dependency-block =
+ # shortcut since all atoms have the same dependency section
+ element-provides?,
+ element-conflicts?,
+ element-obsoletes?,
+ element-freshen?,
+ element-requires?
+
+element-category =
+ element category { "youfix" | "security" | "recommended" | "bonus" | "beta" }
+
+element-update_script = element update_script { text }
+
+element-script =
+ element script {
+ element-name,
+ element-version,
+ element do { xsd:string },
+ element undo { xsd:string }?,
+ dependency-block
+ }
+
+element-message =
+ element message {
+ element-name,
+ element-version,
+ attribute type { "OK" | "YesNo" },
+ element text { xsd:string },
+ dependency-block
+ }
+
+element-pkgfiles =
+ element pkgfiles { ( element-deltarpm | element-patchrpm | element-plainrpm ) * }
+
+element-plainrpm =
+ element plainrpm {
+ shared-rpmfile-attributes
+ }
+
+element-patchrpm =
+ element patchrpm {
+ shared-rpmfile-attributes,
+ element-base_version +
+ }
+
+
+element-deltarpm =
+ element deltarpm {
+ shared-rpmfile-attributes,
+ element-delta-base_version
+ }
+
+shared-rpmfile-attributes =
+ attribute arch { arch },
+ attribute filename { text },
+ attribute downloadsize { text } ,
+ attribute md5sum { text } ?,
+ attribute buildtime { text } ?
+
+element-base_version =
+ element base_version { version }
+
+element-delta-base_version =
+ element base_version {
+ version,
+ attribute md5sum { text },
+ attribute buildtime { text },
+ attribute sequence_info { text }
+ }
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns:yum="http://linux.duke.edu/metadata/common" ns="http://novell.com/package/metadata/suse/patch" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href="suse-primary.rng">
+ <start>
+ <ref name="element-patch"/>
+ </start>
+ <!-- patches use localized summary and description fields -->
+ <define name="element-summary">
+ <oneOrMore>
+ <element name="summary">
+ <ref name="localized-string"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="element-description">
+ <oneOrMore>
+ <element name="description">
+ <ref name="localized-string"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <!-- packages in patches have an additional rpmfiles element -->
+ <define name="element-package">
+ <element name="yum:package">
+ <ref name="package"/>
+ <ref name="element-pkgfiles"/>
+ </element>
+ </define>
+ <!-- names in dependencies can include a "kind". Should not be used for packages. -->
+ <define name="attribute-name">
+ <optional>
+ <attribute name="kind">
+ <choice>
+ <value>package</value>
+ <value>patch</value>
+ <value>script</value>
+ <value>message</value>
+ <value>product</value>
+ </choice>
+ </attribute>
+ </optional>
+ <attribute name="name"/>
+ </define>
+ </include>
+ <define name="element-patch">
+ <element name="patch">
+ <ref name="patch"/>
+ </element>
+ </define>
+ <define name="localized-string">
+ <attribute name="lang"/>
+ <text/>
+ </define>
+ <define name="patch">
+ <attribute name="engine"/>
+ <attribute name="patchid"/>
+ <attribute name="timestamp">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <ref name="element-name"/>
+ <ref name="element-summary"/>
+ <ref name="element-description"/>
+ <ref name="element-version"/>
+ <ref name="dependency-block"/>
+ <ref name="element-category"/>
+ <optional>
+ <element name="reboot_needed">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <element name="package_manager">
+ <empty/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="element-update_script"/>
+ </optional>
+ <oneOrMore>
+ <element name="atoms">
+ <choice>
+ <ref name="element-package"/>
+ <ref name="element-script"/>
+ <ref name="element-message"/>
+ </choice>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="dependency-block">
+ <optional>
+ <!-- shortcut since all atoms have the same dependency section -->
+ <ref name="element-provides"/>
+ </optional>
+ <optional>
+ <ref name="element-conflicts"/>
+ </optional>
+ <optional>
+ <ref name="element-obsoletes"/>
+ </optional>
+ <optional>
+ <ref name="element-freshen"/>
+ </optional>
+ <optional>
+ <ref name="element-requires"/>
+ </optional>
+ </define>
+ <define name="element-category">
+ <element name="category">
+ <choice>
+ <value>youfix</value>
+ <value>security</value>
+ <value>recommended</value>
+ <value>bonus</value>
+ <value>beta</value>
+ </choice>
+ </element>
+ </define>
+ <define name="element-update_script">
+ <element name="update_script">
+ <text/>
+ </element>
+ </define>
+ <define name="element-script">
+ <element name="script">
+ <ref name="element-name"/>
+ <ref name="element-version"/>
+ <element name="do">
+ <data type="string"/>
+ </element>
+ <optional>
+ <element name="undo">
+ <data type="string"/>
+ </element>
+ </optional>
+ <ref name="dependency-block"/>
+ </element>
+ </define>
+ <define name="element-message">
+ <element name="message">
+ <ref name="element-name"/>
+ <ref name="element-version"/>
+ <attribute name="type">
+ <choice>
+ <value>OK</value>
+ <value>YesNo</value>
+ </choice>
+ </attribute>
+ <element name="text">
+ <data type="string"/>
+ </element>
+ <ref name="dependency-block"/>
+ </element>
+ </define>
+ <define name="element-pkgfiles">
+ <element name="pkgfiles">
+ <zeroOrMore>
+ <choice>
+ <ref name="element-deltarpm"/>
+ <ref name="element-patchrpm"/>
+ <ref name="element-plainrpm"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="element-plainrpm">
+ <element name="plainrpm">
+ <ref name="shared-rpmfile-attributes"/>
+ </element>
+ </define>
+ <define name="element-patchrpm">
+ <element name="patchrpm">
+ <ref name="shared-rpmfile-attributes"/>
+ <oneOrMore>
+ <ref name="element-base_version"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="element-deltarpm">
+ <element name="deltarpm">
+ <ref name="shared-rpmfile-attributes"/>
+ <ref name="element-delta-base_version"/>
+ </element>
+ </define>
+ <define name="shared-rpmfile-attributes">
+ <attribute name="arch">
+ <ref name="arch"/>
+ </attribute>
+ <attribute name="filename"/>
+ <attribute name="downloadsize"/>
+ <optional>
+ <attribute name="md5sum"/>
+ </optional>
+ <optional>
+ <attribute name="buildtime"/>
+ </optional>
+ </define>
+ <define name="element-base_version">
+ <element name="base_version">
+ <ref name="version"/>
+ </element>
+ </define>
+ <define name="element-delta-base_version">
+ <element name="base_version">
+ <ref name="version"/>
+ <attribute name="md5sum"/>
+ <attribute name="buildtime"/>
+ <attribute name="sequence_info"/>
+ </element>
+ </define>
+</grammar>
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/common"
+
+grammar {
+
+# defines element-format and format
+include "rpm-ns.rnc"
+
+start = element-metadata
+element-metadata =
+ element metadata { metadata }
+
+metadata =
+ (
+ attribute packages { xsd:nonNegativeInteger }?,
+ element-package+
+ )
+
+element-package =
+ element package { package }
+
+package =
+ attribute type { "rpm" },
+ element-name,
+ element-arch,
+ element-version,
+ element-checksum,
+ element-summary,
+ element-description,
+ element-packager,
+ element-url,
+ element-time,
+ element-size,
+ element-location,
+ element-format
+
+element-name =
+ element name { text }
+
+element-arch =
+ element arch { arch }
+
+arch =
+ "noarch"
+ | "athlon"
+ | "i386"
+ | "i486"
+ | "i586"
+ | "i686"
+ | "ia64"
+ | "ppc"
+ | "ppc64"
+ | "s390"
+ | "s390x"
+ | "x86_64"
+ | "src"
+
+element-version =
+ element version { version }
+
+version =
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text },
+ empty
+
+element-checksum =
+ element checksum { checksum }
+
+checksum =
+ attribute type { "md5" | "sha" },
+ attribute pkgid { "YES" | "NO" },
+ text
+
+element-summary =
+ element summary { text }
+
+element-description =
+ element description { text }
+
+element-packager =
+ element packager { text }
+
+element-url =
+ element url { xsd:anyURI }
+
+element-time =
+ element time { time }
+
+time =
+ attribute file { xsd:nonNegativeInteger },
+ attribute build { xsd:nonNegativeInteger },
+ empty
+
+
+element-size =
+ element size { size }
+
+size =
+ attribute package { xsd:nonNegativeInteger },
+ attribute installed { xsd:nonNegativeInteger },
+ attribute archive { xsd:nonNegativeInteger },
+ empty
+
+element-location =
+ element location { location }
+
+location =
+ attribute xml:base { xsd:anyURI }?,
+ attribute href { xsd:anyURI },
+ empty
+
+}
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar ns="http://linux.duke.edu/metadata/common" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <!-- defines element-format and format -->
+ <include href="rpm-ns.rng"/>
+ <start>
+ <ref name="element-metadata"/>
+ </start>
+ <define name="element-metadata">
+ <element name="metadata">
+ <ref name="metadata"/>
+ </element>
+ </define>
+ <define name="metadata">
+ <optional>
+ <attribute name="packages">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ </optional>
+ <oneOrMore>
+ <ref name="element-package"/>
+ </oneOrMore>
+ </define>
+ <define name="element-package">
+ <element name="package">
+ <ref name="package"/>
+ </element>
+ </define>
+ <define name="package">
+ <attribute name="type">
+ <value>rpm</value>
+ </attribute>
+ <ref name="element-name"/>
+ <ref name="element-arch"/>
+ <ref name="element-version"/>
+ <ref name="element-checksum"/>
+ <ref name="element-summary"/>
+ <ref name="element-description"/>
+ <ref name="element-packager"/>
+ <ref name="element-url"/>
+ <ref name="element-time"/>
+ <ref name="element-size"/>
+ <ref name="element-location"/>
+ <ref name="element-format"/>
+ </define>
+ <define name="element-name">
+ <element name="name">
+ <text/>
+ </element>
+ </define>
+ <define name="element-arch">
+ <element name="arch">
+ <ref name="arch"/>
+ </element>
+ </define>
+ <define name="arch">
+ <choice>
+ <value>noarch</value>
+ <value>athlon</value>
+ <value>i386</value>
+ <value>i486</value>
+ <value>i586</value>
+ <value>i686</value>
+ <value>ia64</value>
+ <value>ppc</value>
+ <value>ppc64</value>
+ <value>s390</value>
+ <value>s390x</value>
+ <value>x86_64</value>
+ <value>src</value>
+ </choice>
+ </define>
+ <define name="element-version">
+ <element name="version">
+ <ref name="version"/>
+ </element>
+ </define>
+ <define name="version">
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ <empty/>
+ </define>
+ <define name="element-checksum">
+ <element name="checksum">
+ <ref name="checksum"/>
+ </element>
+ </define>
+ <define name="checksum">
+ <attribute name="type">
+ <choice>
+ <value>md5</value>
+ <value>sha</value>
+ </choice>
+ </attribute>
+ <attribute name="pkgid">
+ <choice>
+ <value>YES</value>
+ <value>NO</value>
+ </choice>
+ </attribute>
+ <text/>
+ </define>
+ <define name="element-summary">
+ <element name="summary">
+ <text/>
+ </element>
+ </define>
+ <define name="element-description">
+ <element name="description">
+ <text/>
+ </element>
+ </define>
+ <define name="element-packager">
+ <element name="packager">
+ <text/>
+ </element>
+ </define>
+ <define name="element-url">
+ <element name="url">
+ <data type="anyURI"/>
+ </element>
+ </define>
+ <define name="element-time">
+ <element name="time">
+ <ref name="time"/>
+ </element>
+ </define>
+ <define name="time">
+ <attribute name="file">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="build">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <empty/>
+ </define>
+ <define name="element-size">
+ <element name="size">
+ <ref name="size"/>
+ </element>
+ </define>
+ <define name="size">
+ <attribute name="package">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="installed">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="archive">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <empty/>
+ </define>
+ <define name="element-location">
+ <element name="location">
+ <ref name="location"/>
+ </element>
+ </define>
+ <define name="location">
+ <optional>
+ <attribute name="xml:base">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ <empty/>
+ </define>
+</grammar>
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/rpm"
+namespace ns1 = "http://novell.com/package/metadata/suse/product"
+
+element ns1:product {
+ attribute type { text },
+ element ns1:vendor { text },
+ element ns1:name { text },
+ element ns1:version {
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }
+ },
+ element ns1:displayname {
+ attribute lang { text },
+ text
+ }+,
+ element ns1:description {
+ attribute lang { text },
+ text
+ }+,
+ element ns1:version {
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }
+ },
+ element provides {
+ element entry {
+ attribute name { text },
+ (attribute flags { "EQ" | "LE" | "GE" },
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }?)?,
+ empty
+ }+
+ },
+ element conflicts {
+ element entry {
+ attribute name { text },
+ (attribute flags { "EQ" | "LE" | "GE" | "LT" | "GT" },
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }?)?,
+ empty
+ }+
+ }?,
+ element obsoletes {
+ element entry {
+ attribute name { text },
+ (attribute flags { "EQ" | "LE" | "GE" | "LT" },
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }?)?,
+ empty
+ }+
+ }?,
+ element requires {
+ element entry {
+ attribute name { text },
+ (attribute flags { "EQ" | "LE" | "GE" | "LT" | "GT" },
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }?)?,
+ attribute pre { "1" | "0" }?,
+ empty
+ }*
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<element name="ns1:product" 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">
+ <attribute name="type"/>
+ <element name="ns1:vendor">
+ <text/>
+ </element>
+ <element name="ns1:name">
+ <text/>
+ </element>
+ <element name="ns1:version">
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ </element>
+ <oneOrMore>
+ <element name="ns1:displayname">
+ <attribute name="lang"/>
+ <text/>
+ </element>
+ </oneOrMore>
+ <oneOrMore>
+ <element name="ns1:description">
+ <attribute name="lang"/>
+ <text/>
+ </element>
+ </oneOrMore>
+ <element name="ns1:version">
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <attribute name="rel"/>
+ </element>
+ <element name="provides">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name"/>
+ <optional>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ </choice>
+ </attribute>
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <optional>
+ <attribute name="rel"/>
+ </optional>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </element>
+ <optional>
+ <element name="conflicts">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name"/>
+ <optional>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ <value>GT</value>
+ </choice>
+ </attribute>
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <optional>
+ <attribute name="rel"/>
+ </optional>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <optional>
+ <element name="obsoletes">
+ <oneOrMore>
+ <element name="entry">
+ <attribute name="name"/>
+ <optional>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ </choice>
+ </attribute>
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <optional>
+ <attribute name="rel"/>
+ </optional>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <element name="requires">
+ <zeroOrMore>
+ <element name="entry">
+ <attribute name="name"/>
+ <optional>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ <value>GT</value>
+ </choice>
+ </attribute>
+ <attribute name="epoch">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="ver"/>
+ <optional>
+ <attribute name="rel"/>
+ </optional>
+ </optional>
+ <optional>
+ <attribute name="pre">
+ <choice>
+ <value>1</value>
+ <value>0</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </zeroOrMore>
+ </element>
+</element>
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/repo"
+
+element repomd {
+ element data {
+ attribute type { "other" | "filelists" | "primary" }&
+ element location {
+ attribute xml:base { xsd:anyURI }?,
+ attribute href { xsd:anyURI },
+ empty
+ }&
+ element checksum {
+ attribute type { "md5" | "sha" },
+ text
+ }&
+ element timestamp { xsd:integer }&
+ element open-checksum {
+ attribute type { "md5" | "sha" },
+ text
+ }?
+ }+&
+ text
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<element name="repomd" ns="http://linux.duke.edu/metadata/repo" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <interleave>
+ <oneOrMore>
+ <element name="data">
+ <interleave>
+ <attribute name="type">
+ <choice>
+ <value>other</value>
+ <value>filelists</value>
+ <value>primary</value>
+ </choice>
+ </attribute>
+ <element name="location">
+ <optional>
+ <attribute name="xml:base">
+ <data type="anyURI"/>
+ </attribute>
+ </optional>
+ <attribute name="href">
+ <data type="anyURI"/>
+ </attribute>
+ <empty/>
+ </element>
+ <element name="checksum">
+ <attribute name="type">
+ <choice>
+ <value>md5</value>
+ <value>sha</value>
+ </choice>
+ </attribute>
+ <text/>
+ </element>
+ <element name="timestamp">
+ <data type="integer"/>
+ </element>
+ <optional>
+ <element name="open-checksum">
+ <attribute name="type">
+ <choice>
+ <value>md5</value>
+ <value>sha</value>
+ </choice>
+ </attribute>
+ <text/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </oneOrMore>
+ <text/>
+ </interleave>
+</element>
--- /dev/null
+#!/bin/bash
+for i in *.rnc; do trang -I rnc -O rng $i ${i%.rnc}.rng; done
--- /dev/null
+default namespace = "http://linux.duke.edu/metadata/rpm"
+namespace ns1 = "http://linux.duke.edu/metadata/common"
+
+
+element-format =
+ element ns1:format { format }
+
+format =
+ element-license,
+ element-vendor,
+ element-group,
+ element-buildhost,
+ element-sourcerpm,
+ element-header-range,
+ element-provides?,
+ element-conflicts?,
+ element-obsoletes?,
+ element-requires?,
+ element-file*
+
+
+element-license =
+ element license { text }
+
+element-vendor =
+ element vendor { text }
+
+element-group =
+ element group { text }
+
+element-buildhost =
+ element buildhost { text }
+
+element-sourcerpm =
+ element sourcerpm { text }
+
+element-header-range =
+ element header-range { header-range }
+
+header-range =
+ attribute start { xsd:nonNegativeInteger },
+ attribute end { xsd:nonNegativeInteger },
+ empty
+
+element-provides =
+ element provides { provides }
+
+shared-entry-attributes =
+ attribute epoch { xsd:nonNegativeInteger },
+ attribute ver { text },
+ attribute rel { text }?
+
+attribute-name =
+ attribute name { text }
+
+provides =
+ element entry {
+ attribute-name,
+ (
+ shared-entry-attributes,
+ attribute flags { "EQ" | "LE" | "GE" }
+ )?,
+ empty
+ }+
+
+element-conflicts =
+ element conflicts { conflicts }
+
+conflicts =
+ element entry {
+ attribute-name,
+ (
+ shared-entry-attributes,
+ attribute flags { "EQ" | "LE" | "GE" | "LT" | "GT" }
+ )?,
+ empty
+ }+
+
+
+element-obsoletes =
+ element obsoletes { obsoletes }
+
+obsoletes =
+ element entry {
+ attribute-name,
+ (
+ shared-entry-attributes,
+ attribute flags { "EQ" | "LE" | "GE" | "LT" }
+ )?,
+ empty
+ }+
+
+element-requires =
+ element requires { requires }
+
+requires =
+ element entry {
+ attribute-name,
+ (
+ shared-entry-attributes,
+ attribute flags { "EQ" | "LE" | "GE" | "LT" | "GT" }
+ )?,
+ attribute pre { "1" | "0" }?,
+ empty
+ }*
+
+element-file =
+ element ns1:file { file }
+
+file =
+ attribute type { "dir" | "ghost" }?,
+ text
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns:ns1="http://linux.duke.edu/metadata/common" ns="http://linux.duke.edu/metadata/rpm" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <define name="element-format">
+ <element name="ns1:format">
+ <ref name="format"/>
+ </element>
+ </define>
+ <define name="format">
+ <ref name="element-license"/>
+ <ref name="element-vendor"/>
+ <ref name="element-group"/>
+ <ref name="element-buildhost"/>
+ <ref name="element-sourcerpm"/>
+ <ref name="element-header-range"/>
+ <optional>
+ <ref name="element-provides"/>
+ </optional>
+ <optional>
+ <ref name="element-conflicts"/>
+ </optional>
+ <optional>
+ <ref name="element-obsoletes"/>
+ </optional>
+ <optional>
+ <ref name="element-requires"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="element-file"/>
+ </zeroOrMore>
+ </define>
+ <define name="element-license">
+ <element name="license">
+ <text/>
+ </element>
+ </define>
+ <define name="element-vendor">
+ <element name="vendor">
+ <text/>
+ </element>
+ </define>
+ <define name="element-group">
+ <element name="group">
+ <text/>
+ </element>
+ </define>
+ <define name="element-buildhost">
+ <element name="buildhost">
+ <text/>
+ </element>
+ </define>
+ <define name="element-sourcerpm">
+ <element name="sourcerpm">
+ <text/>
+ </element>
+ </define>
+ <define name="element-header-range">
+ <element name="header-range">
+ <ref name="header-range"/>
+ </element>
+ </define>
+ <define name="header-range">
+ <attribute name="start">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <attribute name="end">
+ <data type="nonNegativeInteger"/>
+ </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>
+ <attribute name="ver"/>
+ <optional>
+ <attribute name="rel"/>
+ </optional>
+ </define>
+ <define name="attribute-name">
+ <attribute name="name"/>
+ </define>
+ <define name="provides">
+ <oneOrMore>
+ <element name="entry">
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="element-conflicts">
+ <element name="conflicts">
+ <ref name="conflicts"/>
+ </element>
+ </define>
+ <define name="conflicts">
+ <oneOrMore>
+ <element name="entry">
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ <value>GT</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="element-obsoletes">
+ <element name="obsoletes">
+ <ref name="obsoletes"/>
+ </element>
+ </define>
+ <define name="obsoletes">
+ <oneOrMore>
+ <element name="entry">
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="element-requires">
+ <element name="requires">
+ <ref name="requires"/>
+ </element>
+ </define>
+ <define name="requires">
+ <zeroOrMore>
+ <element name="entry">
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ <value>GT</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pre">
+ <choice>
+ <value>1</value>
+ <value>0</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </zeroOrMore>
+ </define>
+ <define name="element-file">
+ <element name="ns1:file">
+ <ref name="file"/>
+ </element>
+ </define>
+ <define name="file">
+ <optional>
+ <attribute name="type">
+ <choice>
+ <value>dir</value>
+ <value>ghost</value>
+ </choice>
+ </attribute>
+ </optional>
+ <text/>
+ </define>
+</grammar>
--- /dev/null
+default namespace = "http://novell.com/package/metadata/suse/common"
+namespace ns1 = "http://linux.duke.edu/metadata/common"
+
+
+include "primary.rnc" {
+ element-format =
+ element ns1:format { suse-format }
+}
+
+suse-format =
+ format&
+ suse-additional-format?
+
+suse-additional-format =
+ element-authors,
+ element-keywords?,
+ element-media?,
+ element-dirsizes?,
+ element-freshen?,
+ element-install_only?
+
+element-authors =
+ element authors { authors }
+
+authors =
+ element author { text }+,
+ empty
+
+element-keywords =
+ element keywords { keywords }
+
+keywords =
+ element keyword { text }+,
+ empty
+
+element-media =
+ element media { media }
+
+media =
+ attribute mediaid { text },
+ empty
+
+element-dirsizes =
+ element dirsizes { dirsizes }
+
+dirsizes =
+ element-dirsize+
+
+element-dirsize =
+ element dirsize { dirsize }
+
+dirsize =
+ attribute path { text },
+ attribute size-kbyte { text },
+ attribute filecount { text },
+ empty
+
+element-freshen =
+ element freshen { freshen }
+
+freshen =
+ element entry {
+ attribute-name,
+ (
+ shared-entry-attributes,
+ attribute flags { "EQ" | "LE" | "GE" | "LT" | "GT" }
+ )?,
+ empty
+ }+
+
+element-install_only =
+ element install_only { empty }
--- /dev/null
+<?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">
+ <define name="element-format">
+ <element name="ns1:format">
+ <ref name="suse-format"/>
+ </element>
+ </define>
+ </include>
+ <define name="suse-format">
+ <interleave>
+ <ref name="format"/>
+ <optional>
+ <ref name="suse-additional-format"/>
+ </optional>
+ </interleave>
+ </define>
+ <define name="suse-additional-format">
+ <ref name="element-authors"/>
+ <optional>
+ <ref name="element-keywords"/>
+ </optional>
+ <optional>
+ <ref name="element-media"/>
+ </optional>
+ <optional>
+ <ref name="element-dirsizes"/>
+ </optional>
+ <optional>
+ <ref name="element-freshen"/>
+ </optional>
+ <optional>
+ <ref name="element-install_only"/>
+ </optional>
+ </define>
+ <define name="element-authors">
+ <element name="authors">
+ <ref name="authors"/>
+ </element>
+ </define>
+ <define name="authors">
+ <oneOrMore>
+ <element name="author">
+ <text/>
+ </element>
+ </oneOrMore>
+ <empty/>
+ </define>
+ <define name="element-keywords">
+ <element name="keywords">
+ <ref name="keywords"/>
+ </element>
+ </define>
+ <define name="keywords">
+ <oneOrMore>
+ <element name="keyword">
+ <text/>
+ </element>
+ </oneOrMore>
+ <empty/>
+ </define>
+ <define name="element-media">
+ <element name="media">
+ <ref name="media"/>
+ </element>
+ </define>
+ <define name="media">
+ <attribute name="mediaid"/>
+ <empty/>
+ </define>
+ <define name="element-dirsizes">
+ <element name="dirsizes">
+ <ref name="dirsizes"/>
+ </element>
+ </define>
+ <define name="dirsizes">
+ <oneOrMore>
+ <ref name="element-dirsize"/>
+ </oneOrMore>
+ </define>
+ <define name="element-dirsize">
+ <element name="dirsize">
+ <ref name="dirsize"/>
+ </element>
+ </define>
+ <define name="dirsize">
+ <attribute name="path"/>
+ <attribute name="size-kbyte"/>
+ <attribute name="filecount"/>
+ <empty/>
+ </define>
+ <define name="element-freshen">
+ <element name="freshen">
+ <ref name="freshen"/>
+ </element>
+ </define>
+ <define name="freshen">
+ <oneOrMore>
+ <element name="entry">
+ <ref name="attribute-name"/>
+ <optional>
+ <ref name="shared-entry-attributes"/>
+ <attribute name="flags">
+ <choice>
+ <value>EQ</value>
+ <value>LE</value>
+ <value>GE</value>
+ <value>LT</value>
+ <value>GT</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="element-install_only">
+ <element name="install_only">
+ <empty/>
+ </element>
+ </define>
+</grammar>