forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Steven Noels <>
Subject Re: [PROPOSAL] DTD Versioning (Re: Should href be required on link)
Date Sun, 15 Dec 2002 10:56:04 GMT
Jeff Turner wrote:

> On Sun, Dec 15, 2002 at 09:02:10AM +0100, Steven Noels wrote:

>>Trying to fix the link element, I was thinking to do:
>>PUBLIC "-//APACHE//ENTITIES Documentation V1.1//EN"
> The point of catalogs is to find a *local* DTD, so why would you map it
> to something over HTTP?

Of course, but then I was thinking of what to do with the old versions. 
Should we litter CVS? If we have too much fileage[1], we might even be 
less motivated to fix and enhance DTDs.

>>PUBLIC "-//APACHE//ENTITIES Documentation V1.1.1//EN"
>>       "dtd/document-v11.1.mod"
>>and cvs removing document-v11.mod.
> I was suggesting leaving document-v11.mod alone, and making all further
> updates in .dtd files that override/extend document-v11.mod.  There
> wouldn't be a document-v11.1.mod.  The directory listing would be:
> document-v11.mod
> document-v11.dtd
> document-v11-1.dtd
> document-v11-2.dtd
> And corresponding catalog entries:
> PUBLIC "-//APACHE//ENTITIES Documentation V1.1//EN"
>        "dtd/document-v11.mod"
> -- Document Type Definitions --
> PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
>        "dtd/document-v11.dtd"
> -- Document Type Definitions --
> PUBLIC "-//APACHE//DTD Documentation V1.1.1//EN"
>        "dtd/document-v11-1.dtd"
> -- Document Type Definitions --
> PUBLIC "-//APACHE//DTD Documentation V1.1.2//EN"
>        "dtd/document-v11-2.dtd"
> So to implement Keiron's patch, we'd create a document-v1.1-1.dtd which
> overrides the 'link.att' entity as follows:
> <!ENTITY % common-charents PUBLIC
>     "-//APACHE//ENTITIES Common Character Entity Sets V1.0//EN"
>     "common-charents-v10.mod">
> %common-charents;
> <!ENTITY % document PUBLIC
>     "-//APACHE//ENTITIES Documentation V1.1//EN"
>     "document-v11.mod">
> <!-- Redefine 'href' attribute as REQUIRED -->
> <!ENTITY % link.att 'href      CDATA             #REQUIRED
>          role      CDATA                         #IMPLIED
>          title     CDATA                         #IMPLIED '>
> %document;
> I've tried this and it works.

Yes. But I consider this not to be a grammar evolution/modification, it 
is more of a localisation. If we decide link has to change, it should be 
done in-place, not in the local declaration subset (even though I just 
shaved, my beard is itching), and we should have proper versioning as 
you indicated.

I'm not really keen on this particular way of patching the DTD.

> A disadvantage of this scheme is that it makes extending 1.1.x DTDs a bit
> yucky.  You'd have to make a verbatim copy of document-v11-x.dtd, and
> then make any additions.  So whatever is in document-v11-1.dtd must also
> be in document-v11-2.dtd, and all successors.

Yep. My point exactly.

> <snip things I didn't understand>

I know you can do better ;)

>>But the itch is gradually becoming unbearable. If we don't clean up the 
>>mess, we'll never get to properly manage our DTDs. I'll do some more 
> In the distant future it would be nice to switch to RELAX NG Compact,
> being the only schema syntax readily understandable by end users.  Throw
> out DOCTYPE declarations and XML 1.0's definition of 'validity' and use a
> versioned namespace to identify the doc type.

I'm very much inclined to do so, but still would like to keep both: 
there are much more grammar-aware editors that understand DTDs.

[1] fileage, as in: mileage, verbiage, foliage

Steven Noels                  
Outerthought - Open Source, Java & XML Competence Support Center
Read my weblog at    
stevenn at                stevenn at

View raw message