# Copyright 2019-2020 Gentoo Authors # Distributed under the terms of the MIT/X11 license # Document Type Definition 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 inline.class = b | c | e | 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 subsection = element subsection { subsection.attlist, title, (body | subsubsection), subsubsection* } subsection.attlist &= empty subsubsection = element subsubsection { subsubsection.attlist, title, body } subsubsection.attlist &= empty # Title texts are used as anchors, so we shouldn't allow any formatting, # but unfortunately it is used in the document. title = element title { title.attlist, (text | inline.class)* } title.attlist &= empty body = element body { body.attlist, (authors | contentsTree | block.class)+ } body.attlist &= empty authors = element authors { authors.attlist, author+ } authors.attlist &= empty author = element author { author.attlist, (text | inline.class)* } author.attlist &= attribute name { text }, attribute email { text }? contentsTree = element contentsTree { contentsTree.attlist, empty } contentsTree.attlist &= attribute maxdepth { text }?, 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 &= 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 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 | inline.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