Add Webfeeds XML schema

This commit is contained in:
~lucidiot 2023-11-22 23:33:44 +01:00
parent a8741718eb
commit 07773a40e0
1 changed files with 125 additions and 0 deletions

125
xsd/webfeeds.xsd Normal file
View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Webfeeds XML schema
Copyright (c) 2023 ~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, version 3.
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://webfeeds.org/rss/1.0"
version="1.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns="http://webfeeds.org/rss/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:annotation>
<xs:documentation>Webfeeds 1.0 XML schema</xs:documentation>
<xs:documentation><![CDATA[Derived from the DTD at <http://webfeeds.org/rss/1.0>]]></xs:documentation>
</xs:annotation>
<xs:simpleType name="Color">
<xs:annotation>
<xs:documentation>An RGB color, as six hexadecimal digits.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:length value="6" />
<xs:pattern value="[0-9a-fA-F]{6}" />
</xs:restriction>
</xs:simpleType>
<xs:element name="accentColor" type="Color">
<xs:annotation>
<xs:documentation>Accent color used to customize this feed's appearance within a feed reader.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:simpleType name="AnalyticsEngine">
<xs:annotation>
<xs:documentation>An engine for site analytics.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="GoogleAnalytics" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="Analytics">
<xs:annotation>
<xs:documentation>When this is configured, feed readers should report back events for various user actions.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
<xs:documentation>There are no further details on how the reports are made or what exactly is being reported.</xs:documentation>
</xs:annotation>
<xs:attribute name="id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>A string used to identify this feed uniquely within the analytics engine.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="engine" type="AnalyticsEngine" use="optional" default="GoogleAnalytics">
<xs:annotation>
<xs:documentation>Which analytics engine to send reports to.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="analytics" type="Analytics" />
<xs:complexType name="Cover">
<xs:annotation>
<xs:documentation>A cover image, a large rectangular image used as a background in feed headers.</xs:documentation>
</xs:annotation>
<xs:attribute name="image" type="xs:anyURI" use="required">
<xs:annotation>
<xs:documentation>URI to the cover image.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:element name="cover" type="Cover" />
<xs:element name="wordmark" type="xs:anyURI">
<xs:annotation>
<xs:documentation>URL of a small rectangular image used to represent the feed.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="icon" type="xs:anyURI">
<xs:annotation>
<xs:documentation>URL of a small square image, similar to an `apple-touch-icon.png` file, to represent the feed's icon.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="partial" type="xs:boolean">
<xs:annotation>
<xs:documentation>Whether this feed only includes a portion of the website's contents.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="deprecated" type="xs:boolean">
<xs:annotation>
<xs:documentation>Whether this feed is no longer the primary feed for the related website.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="promotion" type="xs:string">
<xs:annotation>
<xs:documentation>Promotional HTML content that should be added to the end of every item within this feed.</xs:documentation>
<xs:documentation>This should be added to the channel element.</xs:documentation>
<xs:documentation>This element can be used multiple times. Feed readers should pick one element at random to be displayed after an item.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>