namespace gd = "http://schemas.google.com/g/2005" include "atom.rnc" { start = comments | contactSection | email | entryLink | extendedProperty | feedLink | geoPt | im | originalEvent | phoneNumber | postalAddress | rating | recurrence | recurrenceException | reminder | when | where | who | eventStatus | transparency | visibility } # anyAttribute in the definition of gEnumConstruct and gdCommonProperties appears to be incorrect. gEnumConstruct = attribute value { text }, undefinedAttribute* gdCommonProperties = atomCommonAttributes, anyElement* comments = element gd:comments { gdCommonProperties, attribute rel { xsd:string }?, feedLink? } contactSection = element gd:contactSection { gdCommonProperties, attribute label { xsd:string }?, (email* & im* & phoneNumber* & postalAddress* & geoPt*) } email = element gd:email { attribute label { xsd:string }?, attribute address { xsd:string } } entryLink = element gd:entryLink { (attribute href { xsd:string }?, attribute readOnly { xsd:boolean }?) # atomEntry? } extendedProperty = element gd:extendedProperty { attribute name { xsd:string }, attribute value { xsd:string } } feedLink = element gd:feedLink { (attribute href { xsd:string }?, attribute readOnly { xsd:boolean }?, attribute countHint { xsd:unsignedInt }?) # atomFeed? } geoPt = element gd:geoPt { attribute label { xsd:string }?, attribute lat { xsd:float }, attribute lon { xsd:float }, attribute elev { xsd:float }?, attribute time { xsd:dateTime }? } im = element gd:im { attribute label { xsd:string }?, attribute protocol { xsd:string }?, attribute address { xsd:string }? } originalEvent = element gd:originalEvent { attribute id { xsd:string }, attribute href { xsd:string }, when } phoneNumber = element gd:phoneNumber { attribute rel { xsd:string }?, attribute label { xsd:string }?, attribute uri { xsd:string }?, xsd:string } postalAddress = element gd:postalAddress { attribute label { xsd:string }?, xsd:string } rating = element gd:rating { gdCommonProperties, attribute rel { xsd:string }?, attribute value { xsd:int }?, attribute average { xsd:float }?, attribute min { xsd:int }, attribute max { xsd:int }, attribute numRaters { xsd:int }? } recurrence = element gd:recurrence { xsd:string } recurrenceException = element gd:recurrenceException { attribute specialized { xsd:boolean }, (entryLink & originalEvent) } reminder = element gd:reminder { gdCommonProperties, attribute absoluteTime { xsd:dateTime }?, attribute method { xsd:string }?, attribute days { xsd:unsignedInt }?, attribute hours { xsd:unsignedInt }?, attribute minutes { xsd:unsignedInt }? } when = element gd:when { gdCommonProperties, attribute startTime { xsd:date | xsd:dateTime }, attribute endTime { xsd:date | xsd:dateTime }?, attribute valueString { xsd:string }? } where = element gd:where { gdCommonProperties, attribute rel { xsd:string }?, attribute label { xsd:string }?, attribute valueString { xsd:string }?, entryLink? } who = element gd:who { gdCommonProperties, attribute rel { xsd:string }?, attribute email { xsd:string }?, attribute valueString { xsd:string }?, (entryLink? & element gd:attendeeType { gEnumConstruct }? & element gd:attendeeStatus { gEnumConstruct }?) } eventStatus = element gd:eventStatus { attribute value { "http://schemas.google.com/g/2005#event.confirmed" | "http://schemas.google.com/g/2005#event.confirmed" | "http://schemas.google.com/g/2005#event.tentative" } transparency = element gd:transparency { attribute value { "http://schemas.google.com/g/2005#event.opaque" | "http://schemas.google.com/g/2005#event.transparent" } visibility = element gd:visibility { attribute value { "http://schemas.google.com/g/2005#event.confidential" | "http://schemas.google.com/g/2005#event.default" | "http://schemas.google.com/g/2005#event.private" | "http://schemas.google.com/g/2005#event.public" }