From http://www.jwz.org/xscreensaver/xscreensaver-5.16.tar.gz
[xscreensaver] / hacks / config / xss.dtd
1 <!-- xscreensaver, Copyright (c) 2001-2012 Jamie Zawinski <jwz@jwz.org> -->
2 <!--
3  Permission to use, copy, modify, distribute, and sell this software and its
4  documentation for any purpose is hereby granted without fee, provided that
5  the above copyright notice appear in all copies and that both that
6  copyright notice and this permission notice appear in supporting
7  documentation.  No representations are made about the suitability of this
8  software for any purpose.  It is provided "as is" without express or
9  implied warranty.
10 -->
11 <!-- 
12 This DTD validates the format of the XScreenSaver configuration files.
13
14 The DTD will not be devloped further, as the .XSD style validation
15 can already check more of the details of the config files.
16
17 DTD written by Andrew Thompson <andrewthommo@gmail.com>
18 -->
19 <!-- XScreenSaver settings config file. - DTD version 1.0  -->
20 <!ELEMENT screensaver 
21     ((command|fullcommand)*,
22       (boolean|number|select|string|file|hgroup|vgroup|xscreensaver-text|xscreensaver-image)*,
23       _description)>
24 <!ATTLIST screensaver
25   name        CDATA   #REQUIRED
26   _label      CDATA   #REQUIRED
27   gl          CDATA   #IMPLIED
28   >
29
30 <!-- Every XScreenSaver hack has exactly one of either command or fullcommand -->
31 <!ELEMENT command EMPTY>
32 <!ATTLIST command
33   arg         CDATA   #IMPLIED
34   >
35
36 <!-- Checkbox -->
37 <!-- One of either arg-set or arg-unset is required -->
38 <!ELEMENT boolean EMPTY>
39 <!ATTLIST boolean
40   id          ID      #IMPLIED
41   _label      CDATA   #REQUIRED
42   arg-set     CDATA   #IMPLIED
43   arg-unset   CDATA   #IMPLIED
44   >
45
46 <!-- Slider and Spin Button -->
47 <!-- _low/high-label not required for type spinbutton -->
48 <!-- arg must end with ' %' -->
49 <!ELEMENT number EMPTY>
50 <!ATTLIST number
51   id          ID                  #IMPLIED
52   type        (slider|spinbutton) #REQUIRED
53   _label      CDATA               #REQUIRED
54   _low-label  CDATA               #IMPLIED 
55   _high-label CDATA               #IMPLIED 
56   arg         CDATA               #REQUIRED
57   low         CDATA              #REQUIRED
58   high        CDATA              #REQUIRED
59   default     CDATA              #REQUIRED
60   convert     (invert)            #IMPLIED
61   >
62
63 <!-- Drop-down list -->
64 <!ELEMENT select (option+)>
65 <!ATTLIST select
66   id          ID      #IMPLIED
67   >
68
69 <!-- List item -->
70 <!ELEMENT option EMPTY>
71 <!ATTLIST option
72   id          ID      #IMPLIED
73   _label      CDATA   #REQUIRED
74   arg-set     CDATA   #IMPLIED
75   >
76
77 <!-- String or Textual input -->
78 <!-- arg must end with ' %' -->
79 <!ELEMENT string EMPTY>
80 <!ATTLIST string
81   id          ID      #IMPLIED
82   _label      CDATA   #REQUIRED
83   arg         CDATA   #REQUIRED
84   >
85
86 <!-- File browser. -->
87 <!-- arg must end with ' %' -->
88 <!ELEMENT file EMPTY>
89 <!ATTLIST file
90   id          ID      #IMPLIED
91   _label      CDATA   #REQUIRED
92   arg         CDATA   #REQUIRED
93   >
94
95 <!ELEMENT xscreensaver-text EMPTY>
96 <!ELEMENT xscreensaver-image EMPTY>
97
98 <!-- Free Text.  The description of the Screen Saver. -->
99 <!ELEMENT _description (#PCDATA)>
100
101 <!-- Horizontal grouping element, a row of widgets. 
102 Unimplemented in SaverBeans as of API 0.2. -->
103 <!ELEMENT hgroup ((boolean|number|select|string|file|vgroup)*)> <!-- Undocumented -->
104
105 <!-- Vertical grouping element, a column of widgets.
106 Since the widgets are normally arranged in a column,
107 this is only of use within an hgroup. 
108 Unimplemented in SaverBeans as of API 0.2. -->
109 <!ELEMENT vgroup ((boolean|number|select|string|file|hgroup)*)> <!-- Undocumented -->