summaryrefslogtreecommitdiff
blob: 7ead6c7ec0c9197ab0e47c96eddb149580ebf009 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!ELEMENT packages ( pkgmetadata* )>

<!-- Metadata for a category -->
<!ELEMENT catmetadata ( (longdescription)* )>
<!ATTLIST catmetadata pkgname CDATA "">

<!-- Metadata for a package -->
<!ELEMENT pkgmetadata ( (maintainer|natural-name|longdescription|slots|use|upstream)* )>
<!ATTLIST pkgmetadata pkgname CDATA "">

  <!-- One tag for each maintainer of a package, multiple allowed-->
  <!ELEMENT maintainer ( email, (description| name)* )>
  <!-- type attribute determines whether the maintainer is a person or a project -->
  <!ATTLIST maintainer type (person|project) #REQUIRED>

  <!-- Natural name for package, example: LibreOffice (for app-office/libreoffice) -->
  <!ELEMENT natural-name (#PCDATA) >

  <!-- A long description of the package in freetext-->
  <!ELEMENT longdescription (#PCDATA|pkg|cat)* >

  <!-- A description of the packages SLOTs -->
  <!ELEMENT slots ((slot)*,subslots?) >
    <!-- A particular SLOT -->
    <!ELEMENT slot (#PCDATA)* >
      <!-- name attribute holds the name of the SLOT, for sub-SLOTS use the subslots element -->
      <!ATTLIST slot name CDATA #REQUIRED >
    <!-- The meaning of sub-SLOTs for the whole package -->
    <!ELEMENT subslots (#PCDATA)* >

  <!-- 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 -->
  <!ELEMENT changelog (#PCDATA|change)* >
    <!-- The changelog contains various "changes"-->
    <!ELEMENT change (date,(developer|version|description|file|contributor|bug)*) >
      <!ELEMENT date (#PCDATA) >
        <!-- The date of the change, in "YYYY-MM-DD" format -->
      <!ELEMENT developer (name?,email) >
        <!-- The developer that made the change. The email is required, name
	   is optional-->
      <!ELEMENT version (#PCDATA) >
        <!--version of the packages involved (one tag per version)-->
      <!ELEMENT file (#PCDATA) ><!-- one tag per file touched -->
      <!ELEMENT contributor (name?,email?) >
        <!-- 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 -->
      <!ELEMENT bug (#PCDATA) >
        <!-- 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 -->
  <!ELEMENT use (flag)* >
    <!ELEMENT flag (#PCDATA|pkg|cat)* >
      <!-- name attribute holds the name of the USE flag -->
      <!ATTLIST flag name CDATA #REQUIRED >

  <!-- upstream metadata information (maintainers, upstream docs,..) -->
  <!ELEMENT upstream (maintainer|changelog|doc|bugs-to|remote-id)* >
    <!-- 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 status (active|inactive|unknown) "unknown" >
    <!-- URL where the location of the upstream documentation can be found -->
    <!ELEMENT doc (#PCDATA)>
      <!ATTLIST doc lang CDATA "C" >
    <!-- location where to report bugs
      (may also be an email address prefixed with mailto:) -->
    <!ELEMENT bugs-to (#PCDATA)>
    <!-- specify a type of package identification tracker -->
    <!ELEMENT remote-id (#PCDATA)>
      <!ATTLIST remote-id 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) #REQUIRED>

  <!-- category/package information for cross-linking in descriptions
    and useflag descriptions -->
  <!ELEMENT pkg (#PCDATA) >
  <!ELEMENT cat (#PCDATA) >
          
<!-- 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 lang CDATA "C" >
  <!ATTLIST longdescription lang CDATA "C" >
  <!ATTLIST slots lang CDATA "C" >
  <!ATTLIST use lang CDATA "C" >

<!-- 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 restrict CDATA #IMPLIED >
  <!ATTLIST maintainer restrict CDATA #IMPLIED >
  <!ATTLIST longdescription restrict CDATA #IMPLIED >
  <!ATTLIST flag restrict CDATA #IMPLIED >



<!-- standard parts -->
<!ELEMENT email (#PCDATA) ><!-- an email address -->
<!ELEMENT name (#PCDATA) ><!-- the name of a person (maintainer, contributor)-->
<!ELEMENT description (#PCDATA) ><!-- A description of a maintainer or change-->