# RELAX NG Compact Syntax Grammar # Description: Google Calendar: feed of a calendar's events namespace atom = "http://www.w3.org/2005/Atom" namespace gCal = "http://schemas.google.com/gCal/2005" namespace gd = "http://schemas.google.com/g/2005" namespace openSearch = "http://a9.com/-/spec/opensearch/1.1/" start = calendar_calendarEventFeed | calendar_calendarEventEntry # Describes the status of an event attendee gdata_attendeeStatus = element gd:attendeeStatus { attribute value { xsd:string } } # Describes an author atom_author = element atom:author { attribute xml:lang { xsd:string }?, ( atom_email? & atom_name & atom_uri? ) } # Describes an entry in a feed of a Calendar event's comments calendar_calendarCommentEntry = element atom:entry { attribute gd:etag { xsd:string }?, ( atom_author* & atom_content? & atom_contributor* & atom_id & atom_published? & atom_updated & calendar_calendarLink+ & element atom:title { atom_textConstruct } & gdata_messageKind ) } # Describes feed of a Calendar event's comments calendar_calendarCommentFeed = element atom:feed { attribute gd:etag { xsd:string }?, ( atom_author* & atom_contributor* & atom_generator? & atom_id & atom_updated & calendar_calendarCommentEntry* & calendar_calendarLink+ & element atom:title { atom_textConstruct } & gdata_messageKind & opensearch_itemsPerPage? & opensearch_startIndex? & opensearch_totalResults? ) } # Describes a container of a feed link for Calendar comment entries calendar_calendarComments = element gd:comments { calendar_calendarCommentsFeedLink } # Describes a nested Calendar comments feed link calendar_calendarCommentsFeedLink = element gd:feedLink { attribute countHint { xsd:int }?, attribute href { xsd:string }?, attribute readOnly { xsd:boolean }?, attribute rel { xsd:string }?, calendar_calendarCommentFeed? } # Describes a Calendar event entry calendar_calendarEventEntry = element atom:entry { attribute gd:etag { xsd:string }?, ( atom_author+ & atom_content? & atom_contributor* & atom_id & atom_published? & atom_updated & calendar_calendarComments? & calendar_calendarExtendedProperty* & calendar_calendarLink+ & calendar_calendarRecurrenceException* & calendar_calendarWhere* & calendar_calendarWho* & calendar_icalUIDProperty? & calendar_privateCopyProperty? & calendar_quickAddProperty? & calendar_sendEventNotificationsProperty? & calendar_sequenceNumberProperty? & calendar_syncEventProperty? & element atom:summary { atom_textConstruct }? & element atom:title { atom_textConstruct } & gdata_eventKind & gdata_eventStatus? & gdata_originalEvent? & gdata_recurrence? & gdata_reminder* & gdata_transparency? & gdata_visibility? & gdata_when* ) } # Describes a Calendar event feed calendar_calendarEventFeed = element atom:feed { attribute gd:etag { xsd:string }?, ( atom_author* & atom_contributor* & atom_generator? & atom_id & atom_updated & calendar_calendarEventEntry* & calendar_calendarLink+ & calendar_timeZoneProperty & calendar_timesCleanedProperty? & element atom:subtitle { atom_textConstruct } & element atom:title { atom_textConstruct } & gdata_eventKind & opensearch_itemsPerPage & opensearch_startIndex? & opensearch_totalResults? ) } # Defines a value for the realm attribute that is used only in the calendar API calendar_calendarExtendedProperty = element gd:extendedProperty { attribute name { xsd:string }, attribute realm { xsd:string }?, attribute value { xsd:string }? } # Extends the base Link class with Calendar extensions calendar_calendarLink = element atom:link { attribute href { xsd:string }, attribute length { xsd:long }?, attribute rel { "alternate" | "edit" | "http://schemas.google.com/acl/2007#accessControlList" | "http://schemas.google.com/acl/2007#controlledObject" | "http://schemas.google.com/g/2005#batch" | "http://schemas.google.com/g/2005#feed" | "http://schemas.google.com/g/2005#post" | "http://schemas.google.com/gCal/2005/webContent" | "next" | "previous" | "related" | "self" }, attribute title { xsd:string }?, attribute type { xsd:string }, calendar_webContent? } # Describes an exception to a recurring Calendar event calendar_calendarRecurrenceException = element gd:recurrenceException { attribute specialized { xsd:boolean }, calendar_calendarRecurrenceExceptionEntryLink } # Describes an entry used by a Calendar recurrence exception entry link calendar_calendarRecurrenceExceptionEntry = element atom:entry { attribute gd:etag { xsd:string }?, ( atom_author* & atom_category* & atom_content? & atom_contributor* & atom_id & atom_published? & atom_updated & calendar_calendarComments? & calendar_calendarLink* & calendar_calendarWhere* & calendar_calendarWho* & calendar_icalUIDProperty? & calendar_sequenceNumberProperty? & element atom:title { atom_textConstruct } & gdata_eventStatus? & gdata_originalEvent? & gdata_transparency? & gdata_visibility? & gdata_when* ) } # Describes an entry link used by a Calendar recurrence exception calendar_calendarRecurrenceExceptionEntryLink = element gd:entryLink { calendar_calendarRecurrenceExceptionEntry? } # Extends the base Where class with Calendar extensions calendar_calendarWhere = element gd:where { attribute valueString { xsd:string }? } # Extends the base Who class with Calendar extensions calendar_calendarWho = element gd:who { attribute email { xsd:string }?, attribute rel { xsd:string }?, attribute valueString { xsd:string }?, ( calendar_resourceProperty? & gdata_attendeeStatus? ) } # 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 a contributor atom_contributor = element atom:contributor { attribute xml:lang { xsd:string }?, ( atom_email? & atom_name & atom_uri? ) } # Describes an author's email address atom_email = element atom:email { xsd:string } # Describes an event kind gdata_eventKind = element atom:category { attribute scheme { "http://schemas.google.com/g/2005#kind" }, attribute term { "http://schemas.google.com/g/2005#event" } } # Describes the base set of values for event status gdata_eventStatus = element gd:eventStatus { attribute value { xsd:string } } # Describes the generator atom_generator = element atom:generator { attribute uri { xsd:string }?, attribute version { xsd:string }?, xsd:string } # Describes the UID in the ical export of the event calendar_icalUIDProperty = element gCal:uid { attribute value { 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 message kind gdata_messageKind = element atom:category { attribute scheme { "http://schemas.google.com/g/2005#kind" }, attribute term { "http://schemas.google.com/g/2005#message" } } # Describes an author's human-readable name atom_name = element atom:name { xsd:string } # Describes a link to a recurring event gdata_originalEvent = element gd:originalEvent { attribute href { xsd:string }, attribute id { xsd:string }, gdata_when } # Indicates whether this is a private copy of the event, changes to which should # not be sent to other calendars calendar_privateCopyProperty = element gCal:privateCopy { attribute value { xsd:boolean } } # Describes a creation timestamp atom_published = element atom:published { (xsd:date | xsd:dateTime) } # Describes whether gd:content is for quick-add processing calendar_quickAddProperty = element gCal:quickadd { attribute value { xsd:boolean } } # Describes an RFC 2445 recurrence rule gdata_recurrence = element gd:recurrence { xsd:string } # Describes a reminder on an event gdata_reminder = element gd:reminder { attribute absoluteTime { ( xsd:date | xsd:dateTime) }?, attribute days { xsd:int }?, attribute hours { xsd:int }?, attribute method { xsd:string }?, attribute minutes { xsd:int }? } # Describes whether gd:who is a resource such as a conference room calendar_resourceProperty = element gCal:resource { attribute id { xsd:string }?, attribute value { xsd:boolean }? } # Describes whether to send event notifications to other participants of the # event calendar_sendEventNotificationsProperty = element gCal:sendEventNotifications { attribute value { xsd:boolean } } # Describes sequence number of an event calendar_sequenceNumberProperty = element gCal:sequence { attribute value { xsd:int } } # Describes the starting index of the contained entries for paged feeds opensearch_startIndex = element openSearch:startIndex { xsd:int } # Describes whether this is a sync scenario where the Ical UID and Sequence # number are honored during inserts and updates calendar_syncEventProperty = element gCal:syncEvent { attribute value { xsd:boolean } } # 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? # Describes the time zone of a calendar calendar_timeZoneProperty = element gCal:timezone { attribute value { xsd:string } } # Describes how many times calendar was cleaned via Manage Calendars calendar_timesCleanedProperty = element gCal:timesCleaned { attribute value { xsd:unsignedInt } } # Describes the total number of results associated with this feed opensearch_totalResults = element openSearch:totalResults { xsd:int } # Describes the base set of values for event transparency gdata_transparency = element gd:transparency { attribute value { xsd:string } } # 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 } # Describes the base set of values for event visibility gdata_visibility = element gd:visibility { attribute value { xsd:string } } # Describes a "web content" extension calendar_webContent = element gCal:webContent { attribute height { xsd:int }, attribute url { xsd:string }, attribute width { xsd:int }, calendar_webContentGadgetPref* } # Describes a single web content gadget preference calendar_webContentGadgetPref = element gCal:webContentGadgetPref { attribute name { xsd:string }, attribute value { xsd:string } } # Describes a period of time gdata_when = element gd:when { attribute endTime { ( xsd:date | xsd:dateTime) }?, attribute startTime { (xsd:date | xsd:dateTime) }, attribute valueString { xsd:string }?, gdata_reminder* }