namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" packages = element packages { attlist.packages, pkgmetadata* } attlist.packages &= empty # Metadata for a category catmetadata = element catmetadata { attlist.catmetadata, longdescription* } attlist.catmetadata &= [ a:defaultValue = "" ] attribute pkgname { text }? # Metadata for a package pkgmetadata = element pkgmetadata { attlist.pkgmetadata, (herd | maintainer | longdescription | use | upstream)* } attlist.pkgmetadata &= [ a:defaultValue = "" ] attribute pkgname { text }? # One tag for each herd this package is assigned to. herd = element herd { attlist.herd, text } # One tag for each maintainer of a package, multiple allowed maintainer = element maintainer { attlist.maintainer, email, (description | name)* } # A long description of the package in freetext longdescription = element longdescription { attlist.longdescription, (text | pkg | cat)* } # The changelog of the package # Please note that #PCDATA is mentioned only for the upstream changelog # element, where the content is a URL. This is due to limitations of the DTD changelog = element changelog { attlist.changelog, (text | change)* } attlist.changelog &= empty # The changelog contains various "changes" change = element change { attlist.change, date, (developer | version | description | file | contributor | bug)* } attlist.change &= empty date = element date { attlist.date, text } attlist.date &= empty # The date of the change, in "YYYY-MM-DD" format developer = element developer { attlist.developer, name?, email } attlist.developer &= empty # The developer that made the change. The email is required, name # is optional version = element version { attlist.version, text } attlist.version &= empty # version of the packages involved (one tag per version) file = element file { attlist.file, text } attlist.file &= empty # one tag per file touched contributor = element contributor { attlist.contributor, name?, email? } attlist.contributor &= empty # A reference to a user that helped in causing this change. # There should at least be a name or email address included. # Email is preferred bug = element bug { attlist.bug, text } attlist.bug &= empty # bug-id of a bug fixed by this change, multiple allowed. The # format of this is a number or alias for a bug. NOT including a # # character # description of what this USE flag does for this package use = element use { attlist.use, flag* } flag = element flag { attlist.flag, (text | pkg | cat)* } # name attribute holds the name of the USE flag attlist.flag &= attribute name { text } # upstream metadata information (maintainers, upstream docs,..) upstream = element upstream { attlist.upstream, (maintainer | changelog | doc | bugs-to | remote-id)* } attlist.upstream &= empty # Due to the limitation of DTD this will also allow a status # attribute for the package maintainer element. Please note that # the usage of the status attribute is nevertheless _only_ allowed # in the upstream maintainer element. attlist.maintainer &= [ a:defaultValue = "unknown" ] attribute status { "active" | "inactive" | "unknown" }? # URL where the location of the upstream documentation can be found doc = element doc { attlist.doc, text } attlist.doc &= [ a:defaultValue = "C" ] attribute lang { text }? # location where to report bugs # (may also be an email address prefixed with mailto:) bugs-to = element bugs-to { attlist.bugs-to, text } attlist.bugs-to &= empty # specify a type of package identification tracker remote-id = element remote-id { attlist.remote-id, text } attlist.remote-id &= attribute type { "freshmeat" | "sourceforge" | "sourceforge-jp" | "cpan" | "vim" | "google-code" | "ctan" | "pypi" | "rubyforge" | "cran" } # category/package information for cross-linking in descriptions # and useflag descriptions pkg = element pkg { attlist.pkg, text } attlist.pkg &= empty cat = element cat { attlist.cat, text } attlist.cat &= empty # Common attributes # the lang attribute, specifies the language of this tag. This is # only useful for descriptions of various kinds. If a tag with this # attribute is included there must be a description in the default # language "C" or "en", which is equivalent attlist.description &= [ a:defaultValue = "C" ] attribute lang { text }? attlist.longdescription &= [ a:defaultValue = "C" ] attribute lang { text }? attlist.use &= [ a:defaultValue = "C" ] attribute lang { text }? # The restrict attribute, this attribute specifies restrictions on # the applicability of tags on versions. The format of this attribute is # equal to the format of DEPEND lines in ebuilds. There is one special # value though: restrict="*". A tag that specifies this only applies if # there are no other tags that apply. # # For required tags, there must be either an unrestricted version, or a # version that is default restricted. attlist.herd &= attribute restrict { text }? attlist.maintainer &= attribute restrict { text }? attlist.longdescription &= attribute restrict { text }? attlist.flag &= attribute restrict { text }? # standard parts email = element email { attlist.email, text } attlist.email &= empty # an email address name = element name { attlist.name, text } attlist.name &= empty # the name of a person (maintainer, contributor) description = element description { attlist.description, text } start = catmetadata | packages # A description of a maintainer or change