Empecé utilizando un archivo XML y un analizador como una forma conveniente para almacenar los datos de miXML, DTD: cómo hacer que el orden no es importante
quiero usar DTD para comprobar la estructura de los archivos XML cuando ellos llegan.
Aquí está mi archivo DTD
< ?xml version="1.0" encoding="UTF-8"?>
< !ELEMENT document (level*)>
< !ELEMENT level (file,filelName?,fileNumber?)>
< !ELEMENT file (#PCDATA)>
< !ELEMENT filelName (#PCDATA)>
< !ELEMENT fileNumber (#PCDATA)>
(tenga en cuenta que FileNumber nombre de archivo y en realidad son puramente opcional)
y
<document>
<level>
<file>group1file01</file>
</level>
<level>
<file>group1file02</file>
<fileName>file 2</fileName>
<fileNumber>0</fileNumber>
</level>
...
como tal, todo esto funciona bien. (Utilizo eclipse "validar" la opción para poner a prueba todo por ahora)
Sin embargo, mientras que las pruebas que tengo lo que creo que es un error extraño
si hago
<level>
<levelName>Level 2</levelName>
<levelNumber>0</levelNumber>
<file>group1level02</file>
</level>
cambiar el orden de las líneas , Eclipse se niega a validarlo ...
Me preguntaba si esto era un problema con Eclipse o si el pedido es realmente importante.
Si el orden es importante, ¿cómo puedo cambiar la DTD para que funcione sin importar el orden de los elementos?
Realmente no puedo cambiar el XML porque ya tengo todos los archivos XML y el analizador escrito (sé que lo hice al revés, lol).
hum ... Hubiera pensado que sería más flexible ... Tendré que irme con || porque tuve que hacer suposiciones sobre el orden en que se lee el xml lol. gracias por la solución –
Esta no es una DTD válida porque no es determinista. Incluso si fuera válido, no permitiría los elementos secundarios en ningún orden posible. – jasso