# Compact RELAX NG Grammar for the Atom Extensibility Framework default namespace = "" namespace atom = "http://purl.org/atom/ns#" start = element atom:atom { Property* } | Property Property = SimpleProp | LiteralProp | ComplexLiteralProp SimpleProp = element * { RefAttr | (RefAttr?, Property*) } LiteralProp = element * { text | (ModeAttr, any) } ComplexLiteralProp = element * { NonSpecialAttr+, ModeAttr?, any } NonSpecialAttr = attribute * - (mode | ref) { text } RefAttr = attribute ref { xsd:anyURI } ModeAttr = attribute mode { text } any = (text | element * { (attribute * { text } | text | any)* })*