The output of
cmark -t xml currently has the document type declaration:
<!DOCTYPE CommonMark SYSTEM "CommonMark.dtd">
The Name in the document type declaration MUST match the element type of the root element.
Parsing the output XML with NSGMLS (
nsgmls -wxml sample.xml) indeed gives this error:
nsgmls:sample.xml:2:44:E: DTD did not contain element declaration for document type name nsgmls:sample.xml:3:9:E: document type does not allow element "document" here nsgmls:sample.xml:28:12:E: no document element
The document type declaration should name the document’s root element, which is the element
document in this case. With the second line of
sample.xml changed to
<!DOCTYPE document SYSTEM "CommonMark.dtd">
the XML output of
cmark -t xml is actually valid — at least NSGML does not complain any more.