Use types in XSD, close #99
This commit is contained in:
parent
80556cacd7
commit
c364aca178
769
itsb.xsd
769
itsb.xsd
|
@ -1,4 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
ITSB XML Schema
|
||||
Copyright (C) 2022 ~lucidiot
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<xs:schema
|
||||
targetNamespace="http://tilde.town/~lucidiot/itsb/itsb.xsd"
|
||||
version="1.0"
|
||||
|
@ -7,10 +24,10 @@
|
|||
xmlns:itsb="http://tilde.town/~lucidiot/itsb/itsb.xsd"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
>
|
||||
<xs:complexType name="itsbURL">
|
||||
<xs:complexType name="URI">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:anyURI">
|
||||
<xs:attribute name="verify-ssl" type="xs:boolean" use="optional" default="true">
|
||||
<xs:attribute name="verify-ssl" type="xs:boolean" use="optional" default="true">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Whether or not an automated script should verify or ignore the validity
|
||||
|
@ -22,371 +39,409 @@
|
|||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="itsb">
|
||||
|
||||
<xs:complexType name="CurlHeader">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
This schema describes both the structure for the directory page of ITSB
|
||||
A HTTP header sent along with the request.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="CurlCommand">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Perform an HTTP request using `curl`.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="url" type="URI">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
URL of the original HTML webpage that will be retrieved to be converted into a feed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="header" type="CurlHeader" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="requestBody" type="xs:string" minOccurs="0">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Optional request body sent along with the request. When this element is used, the request becomes a POST request.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="PupOutputFormat">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Output format of a `pup` command.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="json">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Output the selected tags as JSON (default).</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="text">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Output the selected tags' inner text.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="html">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Output the selected tags as HTML.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="PupCommand">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Apply a CSS 3 selector using `pup` on the HTML webpage.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="output" use="optional" type="PupOutputFormat" default="json">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Output format to use. Defaults to JSON.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Xml2JsonCommand">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Run XML to JSON conversion using xmltodict.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="XmlNamespace">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
An XML namespace abbreviation to be recognized by xmltodict.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:anyURI">
|
||||
<xs:attribute name="prefix" type="xs:string" use="optional" default="">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The namespace prefix to use in the XML output. When not defined, this will become the default prefix (xmlns).
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Json2XmlCommand">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Run JSON to XML conversion using xmltodict.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="namespace" type="XmlNamespace" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="short-empty" type="xs:boolean" use="optional" default="false">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
<![CDATA[Shorten empty elements to <tag/> instead of <tag></tag>.]]>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="JqArgument">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Arguments that will be passed to the jq script using jq's --arg parameter.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="JqCommand">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Transform a JSON document using `jq`.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="arg" type="JqArgument" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="path" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Path to the jq script relative to the project's jq/ directory.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="raw-output" type="xs:boolean" default="false">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Enable the -r flag, causing jq to output raw strings instead of JSON strings.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="ShellCommand">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A shell command. No escaping and no controls will be made on this command, especially on spaces and newlines; use this tag with care.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string" />
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:group name="Command">
|
||||
<xs:choice>
|
||||
<xs:element name="curl" type="CurlCommand" />
|
||||
<xs:element name="pup" type="PupCommand" />
|
||||
<xs:element name="xml2json" type="Xml2JsonCommand" />
|
||||
<xs:element name="json2xml" type="Json2XmlCommand">
|
||||
<xs:unique name="xmlNamespaces">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
XML namespace prefixes should be unique in each json2xml element.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:selector xpath="itsb:namespace" />
|
||||
<xs:field xpath="@prefix" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
<xs:element name="jq" type="JqCommand">
|
||||
<xs:unique name="jqArgs">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Argument names sent to jq should be unique.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:selector xpath="itsb:arg" />
|
||||
<xs:field xpath="@name" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
<xs:element name="shell" type="ShellCommand" />
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
<xs:simpleType name="FeedFormat">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Format of a syndication feed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="atom" />
|
||||
<xs:enumeration value="cdf" />
|
||||
<xs:enumeration value="echo" />
|
||||
<xs:enumeration value="json" />
|
||||
<xs:enumeration value="rdf" />
|
||||
<xs:enumeration value="rss" />
|
||||
<xs:enumeration value="rss3" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="FeedOutput">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Path where the generated feed will be stored, relative to the /feeds/ directory.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:restriction base="xs:string" />
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="Feed">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
<![CDATA[
|
||||
A single syndication feed for this source.
|
||||
Can be either generated by ITSB or provided externally.
|
||||
When provided externally, only the <link> tag can be used.
|
||||
]]>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:choice>
|
||||
<xs:sequence>
|
||||
<xs:group ref="Command" maxOccurs="unbounded" />
|
||||
<xs:element name="output" type="FeedOutput" />
|
||||
</xs:sequence>
|
||||
<xs:element name="link" type="URI">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
URL to an external syndication feed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
<xs:attribute name="lang" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Language of the reports in this feed. Not a language code; only for display purposes.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="type" type="xs:string" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Report types, similar to the type tag on sources, for this particular feed.
|
||||
Allows adding multiple feeds filtered by types.
|
||||
When this type is omitted, the source's type can be assumed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="format" type="FeedFormat" default="rss" />
|
||||
<xs:attribute name="id" type="xs:ID" use="required" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="License">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A particular license that the source applies on its reports.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="url" type="xs:anyURI" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
URL pointing to an HTML page for a description of the license.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Source">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A single source of investigation reports that can provide one or more syndication feeds.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="name" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Source name for display purposes.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="description" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Optional description of the source. Encoded HTML tags are allowed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="region" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Optional country or region in which the source acts.
|
||||
If the region is not a country, it should be suffixed with a comma, then a country: "Austin, Texas"
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="type" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Report types, generally the means of transportation, that the source produces.
|
||||
This should be a comma-separated list of types and is only meant for display purposes.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="frequency" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Arbitrary human estimation of the frequency of report publication for this source.
|
||||
Generally expressed in reports per year, sometimes with different values for different languages.
|
||||
Only for display purposes.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="license" type="License" minOccurs="0" />
|
||||
<xs:element name="feed" type="Feed" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="id" type="xs:ID" use="required" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:simpleType name="Content">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Raw, encoded HTML content that should be displayed as-is in the section.
|
||||
Can be ignored by machines.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:restriction base="xs:string" />
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:complexType name="Section">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A separate section displayed in an HTML directory.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="content" type="Content" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="source" type="Source" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:unique name="uniqueFeedAttributes">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The language, type and format combination of each feed must be unique within each source.
|
||||
Due to constraints defined by the XML Schema 1.0 specification, feeds without a type or using the default format cannot be checked by this constraint.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:selector xpath="itsb:feed" />
|
||||
<xs:field xpath="@lang" />
|
||||
<xs:field xpath="@type" />
|
||||
<xs:field xpath="@format" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Title of the section.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="id" type="xs:ID" use="required" />
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="Document">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
ITSB documents describe both the structure for the directory page of ITSB
|
||||
and the list of syndication feeds either inventoried or generated by ITSB.
|
||||
This is meant to be used as a central place to hold feed configuration and
|
||||
reduce duplication.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="section" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A separate section displayed in an HTML directory.
|
||||
Should be ignored by machines.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="content" minOccurs="0" maxOccurs="unbounded" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Raw, encoded HTML content that should be displayed as-is in the section.
|
||||
Can be ignored by machines.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="source" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A single source of investigation reports that can provide one or more syndication feeds.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="name" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Source name for display purposes.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="description" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Optional description of the source. Encoded HTML tags are allowed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="region" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Optional country or region in which the source acts.
|
||||
If the region is not a country, it should be suffixed with a comma, then a country: "Austin, Texas"
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="type" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Report types, generally the means of transportation, that the source produces.
|
||||
This should be a comma-separated list of types and is only meant for display purposes.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="frequency" minOccurs="0" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Arbitrary human estimation of the frequency of report publication for this source.
|
||||
Generally expressed in reports per year, sometimes with different values for different languages.
|
||||
Only for display purposes.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="license" minOccurs="0">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A particular license that the source applies on its reports.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="url" type="xs:anyURI" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
URL pointing to an HTML page for a description of the license.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="feed" minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
<![CDATA[
|
||||
A single syndication feed for this source.
|
||||
Can be either generated by ITSB or provided externally.
|
||||
When provided externally, only the <link> tag can be used.
|
||||
]]>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:choice>
|
||||
<xs:sequence>
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="curl">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="url" type="itsbURL">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
URL of the original HTML webpage that will be retrieved to be converted into a feed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="header" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
HTTP headers sent along with the request.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="requestBody" type="xs:string" minOccurs="0">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Optional request body sent along with the request. When this element is used, the request becomes a POST request.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="pup">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
CSS 3 selector that will be applied using pup on the HTML webpage. The JSON output mode will be applied automatically.
|
||||
If omitted, the JSON output is not applied and the downloaded content is sent directly to the script without any preprocessing.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="output" use="optional" default="json">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="json">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Output the selected tags as JSON (default).</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="text">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Output the selected tags' inner text.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="html">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Output the selected tags as HTML.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="xml2json">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Run XML to JSON conversion using xmltodict.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element name="json2xml">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Run JSON to XML conversion using xmltodict.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="namespace" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Add an XML namespace abbreviation to be recognized by xmltodict.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:anyURI">
|
||||
<xs:attribute name="prefix" type="xs:string" use="optional" default="">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The namespace prefix to use in the XML output. When not defined, this will become the default prefix (xmlns).
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="short-empty" type="xs:boolean" use="optional" default="false">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
<![CDATA[Shorten empty elements to <tag/> instead of <tag></tag>.]]>
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:unique name="xmlNamespaces">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
XML namespace prefixes should be unique in each json2xml element.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:selector xpath="itsb:namespace" />
|
||||
<xs:field xpath="@prefix" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
<xs:element name="jq">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="arg" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Arguments that will be passed to the jq script using jq's --arg parameter.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="path" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Path to the jq script relative to the project's jq/ directory.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="raw-output" type="xs:boolean" default="false">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Enable the -r flag, causing jq to output raw strings instead of JSON strings.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:unique name="jqArgs">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Argument names sent to jq should be unique.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:selector xpath="itsb:arg" />
|
||||
<xs:field xpath="@name" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
<xs:element name="shell">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
A shell command. No escaping and no controls will be made on this command, especially on spaces and newlines; use this tag with care.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
<xs:element name="output" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Path to the resulting feed, relative to the /feeds/ directory.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
||||
<xs:element name="link" type="itsbURL">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
URL to an external syndication feed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
<!-- TODO: Make lang/type/format combinations unique per source -->
|
||||
<xs:attribute name="lang" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Language of the reports in this feed. Not a language code; only for display purposes.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="type" type="xs:string" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Report types, similar to the type tag on sources, for this particular feed.
|
||||
Allows adding multiple feeds filtered by types.
|
||||
When this type is omitted, the source's type can be assumed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="format" default="rss">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
Format of the syndication feed.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="atom" />
|
||||
<xs:enumeration value="cdf" />
|
||||
<xs:enumeration value="echo" />
|
||||
<xs:enumeration value="json" />
|
||||
<xs:enumeration value="rdf" />
|
||||
<xs:enumeration value="rss" />
|
||||
<xs:enumeration value="rss3" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="id" type="xs:ID" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="id" type="xs:ID" use="required" />
|
||||
</xs:complexType>
|
||||
<xs:unique name="uniqueFeedAttributes">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The language, type and format combination of each feed must be unique within each source.
|
||||
Due to constraints defined by the XML Schema 1.0 specification, feeds without a type or using the default format cannot be checked by this constraint.
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:selector xpath="itsb:feed" />
|
||||
<xs:field xpath="@lang" />
|
||||
<xs:field xpath="@type" />
|
||||
<xs:field xpath="@format" />
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Title of the section.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="id" type="xs:ID" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="section" type="Section" minOccurs="1" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="version" use="required" fixed="1.0" />
|
||||
</xs:complexType>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="itsb" type="Document">
|
||||
<xs:unique name="uniqueOutputs">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
|
|
Loading…
Reference in New Issue