# Metadata for a category namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" catmetadata = element catmetadata { attlist.catmetadata, longdescription* } attlist.catmetadata &= [ a:defaultValue = "" ] attribute pkgname { text }? # Metadata for a package pkgmetadata = element pkgmetadata { attlist.pkgmetadata, (maintainer | natural-name | longdescription | slots | use | upstream)* } attlist.pkgmetadata &= [ a:defaultValue = "" ] attribute pkgname { text }? # One tag for each maintainer of a package, multiple allowed maintainer = element maintainer { attlist.maintainer, email, (description | name)* } # type attribute determines whether the maintainer is a person or a project. # Unknown is added to handle s in s. Using it (or no # explicit type) for Gentoo maintainers is prohibited. attlist.maintainer &= [ a:defaultValue = "unknown" ] attribute type { "person" | "project" | "unknown" }? # Natural name for package, example: LibreOffice (for app-office/libreoffice) natural-name = element natural-name { attlist.natural-name, text } attlist.natural-name &= empty # A long description of the package in freetext longdescription = element longdescription { attlist.longdescription, (text | pkg | cat)* } # A description of the packages SLOTs slots = element slots { attlist.slots, slot*, subslots? } # A particular SLOT slot = element slot { attlist.slot, text* } # name attribute holds the name of the SLOT, for sub-SLOTS use the subslots element attlist.slot &= attribute name { text } # The meaning of sub-SLOTs for the whole package subslots = element subslots { attlist.subslots, text* } attlist.subslots &= empty # 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 upstream changelog can be found changelog = element changelog { attlist.changelog, text } attlist.changelog &= empty # 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 { "bitbucket" | "cpan" | "cpan-module" | "cpe" | "cran" | "ctan" | "freecode" | "freshmeat" | "github" | "gitlab" | "gitorious" | "google-code" | "launchpad" | "pear" | "pecl" | "pypi" | "rubyforge" | "rubygems" | "sourceforge" | "sourceforge-jp" | "vim" } # 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.slots &= [ 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.maintainer &= attribute restrict { text }? attlist.longdescription &= attribute restrict { text }? attlist.flag &= attribute restrict { text }? # standard parts # an email address email = element email { attlist.email, text } attlist.email &= empty # the name of a person (maintainer, contributor) name = element name { attlist.name, text } attlist.name &= empty # A description of a maintainer or change description = element description { attlist.description, text } start = pkgmetadata | catmetadata