Hi Hraban! Two notes from me, on xml:lang usage. 1st). xml:lang is not the best solution to language independance. It doesnt take transliteration into account, and it's specification does not cover the full ISO language/country spec. Also, it can be quite hard to intersept xml:lang in a processor. That's why I always use this parameter entity: <!ENTITY % lang "language CDATA #IMPLIED country CDATA #IMPLIED translit CDATA #IMPLIED"> 2nd) Your DTD is not 100% ok. Most of it is just a matter of merging ATTLIST specs, but this one: <!ATTLIST version xml:lang IDREF "en"> is definitely wrong. The IDREF here (and in some other locations) should be CDATA. Generally speaking, ID and IDREF do more harm than good in XML files. It's better to express the Id<->Ref relation in a schema and use CDATA in your Dtds always. Sorry, no positive input from me today (no time) ;-) -- groeten, Taco