Si deseas que ambos DTDs compartan el mismo nodo raíz, puedes hacerlo utilizando entidades externas de manera ligeramente diferente. Aquí tienes un ejemplo de cómo lograrlo:
Supongamos que tienes el DTD principal (esquema1.dtd) con la siguiente estructura:
Y también tienes un segundo DTD (esquema2.dtd) que contiene elementos adicionales, pero deseas que ambos DTDs compartan el mismo nodo raíz (PROPERTIES).
1. En el DTD principal (esquema1.dtd), declara una entidad externa que contenga el contenido del DTD secundario (esquema2.dtd). Por ejemplo:
2. Dentro del DTD principal, incluye los elementos del DTD secundario utilizando la entidad externa y envuélvelos en un elemento adicional (por ejemplo, "additional_elements") que actuará como el nuevo nodo raíz. Por ejemplo:
En este ejemplo, hemos incluido los elementos
`elem3` y
`elem4` del DTD secundario dentro del nuevo elemento "additional_elements", que es parte del DTD principal. De esta manera, ambos DTDs comparten el mismo nodo raíz (PROPERTIES) y conservan su estructura jerárquica.
Recuerda que los archivos DTD (esquema1.dtd y esquema2.dtd) deben estar ubicados en la misma carpeta o tener rutas relativas correctas para que las entidades externas se carguen correctamente.
Es importante tener en cuenta que, al utilizar entidades externas de esta manera, debes asegurarte de que la estructura resultante sea válida y cumpla con tus requisitos específicos.
¡Espero que esta solución te sea útil para compartir el mismo nodo raíz en DTDs utilizando entidades externas!