From: "Pierre van Rooden" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, October 23, 2002 10:43 AM Subject: Re: locations of dtd's Re: [MMBase-1.6.0] Releaseplan Proposal
> Rob van Maris wrote: > > Simple, they use the system ID to access the dtd. > > The system id only tells them the dtd is 'www.mmbase.org/dtd/xxx.dtd' > It does not say where the dtd is - the entity resolver should handle > that. You must be confused a little, because it is actually the other way round: the public ID serves to identify the DTD, the sysem ID provides a location where it can be found. The ID is (/should be) unique for a dtd, whereas it may have a number of locations. > But the entityresolver has no way determining where the dtd is located > if we place the dtds in various packages throughout the core. > How does the resolver know to find buidler.dtd in > org/mmbase/module/core/resources, while the module.dtd > org/mmbase/module/resources? Usually, public ID and location of a local copy of the DTD are known beforehand. E.g. org.mmbase.util.XMLModuleReader expects the DTD identified by "-//MMBase/ DTD module config 1.0//EN". It should in fact compare the public ID in the module configuration file, to verify that it uses the correct DTD, although the current implementation does not do this. Now that the local copies of DTD's are no longer all in the same directory, XMLModuleReader not only needs to know about the public ID for its particular DTD, but also about the location of a local copy. There really is no reason why it should find copies of all the other DTD's as well. Rob van Maris Developer Finalist IT Group Java Specialists ------------------------------------------------------------- Amsterdam, The Netherlands Office: +31 20 5962321 (Direct) Mobile: +31 651444006 Fax: +31 20 5962331 -------------------------------------------------------------
