cops/test/opds-relax-ng/opensearchdescription.rng
2014-01-02 16:56:01 +01:00

417 lines
14 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
Relax NG schema for OpenSearch 1.1 description documents.
See http://www.opensearch.org/Specifications/OpenSearch/1.1
-->
<grammar ns="http://a9.com/-/spec/opensearch/1.1/" xmlns:params="http://a9.com/-/spec/opensearch/extensions/parameters/1.0/" xmlns:moz="http://www.mozilla.org/2006/browser/search/" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!-- The root node of the OpenSearch description document. -->
<start>
<element name="OpenSearchDescription">
<interleave>
<!--
Contains a brief human-readable title that identifies this search
engine. Not supposed to be longer than 16 characters but Mycroft
plugins don't obey this.
-->
<element name="ShortName">
<data type="token"/>
</element>
<!-- { maxLength="16" }}, -->
<!-- Contains a human-readable text description of the search engine. -->
<element name="Description">
<data type="string">
<param name="maxLength">1024</param>
</data>
</element>
<oneOrMore>
<!--
Describes an interface by which a client can make requests for an
external resource, such as search results, search suggestions, or
additional description documents.
-->
<element name="Url">
<!--
The URL template to be processed according to the OpenSearch
URL template syntax.
-->
<attribute name="template">
<data type="token"/>
</attribute>
<!-- The MIME type of the resource being described. -->
<attribute name="type">
<data type="token"/>
</attribute>
<optional>
<!--
The role of the resource being described in relation to the
description document.
-->
<attribute name="rel">
<data type="token"/>
</attribute>
</optional>
<optional>
<!-- The index number of the first search result. -->
<attribute name="indexOffset">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<!-- The page number of the first set of search results. -->
<attribute name="pageOffset">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<!--
Contains a case-insensitive string that identifies the HTTP
request method that the search client should use to perform the
search request.
-->
<attribute name="params:method">
<choice>
<value>get</value>
<value>post</value>
<value>GET</value>
<value>POST</value>
</choice>
</attribute>
</optional>
<optional>
<!--
Technically, this attribute is defined by the OpenSearch
Parameter extension and thus needs a different namespace; see
above. But the extensions at Mycroft don't obey this so it is
defined here under the default namespace.
-->
<attribute name="method">
<choice>
<value>get</value>
<value>post</value>
<value>GET</value>
<value>POST</value>
</choice>
</attribute>
</optional>
<optional>
<!--
Contains a string that identifies the content encoding the
search client should use to perform the search request.
-->
<attribute name="params:enctype">
<data type="token"/>
</attribute>
</optional>
<zeroOrMore>
<!-- Describes a name/value pair to be included in the search request. -->
<element name="params:Parameter">
<ref name="parameter-attributes"/>
</element>
</zeroOrMore>
<zeroOrMore>
<!-- Non-standard version of the Parameter element above. -->
<element name="Param">
<ref name="parameter-attributes"/>
</element>
</zeroOrMore>
</element>
</oneOrMore>
<optional>
<!--
Contains an email address at which the maintainer of the
description document can be reached.
-->
<element name="Contact">
<data type="token"/>
</element>
</optional>
<optional>
<!--
Contains a set of words that are used as keywords to identify and
categorize this search content. Tags must be a single word and
are delimited by the space character (' ').
-->
<element name="Tags">
<data type="token">
<param name="maxLength">256</param>
</data>
</element>
</optional>
<optional>
<!--
Contains an extended human-readable title that identifies this
search engine.
-->
<element name="LongName">
<data type="token">
<param name="maxLength">48</param>
</data>
</element>
</optional>
<zeroOrMore>
<!--
Contains a URL that identifies the location of an image that can
be used in association with this search content.
-->
<element name="Image">
<optional>
<!-- Contains the height, in pixels, of this image. -->
<attribute name="height">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<!-- Contains the width, in pixels, of this image. -->
<attribute name="width">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<!-- Contains the the MIME type of this image. -->
<attribute name="type">
<data type="token"/>
</attribute>
</optional>
<data type="anyURI"/>
</element>
</zeroOrMore>
<zeroOrMore>
<!-- Defines a search query that can be performed by search clients. -->
<element name="Query">
<!--
Contains a string identifying how the search client should
interpret the search request defined by this Query element.
-->
<attribute name="role">
<data type="QName"/>
</attribute>
<optional>
<!--
Contains a human-readable plain text string describing the
search request.
-->
<attribute name="title">
<data type="token">
<param name="maxLength">256</param>
</data>
</attribute>
</optional>
<optional>
<!--
Contains the expected number of results to be found if the
search request were made.
-->
<attribute name="totalResults">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<!--
The following elements correspond to the parameters that may
appear in an OpenSearch URL template.
-->
<attribute name="searchTerms">
<data type="token"/>
</attribute>
</optional>
<optional>
<attribute name="count">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<attribute name="startIndex">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="startPage">
<data type="positiveInteger"/>
</attribute>
</optional>
<optional>
<attribute name="language">
<data type="token"/>
</attribute>
</optional>
<optional>
<attribute name="inputEncoding">
<data type="token"/>
</attribute>
</optional>
<optional>
<attribute name="outputEncoding">
<data type="token"/>
</attribute>
</optional>
</element>
</zeroOrMore>
<optional>
<!--
Contains the human-readable name or identifier of the creator or
maintainer of the description document.
-->
<element name="Developer">
<data type="token">
<param name="maxLength">64</param>
</data>
</element>
</optional>
<optional>
<!--
Contains a list of all sources or entities that should be
credited for the content contained in the search feed.
-->
<element name="Attribution">
<data type="token">
<param name="maxLength">256</param>
</data>
</element>
</optional>
<optional>
<!--
Contains a value that indicates the degree to which the search
results provided by this search engine can be queried, displayed,
and redistributed.
-->
<element name="SyndicationRight">
<choice>
<value>open</value>
<value>limited</value>
<value>private</value>
<value>closed</value>
</choice>
</element>
</optional>
<optional>
<!--
Contains a boolean value that should be set to true if the search
results may contain material intended only for adults.
-->
<element name="AdultContent">
<data type="boolean"/>
</element>
</optional>
<zeroOrMore>
<!--
Contains a string that indicates that the search engine supports
search results in the specified language.
-->
<element name="Language">
<data type="token"/>
</element>
</zeroOrMore>
<zeroOrMore>
<!--
Contains a string that indicates that the search engine supports
search requests encoded with the specified character encoding.
-->
<element name="InputEncoding">
<data type="token"/>
</element>
</zeroOrMore>
<zeroOrMore>
<!--
Contains a string that indicates that the search engine supports
search responses encoded with the specified character encoding.
-->
<element name="OutputEncoding">
<data type="token"/>
</element>
</zeroOrMore>
<optional>
<!-- Mozilla extensions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--
The URL to go to to open up the search page at the site for which
the plugin is designed to search. This provides a way for Firefox
to let the user visit the web site directly. It should be a URI
but the plugins at Mycroft have all kinds of garbage here.
-->
<element name="moz:SearchForm">
<data type="token"/>
</element>
</optional>
<optional>
<!--
Mozilla uses the following mechanisms for automtaically updating
search plugins.
-->
<element name="moz:UpdateUrl">
<data type="anyURI"/>
</element>
</optional>
<optional>
<element name="moz:IconUpdateUrl">
<data type="anyURI"/>
</element>
</optional>
<optional>
<element name="moz:UpdateInterval">
<data type="anyURI"/>
</element>
</optional>
<optional>
<!-- Some naughty plugin developers don't namespace the Mozilla elements. -->
<element name="SearchForm">
<data type="token"/>
</element>
</optional>
<optional>
<element name="UpdateUrl">
<data type="anyURI"/>
</element>
</optional>
<optional>
<element name="IconUpdateUrl">
<data type="anyURI"/>
</element>
</optional>
<optional>
<element name="UpdateInterval">
<data type="anyURI"/>
</element>
</optional>
</interleave>
<!-- end Mozilla extensions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
</element>
</start>
<!-- end OpenSearchDescription element -->
<define name="parameter-attributes">
<!-- Contains the name of the parameter. -->
<attribute name="name">
<data type="token"/>
</attribute>
<optional>
<!--
Contains a string that will be processed according to the
rules of the OpenSearch URL template syntax.
-->
<attribute name="value">
<data type="token"/>
</attribute>
</optional>
<optional>
<!--
Contains a string that identifies the minimum number of
times this parameter must be included in the search
request.
-->
<attribute name="minimum">
<data type="nonNegativeInteger"/>
</attribute>
</optional>
<optional>
<!--
Contains a string that identifies the maximum number of
times this parameter must be included in the search
request. The literal string "*" will be interpreted to mean
that the parameter may repeat an arbitrary number of times.
-->
<attribute name="maximum">
<data type="token"/>
</attribute>
</optional>
</define>
</grammar>
<!-- end grammar -->