# RELAX NG Compact Syntax Grammar # Description: Blogger: feed of a blog's posts namespace app = "http://www.w3.org/2007/app" namespace atom = "http://www.w3.org/2005/Atom" namespace gd = "http://schemas.google.com/g/2005" namespace media = "http://search.yahoo.com/mrss/" namespace openSearch = "http://a9.com/-/spec/opensearch/1.1/" namespace thr = "http://purl.org/syndication/thread/1.0" start = blogger_blogPostFeed | blogger_postEntry # Describes an author atom_author = element atom:author { attribute xml:lang { xsd:string }?, ( atom_email? & atom_name & atom_uri? ) } # Describes a feed of a blog's posts blogger_blogPostFeed = element atom:feed { attribute gd:etag { xsd:string }?, ( atom_author+ & atom_generator & atom_id & atom_updated & blogger_bloggerLink+ & blogger_postEntry* & element atom:subtitle { atom_textConstruct }? & element atom:title { atom_textConstruct } & opensearch_itemsPerPage & opensearch_startIndex & opensearch_totalResults ) } # Extends the base Link class with Blogger extensions blogger_bloggerLink = element atom:link { attribute href { xsd:string }, attribute length { xsd:long }?, attribute rel { "alternate" | "edit" | "enclosure" | "http://schemas.google.com/blogger/2008#settings" | "http://schemas.google.com/blogger/2008#template" | "http://schemas.google.com/g/2005#feed" | "http://schemas.google.com/g/2005#post" | "next" | "previous" | "replies" | "self" }, attribute title { xsd:string }?, attribute type { xsd:string } } # Describes a category atom_category = element atom:category { attribute label { xsd:string }?, attribute scheme { xsd:string }?, attribute term { xsd:string }, attribute xml:lang { xsd:string }? } # Describes a content atom_content = element atom:content { attribute src { xsd:string }?, attribute type { xsd:string }?, attribute xml:lang { xsd:string }?, xsd:string? } # Describes an Atom publication control status app_control = element app:control { app_draft } # Value of the app:draft tag app_draft = element app:draft { xsd:string } # Value of the app:edited tag app_edited = element app:edited { (xsd:date | xsd:dateTime) } # Describes an author's email address atom_email = element atom:email { xsd:string } # Describes the generator atom_generator = element atom:generator { attribute uri { xsd:string }?, attribute version { xsd:string }?, xsd:string } # Describes a unique identifier atom_id = element atom:id { xsd:string } # Describes the number of items that will be returned per page for paged feeds opensearch_itemsPerPage = element openSearch:itemsPerPage { xsd:int } # Describes a media thumbnail mediarss_mediaThumbnail = element media:thumbnail { attribute height { xsd:unsignedInt }?, attribute time { xsd:string }?, attribute url { xsd:string }, attribute width { xsd:unsignedInt }? } # Describes an author's human-readable name atom_name = element atom:name { xsd:string } # Describes a blog post entry blogger_postEntry = element atom:entry { attribute gd:etag { xsd:string }?, ( app_control? & app_edited? & atom_author+ & atom_category* & atom_content & atom_id & atom_published & atom_updated & blogger_bloggerLink+ & element atom:title { atom_textConstruct } & mediarss_mediaThumbnail? & threading_total? ) } # Describes a creation timestamp atom_published = element atom:published { (xsd:date | xsd:dateTime) } # Describes the starting index of the contained entries for paged feeds opensearch_startIndex = element openSearch:startIndex { xsd:int } # Describes a text construct containing either plain text, HTML, or XHTML atom_textConstruct = attribute src { xsd:string }?, attribute type { xsd:string }?, attribute xml:lang { xsd:string }?, xsd:string? # Indicates total number of unique responses to an entry threading_total = element thr:total { xsd:unsignedInt } # Describes the total number of results associated with this feed opensearch_totalResults = element openSearch:totalResults { xsd:int } # Describes a last updated timestamp atom_updated = element atom:updated { (xsd:date | xsd:dateTime) } # Describes the URI associated with an author atom_uri = element atom:uri { xsd:string }