Related
s
DOM
HTML
HTML5
MSXML
NAMESPACES
NOT SGML
SAX
SCHEMA
SGML
SVG
TEX
UNICODE
XML CHINESE
XML CONDENSED
XML DUTCH
XSL
C.15 Can a root element type be explicitly declared in the
DTD?
No. This is done in the document's Document Type Declaration, not in the DTD.
In a Document Type Declaration like this:
<!DOCTYPE chapter SYSTEM "docbookx.dtd">
the whole point of the
chapter part is to identify which of
the element types declared in the specified DTD should be
used as the root element. I believe the highest level
element in DocBook is set, but I find
it hard to imagine someone creating a document to
represent a set of books. We are free to use
set, book,
chapter, article, or
even para as the document element for a
valid DocBook document.
[One job some parsers do is determine which element type[s] in a DTD are not contained in the content model of any other element type: these are by deduction the prime candidates for being default root elements. (PF)]
This is A Good Thing, because it adds flexibility to how the DTD is used. It's the reason that XML (and SGML) have lent themselves so well to electronic publishing systems in which different elements were mixed and matched to create different documents all conforming to the same DTD.
I've seen schema proposals that let you specify which of a schema's element types could be a document's root element, but after a quick look at section 3.3 of Part 1 of the W3C Schema Recommendation and the RELAX NG schema for RELAX, I don't believe that either of these let you do this. I could be wrong.