summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Müller <ulm@gentoo.org>2022-01-25 01:29:57 +0100
committerUlrich Müller <ulm@gentoo.org>2022-01-25 01:29:57 +0100
commit140f12f64dd4da0ff21495bbf4444a350b2d6b51 (patch)
tree0434af8ce35c07d5ca9a21e1e62c9086483b70cf
parentMakefile: The devmanual now uses RELAX NG instead of DTD (diff)
downloadnxml-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.rnc213
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)
+}