[EMAIL PROTECTED] wrote: > other reason. To my mind, the only obvious way of figuring out whether two > DTD's with the same root name are equivalent is to look at their internal > subsets; thus the getInternalSubset method in XMLDTDDescription. So that's > the only thing I think our default implementation should look at by > default.
There are a few reasons to have an internal subset: 1) there is no external subset and the internal subset defines the grammar; 2) there is an external subset but the internal subset declarations override the external; 3) to define entities that control conditional sections in the external subset; 4) to define general entities for use within the document; 5) etc. But there's no way I could say that it is used to uniquely identify a DTD grammar. Because the internal subset is usually unique to the document instance, not to the grammar the document uses. A specific grammar pool implementation may use the internal subset to distinguish between two different grammars. Or it may want to use the attributes on the root. (For example, many grammar writers use a "version" attribute on the root element to distinguish between two versions of a grammar.) Should the attributes be part of the DTD description as well? I guess the biggest problem I have with using the internal subset is the amount of code required to do anything with it. You would need a DTD parser (which we have) and a bunch of custom code in order to distinguish between two different grammars. I'll keep thinking on the subject... -- Andy Clark * [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
