xml.rnc
41 lines
| 1.2 KiB
| application/relax-ng-compact-syntax
|
RNCCompactLexer
/ contrib / xml.rnc
Robert Bachmann
|
r10161 | # RelaxNG schema for "xml" log style | ||
# Inspired by Subversion's XML log format. | ||||
start = log | ||||
node.type = xsd:string {minLength = "40" maxLength = "40"} | ||||
log = element log { logentry+ } | ||||
logentry = element logentry { | ||||
logentry.attlist, | ||||
branch*, tag*, hgparent*, | ||||
author, date, | ||||
msg, paths?, copies?, extra* | ||||
} | ||||
logentry.attlist = | ||||
attribute revision {xsd:nonNegativeInteger} | ||||
& attribute node {node.type} | ||||
branch = element branch { text } | ||||
tag = element tag { text } | ||||
hgparent = element parent {hgparent.attlist, text} | ||||
hgparent.attlist = | ||||
attribute revision {xsd:integer {minInclusive = "-1"} } | ||||
& attribute node {node.type} | ||||
author = element author { author.attlist, text } | ||||
author.attlist = | ||||
attribute email {text} | ||||
date = element date {xsd:dateTime} | ||||
msg = element msg {msg.attlist, text} | ||||
msg.attlist = | ||||
attribute xml:space {"preserve"} | ||||
paths = element paths { path* } | ||||
path = element path { path.attlist, text } | ||||
path.attlist = | ||||
# Action: (A)dd, (M)odify, (R)emove | ||||
attribute action {"A"|"M"|"R"} | ||||
copies = element copies { copy+ } | ||||
copy = element copy { copy.attlist, text } | ||||
copy.attlist = | ||||
attribute source {text} | ||||
extra = element extra {extra.attlist, text} | ||||
extra.attlist = | ||||
attribute key {text} | ||||