diff options
author | 2022-01-25 01:29:57 +0100 | |
---|---|---|
committer | 2022-01-25 01:29:57 +0100 | |
commit | 140f12f64dd4da0ff21495bbf4444a350b2d6b51 (patch) | |
tree | 0434af8ce35c07d5ca9a21e1e62c9086483b70cf | |
parent | Makefile: The devmanual now uses RELAX NG instead of DTD (diff) | |
download | nxml-gentoo-schemas-140f12f64dd4da0ff21495bbf4444a350b2d6b51.tar.gz nxml-gentoo-schemas-140f12f64dd4da0ff21495bbf4444a350b2d6b51.tar.bz2 nxml-gentoo-schemas-140f12f64dd4da0ff21495bbf4444a350b2d6b51.zip |
devbook.rnc: Update from devmanual
Signed-off-by: Ulrich Müller <ulm@gentoo.org>
-rw-r--r-- | devbook.rnc | 213 |
1 files changed, 97 insertions, 116 deletions
diff --git a/devbook.rnc b/devbook.rnc index 2d21a4a..4ca931d 100644 --- a/devbook.rnc +++ b/devbook.rnc @@ -1,132 +1,113 @@ -# Copyright 2019-2021 Gentoo Authors - -# Distributed under the terms of the MIT/X11 license +# Copyright 2022 Gentoo Authors +# Distributed under the terms of the MIT license # or the CC-BY-SA-4.0 license (dual-licensed) -# Document Type Definition for the Gentoo Devmanual - +# RELAX NG schema for the Gentoo Devmanual # Based on common.dtd from GuideXML -namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" - -block.class = - p - | pre - | codesample - | note - | important - | warning - | todo - | figure - | table - | ul - | ol - | dl -attrib.class = b | c | e +block.class = p | pre | codesample | note | important | warning | todo +| figure | table | ul | ol | dl +attrib.class = text | b | c | e inline.class = attrib.class | d | uri -all.class = block.class | inline.class -guide = element guide { guide.attlist, chapter, \include* } -guide.attlist &= - attribute root { "true" }?, - attribute self { text }? -\include = element include { include.attlist, empty } -include.attlist &= attribute href { text } -chapter = - element chapter { chapter.attlist, title, (body | section), section* } -chapter.attlist &= empty -section = - element section { - section.attlist, title, (body | subsection), subsection* - } -section.attlist &= empty + +attrib = attrib.class* +inline = inline.class* +all = (block.class | inline.class)* + +start = guide + +guide = element guide { + (attribute root { "true" } | attribute self { text }), + chapter, + \include* +} + +\include = element include { attribute href { text } } + +chapter = element chapter { title, (body | section), section* } +section = element section { title, (body | subsection), subsection* } subsection = - element subsection { - subsection.attlist, title, (body | subsubsection), subsubsection* - } -subsection.attlist &= empty -subsubsection = - element subsubsection { subsubsection.attlist, title, body } -subsubsection.attlist &= empty + element subsection { title, (body | subsubsection), subsubsection* } +subsubsection = element subsubsection { title, body } + # Title texts are used as anchors, so allow only text attributes -title = element title { title.attlist, (text | attrib.class)* } -title.attlist &= empty -body = - element body { body.attlist, (authors | contentsTree | block.class)+ } -body.attlist &= empty -authors = element authors { authors.attlist, (author+ | authorlist+) } -authors.attlist &= empty -author = element author { author.attlist, (text | inline.class)* } -author.attlist &= +title = element title { attrib } + +body = element body { (authors | contentsTree | block.class)+ } + +authors = element authors { author+ | authorlist+ } + +author = element author { attribute name { text }, - attribute email { text }? -authorlist = element authorlist { authorlist.attlist, empty } -authorlist.attlist &= + attribute email { text }?, + inline +} + +authorlist = element authorlist { attribute title { text }, attribute href { text } -contentsTree = element contentsTree { contentsTree.attlist, empty } -contentsTree.attlist &= - attribute maxdepth { text }?, +} + +contentsTree = element contentsTree { + attribute maxdepth { xsd:unsignedInt }?, attribute root { text }?, attribute extraction { text }? -p = element p { p.attlist, (text | inline.class)* } -p.attlist &= empty -pre = element pre { pre.attlist, text } -pre.attlist &= empty -codesample = element codesample { codesample.attlist, text } -codesample.attlist &= +} + +p = element p { inline } + +pre = element pre { text } + +codesample = element codesample { attribute lang { "c" | "ebuild" | "make" | "m4" | "sgml" }, - attribute numbering { "lines" }? -note = element note { note.attlist, (text | inline.class)* } -note.attlist &= empty -important = - element important { important.attlist, (text | inline.class)* } -important.attlist &= empty -warning = element warning { warning.attlist, (text | inline.class)* } -warning.attlist &= empty -todo = element todo { todo.attlist, (text | inline.class)* } -todo.attlist &= empty -figure = element figure { figure.attlist, empty } -figure.attlist &= + attribute numbering { "lines" }?, + text +} + +note = element note { inline } +important = element important { inline } +warning = element warning { inline } +todo = element todo { inline } + +figure = element figure { attribute link { text }, attribute short { text }?, attribute caption { text }? -table = element table { table.attlist, tr+ } -table.attlist &= empty -tr = element tr { tr.attlist, (th | ti)+ } -tr.attlist &= empty -th = element th { th.attlist, (text | inline.class)* } -th.attlist &= - attribute colspan { text }?, - attribute rowspan { text }?, - [ a:defaultValue = "left" ] - attribute align { "left" | "center" | "right" }? -ti = element ti { ti.attlist, (text | all.class)* } -ti.attlist &= - attribute colspan { text }?, - attribute rowspan { text }?, - attribute nowrap { text }?, - [ a:defaultValue = "left" ] - attribute align { "left" | "center" | "right" }? -ul = element ul { ul.attlist, li+ } -ul.attlist &= attribute class { text }? -ol = element ol { ol.attlist, li+ } -ol.attlist &= empty -li = element li { li.attlist, (text | all.class)* } -li.attlist &= empty -dl = element dl { dl.attlist, (dt | dd)+ } -dl.attlist &= empty -dt = element dt { dt.attlist, (text | inline.class)* } -dt.attlist &= empty -dd = element dd { dd.attlist, (text | all.class)* } -dd.attlist &= empty -b = element b { b.attlist, (text | inline.class)* } -b.attlist &= empty -c = element c { c.attlist, (text | inline.class)* } -c.attlist &= empty -e = element e { e.attlist, (text | inline.class)* } -e.attlist &= empty -d = element d { d.attlist, empty } -d.attlist &= empty -uri = element uri { uri.attlist, (text | inline.class)* } -uri.attlist &= attribute link { text }? -start = guide +} + +table = element table { tr+ } +tr = element tr { (th | ti)+ } + +th = element th { + attribute colspan { xsd:unsignedInt }?, + attribute rowspan { xsd:unsignedInt }?, + attribute align { "left" | "center" | "right" }?, + inline +} + +ti = element ti { + attribute colspan { xsd:unsignedInt }?, + attribute rowspan { xsd:unsignedInt }?, + attribute nowrap { "nowrap" }?, + attribute align { "left" | "center" | "right" }?, + all +} + +ul = element ul { attribute class { "list-group" }?, li+ } +ol = element ol { li+ } +li = element li { all } + +dl = element dl { (dt | dd)+ } +dt = element dt { inline } +dd = element dd { all } + +b = element b { inline } +c = element c { inline } +e = element e { inline } +d = element d { empty } + +uri = element uri { + # uri can have either an URI in the body text or a link attribute + xsd:anyURI + | (attribute link { text }, inline) +} |