Skip to content

Instantly share code, notes, and snippets.

@mcfearsome
Created July 29, 2008 21:14
Show Gist options
  • Save mcfearsome/3177 to your computer and use it in GitHub Desktop.
Save mcfearsome/3177 to your computer and use it in GitHub Desktop.
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"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment