¿Cómo puedo forzar a un analizador SAX (específicamente, Xerces en Java) a usar un DTD al analizar un documento sin tener ningún doctype en el documento de entrada? ¿Esto es posible?¿Cómo puedo forzar a un analizador SAX a usar un DTD si no se especifica uno en el archivo de entrada?
Éstos son algunos más detalles de mi escenario:
Tenemos un montón de documentos XML que se ajusten a la misma DTD que se generan por varios sistemas diferentes (ninguno de los cuales puedo cambiar). Algunos de estos sistemas agregan un tipo de documento a sus documentos de salida, otros no. Algunos usan entidades de caracteres con nombre, otros no. Algunos usan entidades de caracteres nombrados sin declarar un doctype. Sé que no es kosher, pero es con lo que tengo que trabajar.
Estoy trabajando en el sistema que necesita analizar estos archivos en Java. Actualmente, maneja los casos anteriores leyendo por primera vez en el documento XML como una secuencia, intentando detectar si tiene un tipo de documento definido y agregando una declaración de tipo de documento si uno no está presente. El problema es que este código tiene errores, y me gustaría reemplazarlo con algo más limpio.
Los archivos son grandes, por lo que No puedo usar una solución DOM. También estoy tratando de resolver las entidades de caracteres, por lo que no ayuda a a usar un esquema XML.
Si tiene una solución, ¿podría publicarla directamente en lugar de enlazarla? No hace mucho Stack Overflow si en el futuro hay una solución correcta con un enlace muerto.