home *** CD-ROM | disk | FTP | other *** search
- default namespace = "http://www.thaiopensource.com/validate/nrl"
-
- start =
- element rules {
- schemaType?,
- (rule* | (attribute startMode { modeName }, mode+))
- }
-
- mode =
- element mode {
- attribute name { userModeName },
- attribute extends { modeName }?,
- rule*
- }
-
- rule =
- element namespace {
- attribute ns { xsd:anyURI },
- ruleModel
- }
- | element anyNamespace { ruleModel }
-
- ruleModel = attribute match { elementsOrAttributes }?, actions
-
- elementsOrAttributes =
- list {
- ("elements", "attributes")
- | ("attributes", "elements")
- | "elements"
- | "attributes"
- }
-
- actions =
- noResultAction*, (noResultAction|resultAction), noResultAction*
-
- noResultAction =
- element validate {
- attribute schema { xsd:anyURI },
- schemaType?,
- option*,
- modeUsage
- }
- | element allow|reject { modeUsage }
-
- resultAction =
- element attach|unwrap { modeUsage }
-
- option =
- element option {
- attribute name { xsd:anyURI },
- attribute arg { text }?,
- attribute mustSupport { xsd:boolean }?
- }
-
- modeUsage =
- attribute useMode { modeName }?,
- element context {
- attribute path { path },
- attribute useMode { modeName }?
- }*
-
- modeName = userModeName | builtinModeName
-
- userModeName = xsd:NCName
- builtinModeName = "#attach" | "#allow" | "#reject" | "#unwrap"
-
- schemaType = attribute schemaType { mediaType }
- mediaType = xsd:string # should do better than this
- path =
- xsd:string {
- pattern = "\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*"
- ~ "(|\s*(/\s*)?\i\c*(\s*/\s*\i\c*)*\s*)*"
- }