Why is the CML DTD so complex?
TecML recognises that molecular science is not the only discipline that it might support, so there is a mechanism for adding DTDs. At present there are two such, HTML (V2.0) and MOL (for molecules). It’s possible to include other DTDs from other disciplines if required. However this is not trivial in SGML and is only manageable by complex manipulation of strings (‘parameter entities’). They are a useful and moderately robust mechanism for updating the DTD, but only if you are very well practised in SGML. The ‘virtual’ DTD that emerges after these manipulations is simpler, but doesn’t get printed out. dtd2html gives a reasonable picture.