DTD for Qualified Dublin Core -- DRAFT PROPOSAL 2002-12-12, TGH

Summary of DTD

The following DTD was developed primarily as an intellectual exercise, but also to examine the suggestion that any Guidelines for Dublin Core in XML should be implementable as DTDs, at least as a baseline. Related to this, the DTD explores whether the use of the xsi:type attribute too closely ties the Guidelines to the XML Schema language. This DTD was influenced by work done on the Recommendations for XML Schema for Qualified Dublin Core.

I believe the following DTD conforms to the Guidelines for implementing Dublin Core in XML in all respects, except, of course, for the first Recommendation to use XML Schemas instead of DTDs. This includes the somewhat controversial Recommendation 7 to use an xsi:type attribute to express encoding schemes.

Miscellaneous Features of the DTD

The DTD and Associated Files

dublincore.dtd
This is the main DTD. It defines the default namespace prefixes, the root element, standard attributes, and the allowed encoding schemes.
dc.ent
This entity file is included in the main DTD. It defines all of the elements included in the dc namespace.
dct.ent
This entity file is included in the main DTD. It defines all of the elements included in the dct namespace.
test.xml
Sample file which can be validated with the DTD.

Conclusions

While certainly not as powerful or as flexible as using XML Schema, it is possible to create a somewhat useful DTD that conforms to the Guidelines for implementing Dublin Core in XML (excepting Recommendation 1), including Recommendation 7 for using xsi:type. I personally would never use this DTD unless I was in a severely constrained environment where using XML Schema was impossible. This should be pretty rare with the wide adoption of XML Schema in a number of free and commercial implementations.

Another point is that the xsi:type recommendation can be implemented using a DTD, and if you want to support namespaces in the DTD anyway, adding support for this attribute isn't even difficult. Granted, in the DTD world you don't get any benefit from using xsi:type over any other arbitrary attribute name, such as schema, but my feeling is that the extra power and flexibility (of extensibility and datatyping capabilities) that using this attibute affords in the XML Schema world outweights the minor incovenience that implementing it in non-XML Schema environments might entail.

Coming Next

A Schematron implementation