Logged In: YES
user_id=146903

Try doing this: Create a file called ECAT, containing lines
like the following:
public "public id" "filename.cdtd"
...

Then add the following to your ~/.emacs:
(setq sgml-local-ecat-files '("path/to/ECAT"))

When you parse a document using a public identifier listed
in the ECAT file, a compiled version of the DTD will be
written to the given file name. When you load another
document using the same public identifier, it will use the
precompiled version of the DTD.