diff options
Diffstat (limited to 'hacks/config/xss.xsd')
| -rw-r--r-- | hacks/config/xss.xsd | 375 |
1 files changed, 0 insertions, 375 deletions
diff --git a/hacks/config/xss.xsd b/hacks/config/xss.xsd deleted file mode 100644 index fac1fe3..0000000 --- a/hacks/config/xss.xsd +++ /dev/null @@ -1,375 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- xscreensaver, Copyright (c) 2001-2005 Jamie Zawinski <jwz@jwz.org> --> -<!-- - Permission to use, copy, modify, distribute, and sell this software and its - documentation for any purpose is hereby granted without fee, provided that - the above copyright notice appear in all copies and that both that - copyright notice and this permission notice appear in supporting - documentation. No representations are made about the suitability of this - software for any purpose. It is provided "as is" without express or - implied warranty. ---> -<!-- XScreenSaver schema version 0.5 - -This schema validates the format of the XScreenSaver configuration files. - -The notices shown above, appear at the top of the source of 'demo-Gtk-conf.c'. -Since this schema (attempts to) describe the format of the existing -XScreenSaver configuration files, it seems appropriate to reproduce them here. -If it is not appropriate, please ignore/remove them rather than sue me. - -To check a savername.xml, reference this XSD from the file and validate it at - http://www.w3.org/2001/03/webdata/xsv - -** Background -Andrew Thompson defined a DTD based on his understanding of the -XScreenSaver configuration files after examining the files.. -xscreensaver-4.22 - |- hacks - | |- config - | README - | *.xml - |- driver - demo-Gtk-conf.c - -Paul Dennis generated an XSD file (xscreensaver.xsd) from the DTD. -This is a stricter version of that XSD, with more comments and -documentation by Andrew Thompson. - -Note that Andrew does not program in c, and has not had the -opportunity to see XScreenSaver in action (he runs Windows), -so some of the details of the schema may be incorrect. It aims -to be cautious, and thus might be more strict than is actually -required. - -** .XSD started as version 0.1 -- generated from the DTD. -- checked parameter types - - mostly as xs:string, except for.. - - ID's - checked as xs:ID. -- provided grouping parse logic, but specified elements - with maxOccurs 'unbounded' - -** Tightened parsing in 0.2 -- The only field still defined as xs:string is the _description. -- A substitutionArgumentType has been introduced to lock the form of - the arg to '-lettersandnumbers %' -- An argumentType has been introduced to ensure other - arg/arg-set/arg-unset attributes begin with '-' and - are followed by at least one letter or number. -- Float and integer numeric values (low/high/default) are checked as xs:decimal -- Remaining attributes were tightened from xs:string to xs:token. - -** Tightened parsing in 0.3 - * Note that no maximums at all are stated in the XScreenSaver README! -- maxOccurs lowered from 'unbounded' to - - screensaver: '200' components/groups - - screensaver: '40' commands/fullcommands - - select: '100' options - - hgroup: '6' components/groups per row - - vgroup: '40' components/groups per column -- maxLength of _description set to '2000' chars. - -** Changes in version 0.4 - Strict - After testing against the configuration files of the XScreenSaver - hacks, the following changes were made.. -- Added (+ _ / $) to allowable characters for substitutionArgumentType - & argumentType, but tightened baseType to xs:token -- maxOccurs changed to - - screensaver: '200' -> '30' components/groups - (xmountains.xml has 24) - - screensaver: '40' -> '10' commands/fullcommands - - select: '100' -> '200' options - (to account for polyhedra.xml, which has 152 options!) - - hgroup: '6' -> '4' components/groups per row - (glplanet.xml has 4) - - vgroup: '40' -> '10' components/groups per column - (bsod.xml has 9) -- maxLength of _description changed from '2000' to '3000' chars, - (covers the largest _description, 'jigglypuff.xml', at 852 chars, - 'magicrainbow.xml', at 2837 chars.) -- introduced idType to facilitate maintenance between the - strict and loose schemas. - -** Changes in version 0.4 - Loose -- made _label of number element optional (when using sliders, some - developers put what would normally appear in the _label, as a - prefix to _low-label instead) -- widens the idType base type from xs:ID to xs:token. Since the ID is - unimplemented and will most likely remain so, it makes little - sense to ensure they are unique & valid ID's. - -** Changes in 0.5 - Strict -- Minor typos. to 0.4 docs fixed. -- Since both the XScreenSaver code and Saverbeans SettingsDialog -seem tolerant to the _label of the number element missing, it is -marked as 'optional' now, even in the strict version. - -** Limits: This version -- specifies the 'arg-set'/'arg-unset' of 'boolean' as optional, whereas it - requires exactly one of either 'arg-set' or 'arg-unset'. -- cannot properly distinguish between the 'slider' and 'spinbutton' types - of the 'number' element. As a result of that, '_low-label'/'_high-label' - are specified as not required, whereas they are actually undefined for - 'spinbutton' and required for 'slider'. -- has no checks to ensure that 'default' values of ranges in the - number element fall between 'low' & 'high' values. -- Selects can have no more than one option missing an arg-set attribute. -- Arguments must be unique, but this schema does not check that. -- _label is effectively optional for the slider type of the number element, - since this info can be preprended to the _low-label, but no checks are - done to ensure that the spinbutton type has the _label. - -** Undocumented. -'undocumented' means that the element/feature was not mentioned in the -official documentation of the format available in the - -xscreensaver-4.22/hacks/config/README. ---> -<xs:schema - xmlns:xs="http://www.w3.org/2001/XMLSchema" - elementFormDefault="qualified"> - - <!-- The root element of any XScreenSaver configuration file. --> - <xs:element name="screensaver"> - <xs:complexType> - <xs:sequence> - <!-- Every XScreenSaver hack has exactly one of either - command or fullcommand, but my understanding is that - demo-Gtk-conf.c chains them together. - This specifies a maximum numner of commands. --> - <xs:choice minOccurs="0" maxOccurs="10"> - <xs:element ref="command"/> - <xs:element ref="fullcommand"/> - </xs:choice> - <!-- A maximum number of components/groups is specified. --> - <xs:choice minOccurs="0" maxOccurs="30"> - <xs:element ref="boolean"/> - <xs:element ref="number"/> - <xs:element ref="select"/> - <xs:element ref="string"/> - <xs:element ref="file"/> - <xs:element ref="hgroup"/> - <xs:element ref="vgroup"/> - </xs:choice> - <xs:element ref="_description"/> - </xs:sequence> - <xs:attribute name="name" type="xs:token" use="required"/> - <xs:attribute name="_label" type="xs:token" use="required"/> - </xs:complexType> - </xs:element> - - <!-- Added to the command line when invoked. --> - <xs:element name="command"> - <xs:complexType> - <xs:attribute name="arg" type="argumentType"/> - </xs:complexType> - </xs:element> - - <!-- Unimplemented in SaverBeans as of API 0.2. - Used only by cosmos.xml. Undocumented. --> - <xs:element name="fullcommand"> - <xs:complexType> - <xs:attribute name="arg" type="argumentType"/> - </xs:complexType> - </xs:element> - - <!-- Checkbox --> - <xs:element name="boolean"> - <xs:complexType> - <xs:attribute name="id" type="idType"/> - <xs:attribute name="_label" type="xs:token" use="required"/> - <!-- Exactly one of either arg-set or arg-unset is required --> - <xs:attribute name="arg-set" type="argumentType"/> - <xs:attribute name="arg-unset" type="argumentType"/> - </xs:complexType> - </xs:element> - - <!-- Slider and Spinbutton --> - <xs:element name="number"> - <xs:complexType> - <xs:attribute name="id" type="idType"/> - <xs:attribute name="type" use="required"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="slider"/> - <xs:enumeration value="spinbutton"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - <!-- Listed as 'required' in the documentation, though XScreenSaver is - tolerant to it being left out. A number of hacks deliberately exclude it - for formatting purposes, and put the _label as prefix to _low-label --> - <xs:attribute name="_label" type="xs:token" /> - <!-- _low/_high-label not defined for type spinbutton, - but required for slider --> - <xs:attribute name="_low-label" type="xs:token"/> - <xs:attribute name="_high-label" type="xs:token"/> - <xs:attribute name="arg" type="substitutionArgumentType" use="required"/> - <xs:attribute name="low" type="xs:decimal" use="required"/> - <xs:attribute name="high" type="xs:decimal" use="required"/> - <!-- Must logically fall between low and high, but not checked. --> - <xs:attribute name="default" type="xs:decimal" use="required"/> - <xs:attribute name="convert"> - <xs:simpleType> - <xs:restriction base="xs:NMTOKEN"> - <xs:enumeration value="invert"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:complexType> - </xs:element> - - <!-- Drop-down list --> - <xs:element name="select"> - <xs:complexType> - <xs:sequence> - <!-- A maximum number of options is specified, as a longer - drop down becomes kludgy and difficult to use. --> - <xs:element ref="option" maxOccurs="200"/> - </xs:sequence> - <xs:attribute name="id" type="idType"/> - </xs:complexType> - </xs:element> - - <!-- List item --> - <xs:element name="option"> - <xs:complexType> - <xs:attribute name="id" type="idType"/> - <xs:attribute name="_label" type="xs:token" use="required"/> - <xs:attribute name="arg-set" type="argumentType"/> - </xs:complexType> - </xs:element> - - <!-- String or textual input --> - <xs:element name="string"> - <xs:complexType> - <xs:attribute name="id" type="idType"/> - <xs:attribute name="_label" type="xs:token" use="required"/> - <xs:attribute name="arg" type="substitutionArgumentType" use="required"/> - </xs:complexType> - </xs:element> - - <!-- File browser. --> - <xs:element name="file"> - <xs:complexType> - <xs:attribute name="id" type="idType"/> - <xs:attribute name="_label" type="xs:token" use="required"/> - <xs:attribute name="arg" type="substitutionArgumentType" use="required"/> - </xs:complexType> - </xs:element> - - <!-- Free Text. The description of the Screen Saver. --> - <xs:element name="_description"> - <!-- The _description must contain text only, with no HTML formatting. - - Character entities are also valid, which suggests that.. - http://www.w3.org/TR/REC-html40/sgml/entities.html - ..are valid entities, though this, .. - http://www.w3.org/TR/1998/REC-html40-19980424/sgml/entities.html#h-24.4.1 - ..may represent a safer sub-set. - - The main entities you might require (none of which are allowed - in textual content in an XML file) are.. - < (= <) - > (= >) - & (= &) - - XScreenSaver itself will probably* turn any URL enclosed in - < / > into a clickable link. - - Conversion to an URL is unimplemented in SaverBeans as of API 0.2. - - It might be possible to implement this in SaverBeans with the help of - BrowserLauncher, though that would require about 20Kb (AFAIR) of extra - classes in the core API distributable. - - * This is based solely on the use of the delimiters in many of the - XScreenSaver hacks, but has not been investigated in any depth. - --> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:maxLength value="3000"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - - <!-- Horizontal grouping element, a row of components or groups. - Unimplemented in SaverBeans as of API 0.2, - components inside groups do not appear. --> - <xs:element name="hgroup"> - <xs:complexType> - <!-- A maximum number of components/groups per row is specified. --> - <xs:choice minOccurs="0" maxOccurs="4"> - <xs:element ref="boolean"/> - <xs:element ref="number"/> - <xs:element ref="select"/> - <xs:element ref="string"/> - <xs:element ref="file"/> - <xs:element ref="vgroup"/> - </xs:choice> - </xs:complexType> - </xs:element> - - <!-- Vertical grouping element, a column of components or groups. - Since the components are normally arranged in a column, - this is only of use within an hgroup. - Unimplemented in SaverBeans as of API 0.2, - components inside groups do not appear. --> - <xs:element name="vgroup"> - <xs:complexType> - <!-- A maximum number of components/groups per column is specified. --> - <xs:choice minOccurs="0" maxOccurs="10"> - <xs:element ref="boolean"/> - <xs:element ref="number"/> - <xs:element ref="select"/> - <xs:element ref="string"/> - <xs:element ref="file"/> - <xs:element ref="hgroup"/> - </xs:choice> - </xs:complexType> - </xs:element> - - <!-- Checks that the command arguments (non substitution arg, as - well as arg-set/arg-unset) are of a logical (and restricted) form. - This determines that the type must start with '-', and contain at - least one letter, number or the other characters shown in the RegEx. - It is stricter than the XScreenSaver documentation suggests. --> - <xs:simpleType name="argumentType"> - <xs:restriction base="xs:token"> - <xs:minLength value="2"/> - <xs:pattern value="-([a-zA-Z0-9 .,;:+_$#%?/\\\-])*"/> - </xs:restriction> - </xs:simpleType> - - <!-- Checks that the command arguments that use substitution are of - a logical (and quite restricted) form. This determines that the - type must start with '-', contain at least one letter, number - or the other characters shown in the RegEx. - It is stricter than the XScreenSaver documentation suggests. --> - <xs:simpleType name="substitutionArgumentType"> - <xs:restriction base="xs:token"> - <xs:minLength value="4"/> - <xs:pattern value="-([a-zA-Z0-9.,;:+_$#%?/\\\-])* %"/> - </xs:restriction> - </xs:simpleType> - - <!-- idType is used to validate the ID's - Many ID's do not parse as type xs:ID, so this type was created to - allow easy maintenance between the strict and loose versions of the schema. - The base type should be - - xs:ID in the strict schema, and - - xs:token in the loose schema. - Note that the base type of xs:ID overrides the minLength value of '0' - --> - <xs:simpleType name="idType"> - <!-- strict --> - <xs:restriction base="xs:ID"> - <!-- loose --> - <!-- - <xs:restriction base="xs:token"> - --> - <xs:minLength value="0"/> - </xs:restriction> - </xs:simpleType> - -</xs:schema> |
