commit:     140f12f64dd4da0ff21495bbf4444a350b2d6b51
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 25 00:29:57 2022 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Tue Jan 25 00:29:57 2022 +0000
URL:        
https://gitweb.gentoo.org/proj/nxml-gentoo-schemas.git/commit/?id=140f12f6

devbook.rnc: Update from devmanual

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 devbook.rnc | 213 +++++++++++++++++++++++++++---------------------------------
 1 file 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)
+}

Reply via email to