Pregunta

Uso de la DTD validador aquí , me ha informado de que el siguiente DTD no es válido.

<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H         (%text;)+>
<!ELEMENT L         (#PCDATA)>

El mensaje de error es: " '' A '(' se requiere carácter o un tipo de elemento dentro de la declaración de tipo de elemento" H en la línea 2, la columna 22

Puede alguien por favor señalar por qué no es válido? ¿Y cómo puedo hacer que sea válida? El mensaje de error no es precisamente muy agradable para mí. Gracias.

¿Fue útil?

Solución

No se puede imponer que un elemento con contenido mixto debe tener al menos un nodo hijo. Su DTD se convierte

<!ELEMENT H         ((#PCDATA|L)*)+>

cuando se expande la entidad. La única forma autorizada para los elementos con contenido mixto es

(#PCDATA | A | B | C)*

donde A, B y C son posibles elementos secundarios. #PCDATA debe ser la primera elección y el conjunto se debe permitir que repetir veces 0-infinito, se requiere es decir, el asterisco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top