namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" namespace hr = "http://eric.van-der-vlist.com/ns/person" namespace local = "" default namespace ns1 = "http://eric.van-der-vlist.com/ns/library" namespace sn = "http://www.snee.com/ns/stages" a:documentation [ "Relax NG schema for our library" ] sn:stages [ "\x{a}" ~ " " sn:stage [ name = "library" ] "\x{a}" ~ " " sn:stage [ name = "book" ] "\x{a}" ~ " " sn:stage [ name = "author" ] "\x{a}" ~ " " sn:stage [ name = "character" ] "\x{a}" ~ " " sn:stage [ name = "author-or-book" ] "\x{a}" ~ " " ] start = [ sn:stages = "library" ] element library { book-element+ } | [ sn:stages = "book author-or-book" ] book-element | [ sn:stages = "author author-or-book" ] author-element | [ sn:stages = "character" ] character-element include "foreign.rnc" { foreign-elements = element * - (local:* | ns1:* | hr:*) { anything }* foreign-attributes = attribute * - (local:* | ns1:* | hr:*) { text }* } author-element = element hr:author { attribute id { xsd:NMTOKEN { maxLength = " 16 " } }, name-element, born-element, dead-element? } include "book-content.rnc" book-content &= foreign-nodes book-element = element book { book-content } born-element = element hr:born { xsd:date } character-element = external "character-element.rnc" dead-element = element hr:dead { xsd:date } isbn-element = element isbn { foreign-attributes, token } name-element = element hr:name { xsd:token } qualification-element = element qualification { text } title-element = element title { foreign-attributes, text } available-content = "true" | xsd:token " false " | " "