# THIS IS A GENERATED FILE, DO NOT EDIT!
# Copyright (C) 2016-2019, Kevin Brubeck Unhammer <unhammer@fsfe.org>

# This program is free software: you can redistribute it and/or modify

# it under the terms of the GNU General Public License as published by

# the Free Software Foundation, either version 3 of the License, or

# (at your option) any later version.

# This program is distributed in the hope that it will be useful,

# but WITHOUT ANY WARRANTY; without even the implied warranty of

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License

# along with this program.  If not, see <http://www.gnu.org/licenses/>.

errors = element errors { attlist.errors, defaults?, error+ }
attlist.errors &= empty

#  root element
defaults = element defaults { attlist.defaults, \default* }
attlist.defaults &= empty

\default = element default { attlist.default, ids, header?, body? }
attlist.default &= attribute type { text }?

ids = element ids { attlist.ids, (e | re)* }
attlist.ids &= empty

re = element re { attlist.re, empty }
attlist.re &= attribute v { text }

e = element e { attlist.e, empty }
attlist.e &= attribute id { xsd:ID }

error = element error { attlist.error, header, body }
attlist.error &=

  attribute type { text }?,
  attribute id { xsd:ID }
header = element header { attlist.header, (title | references)+ }
attlist.header &= empty

Text = (text | em)*
title = element title { attlist.title, Text }
attlist.title &= attribute xml:lang { text }

references = element references { attlist.references, ref+ }
attlist.references &= empty

ref = element ref { attlist.ref, text }
attlist.ref &= attribute n { text }

body = element body { attlist.body, (description | examples)+ }
attlist.body &= empty

examples = element examples { attlist.examples, ex+ }
attlist.examples &= empty

ex = element ex { attlist.ex, Text }
attlist.ex &= attribute xml:lang { text }

description = element description { attlist.description, Text }
attlist.description &= attribute xml:lang { text }

em = element em { attlist.em, text }
attlist.em &= empty

start = errors
