Ho cominciato usando un file XML e un parser come un modo conveniente per memorizzare i miei datiXML, DTD: come rendere l'ordine non è importante
voglio usare DTD per controllare la struttura dei file XML quando arrivano.
Ecco il mio file 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)>
(notare che fileName e FileNumber sono in realtà puramente opzionale)
e
<document>
<level>
<file>group1file01</file>
</level>
<level>
<file>group1file02</file>
<fileName>file 2</fileName>
<fileNumber>0</fileNumber>
</level>
...
in quanto tale, tutto questo funziona bene. (Io uso Eclipse "validare" per provarlo per ora)
tuttavia durante il test ho ottenuto quello che penso sia un errore strano
se faccio
<level>
<levelName>Level 2</levelName>
<levelNumber>0</levelNumber>
<file>group1level02</file>
</level>
cambiando l'ordine delle linee , Eclipse rifiuta di convalidarlo ...
Mi chiedevo se si trattava di un problema con Eclipse o se l'ordine è effettivamente importante.
Se l'ordine è importante, come posso modificare il DTD per farlo funzionare, indipendentemente dall'ordinamento degli elementi?
Non riesco a modificare l'XML perché ho già tutti i file XML e il parser scritto (so che l'ho fatto nel modo sbagliato lol).
hum ... avrei pensato che sarebbe stato più flessibile ... dovrò andare con || perché dovevo fare assunzioni sull'ordine in cui xml è lol lol. grazie per la soluzione –
Questo non è un DTD valido perché non è deterministico. Anche se fosse valido, non permetterebbe agli elementi figli in alcun ordine possibile. – jasso