package syndic

  1. Overview
  2. Docs

Syndic.Rss1: compliant with RSS 1.0.

module Error : sig ... end

The common signature that all error modules must (at least) satisfy.

type title = string

A descriptive title for the channel, image, item and textinput. See RSS 1.0 § 5.3.1, § 5.4.1, § 5.5.1, and § 5.6.1.

Syntax: <title>{title}</title> Requirement: Required for all Model:
(#PCDATA) (Suggested) Maximum Length: 40 (characters) for channel, image
and textinput (Suggested) Maximum Length: 100 for item 
type name = string

The text input field's (variable) name. See RSS 1.0 § 5.6.3.

Syntax: <name>{textinput_varname}</name> Requirement: Required if
textinput Model: (#PCDATA) (Suggested) Maximum Length: 500 
type description = string

This can be - a brief description of the channel's content, function, source, etc. See RSS 1.0 § 5.3.3; - or a brief description/abstract of the item. See RSS 1.0 § 5.5.3; - or a brief description of the textinput field's purpose. For example: "Subscribe to our newsletter for..." or "Search our site's archive of..." See RSS 1.0 § 5.6.2.

Syntax: <description>{description}</description> Requirement: Required
only for channel and textinput Model: (#PCDATA) (Suggested) Maximum Length:
500 for channel and item (Suggested) Maximum Length: 100 for textinput 
type channel_image = Uri.t

Establishes an RDF association between the optional image element 5.4 and this particular RSS channel. The rdf:resource's mage_uri must be the same as the image element's rdf:about mage_uri. See RSS 1.0 § 5.3.4

Syntax: <image rdf:resource="{image_uri}" /> Requirement: Required only
if image element present Model: Empty 
type url = Uri.t

The URL of the image to used in the "src" attribute of the channel's image tag when rendered as HTML. See RSS 1.0 § 5.4.2

Syntax: <url>{image_url}</url> Requirement: Required if the image
element is present Model: (#PCDATA) (Suggested) Maximum Length: 500 

This can be - The URL to which an HTML rendering of the channel title will link, commonly the parent site's home or news page. See RSS 1.0 § 5.3.2 - Or the URL to which an HTML rendering of the channel image will link. This, as with the channel's title link, is commonly the parent site's home or news page. See RSS 1.0 § 5.4.3 - Or the item's URL. See RSS 1.0 § 5.5.2 - Or the URL to which a textinput submission will be directed (using GET). See RSS 1.0 § 5.6.4

Syntax: <link>{link}</link> Requirement: Required for all Model:
(#PCDATA) (Suggested) Maximum Length: 500 
type items = Uri.t list

An RDF table of contents, associating the document's items 5.5 with this particular RSS channel. Each item's rdf:resource tem_uri must be the same as the associated item element's rdf:about tem_uri.

An RDF Seq (sequence) is used to contain all the items rather than an RDF Bag to denote item order for rendering and reconstruction.

Note that items appearing in the document but not as members of the channel level items sequence are likely to be discarded by RDF parsers.

See RSS 1.0 § 5.3.5

Syntax: <items><rdf:Seq><rdf:li resource="{item_uri}" /> ...
</rdf:Seq></items> Requirement: Required 
type channel_textinput = Uri.t

Establishes an RDF association between the optional textinput element 5.6 and this particular RSS channel. The textinput_uri rdf:resource must be the same as the textinput element's rdf:about textinput_uri.

See RSS 1.0 § 5.3.6

Syntax: <textinput rdf:resource="{textinput_uri}" /> Requirement:
Required only if texinput element present Model: Empty 
type channel = {
  1. about : Uri.t;
    (*

    must be unique

    *)
  2. title : title;
  3. description : description;
  4. image : channel_image option;
  5. items : items;
  6. textinput : channel_textinput option;
}

The channel element contains metadata describing the channel itself, including a title, brief description, and URL link to the described resource (the channel provider's home page, for instance). The {resource} URL of the channel element's rdf:about attribute must be unique with respect to any other rdf:about attributes in the RSS document and is a URI which identifies the channel. Most commonly, this is either the URL of the homepage being described or a URL where the RSS file can be found.

See RSS 1.0 § 5.3

Syntax: <channel rdf:about="{resource}"> Requirement: Required Required
Attribute(s): rdf:about Model: (title, link, description, image?, items,
textinput?) 
type image = {
  1. about : Uri.t;
  2. title : title;
  3. url : url;
}

An image to be associated with an HTML rendering of the channel. This image should be of a format supported by the majority of Web browsers. While the later 0.91 specification allowed for a width of 1–144 and height of 1–400, convention (and the 0.9 specification) dictate 88×31.

See RSS 1.0 § 5.4

Syntax: <image rdf:about="{image_uri}"> Requirement: Optional; if
present, must also be present in channel element [5.3.4] Required
Attribute(s): rdf:about Model: (title, url, link) 
type item = {
  1. about : Uri.t;
  2. title : title;
  3. description : description option;
}

While commonly a news headline, with RSS 1.0's modular extensibility, this can be just about anything: discussion posting, job listing, software patch -- any object with a URI. There may be a minimum of one item per RSS document. While RSS 1.0 does not enforce an upper limit, for backward compatibility with RSS 0.9 and 0.91, a maximum of fifteen items is recommended.

about must be unique with respect to any other rdf:about attributes in the RSS document and is a URI which identifies the item. The value of about should be identical to the value of the link, if possible.

See RSS 1.0 § 5.5

Syntax: <item rdf:about="{item_uri}"> Requirement: >= 1 Recommendation
(for backward compatibility with 0.9x): 1-15 Required Attribute(s):
rdf:about Model: (title, link, description?) 
type textinput = {
  1. about : Uri.t;
  2. title : title;
  3. description : description;
  4. name : name;
}

The textinput element affords a method for submitting form data to an arbitrary URL — usually located at the parent website. The form processor at the receiving end only is assumed to handle the HTTP GET method.

The field is typically used as a search box or subscription form — among others. While this is of some use when RSS documents are rendered as channels (see MNN) and accompanied by human readable title and description, the ambiguity in automatic determination of meaning of this overloaded element renders it otherwise not particularly useful. RSS 1.0 therefore suggests either deprecation or augmentation with some form of resource discovery of this element in future versions while maintaining it for backward compatiblity with RSS 0.9.

about must be unique with respect to any other rdf:about attributes in the RSS document and is a URI which identifies the textinput. about should be identical to the value of the link, if possible.

See RSS 1.0 § 5.6

Syntax: <textinput rdf:about="{textinput_uri}"> Requirement: Optional;
if present, must also be present in channel element [5.3.6] Required
Attribute(s): rdf:about Model: (title, description, name, link) 
type rdf = {
  1. channel : channel;
  2. image : image option;
  3. item : item list;
  4. textinput : textinput option;
}

The outermost level in every RSS 1.0 compliant document is the RDF element. The opening RDF tag assocaties the rdf: namespace prefix with the RDF syntax schema and establishes the RSS 1.0 schema as the default namespace for the document.

While any valid namespace prefix may be used, document creators are advised to consider "rdf:" normative. Those wishing to be strictly backward-compatible with RSS 0.9 must use "rdf:".

See RSS 1.0 § 5.2

Syntax: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"> Requirement: Required exactly as shown,
aside from any additional namespace declarations Model: (channel, image?,
item+, textinput?) 
val parse : ?xmlbase:Uri.t -> Xmlm.input -> rdf

parse xml returns the RDF corresponding to xml.

  • raises Error.raise_expectation

    if xml is not a valid RSS1 document.

  • parameter xmlbase

    the base URI against which relative URIs in the XML RSS1 document are resolved. It is superseded by xml:base present in the document (if any).

val read : ?xmlbase:Uri.t -> string -> rdf

read fname reads the file name fname and parses it. For the optional parameters, see parse.