# Schema for the 0.1 snapshot of Pie/Echo/Whatever
# IMPORTANT: This authoritative version of this schema is in Relax NG
#  compact syntax; i.e. its name ends in ".rnc".  It would be very unwise
#  to edit any other version.
#
# V0.1: T. Bray, July 2003
#  July 12: fix sequence in feed/entry 
#           clean up "mode" attribute dispatching
#           s/Person/Writer/

default namespace = "http://www.intertwingly.net/wiki/pie/"
namespace xh = "http://www.w3.org/1999/xhtml"

start = Feed

Feed = element feed
{
  # attributes
  XMLbasics, Version,

  # children
  Title, Subtitle?, Link, Modified?, Entry*
}

Version = attribute version { "0.1" }
Title = element title { text }
Subtitle = element subtitle { text }
Link = element link { xsd:anyURI }
Id = element id { xsd:anyURI }
Modified = element modified { xsd:dateTime }

Entry = element entry {
  XMLbasics,
  Title, Subtitle?, Link, Id, Summary?,
  Author, Contributor*, 
  Created?, Modified, Issued,
  Content*
}

Issued = element issued { xsd:dateTime }
Created = element created { xsd:dateTime }

Summary = element summary { text }
Author = element author { Writer }
Contributor = element contributor { Writer }

Writer =
  element name { text },
  element homepage { xsd:anyURI }?,
  element weblog { xsd:anyURI }?

Content = element content 
{ 
  XMLbasics, attribute type { text }, 
  ( ( attribute mode { "xml" }?, XHTML ) 
  | ( attribute mode { "escaped" | "base64" }, text) 
  | ( attribute src  { xsd:anyURI } ) 
  ) 
} 

XHTML = element xh:*
{
  attribute * { text }*,
  ( text | XHTML)* 
}

XMLbasics =
  attribute xml:lang { text }?,
  attribute xml:base { xsd:anyURI }?