Premetto che sono alle prime esperienze con xml e ammetto che, almeno per ora, non capisco perchè ci si debba complicare la vita con xml quando un database e l'sql risolverebbero in maniera 1000 volte piu efficace questo tipo di problemi. Purtroppo però devo sostenere un esame in università e quindi mi tocca!
Bene.
Ho scritto un file xml tramite la Sun One e poi ho fatto generare automaticamente il DTD.
il file xml è il seguente:
Ok, come potete vedere nei nodi STRUTTURA c'è l'attributo id_strutt che io l'ho pensato come chiave primaria per poi utilizzare quel valore come chiave importata sui nodi EVENTO (i quali a loro volta avranno anche una loro chiave interna id_evento).<Organizzazione>
<Luoghi>
<Stuttura id_strutt="1">
<Nome>Stadio</Nome>
<Indirizzo>Via.....</Indirizzo>
........
........
</Struttura>
<Stuttura id_strutt="2">
<Nome>Teatro</Nome>
<Indirizzo>Via.....</Indirizzo>
........
........
</Struttura>
<Stuttura id_strutt="3">
<Nome>Palazzetto</Nome>
<Indirizzo>Via.....</Indirizzo>
........
........
</Struttura>
</Luoghi>
<Eventi>
<Evento id_evento="1" id_strutt="2">
<Artista>Pippo</Artista>
<Data>14/05/2004</Artista>
........
........
</Evento>
<Evento id_evento="2" id_strutt="2">
<Artista>Pluto</Artista>
<Data>20/05/2004</Artista>
........
........
</Evento>
<Evento id_evento="3" id_strutt="1">
<Artista>Topolino</Artista>
<Data>10/06/2004</Artista>
........
........
</Evento>
</Eventi>
</Organizzazione>
il file DTD che viene generato in automatico invece riconosce queste chiavi come campi CDATA #IMPLIED. Cosi io non ho fatto altro che modificare questo valore e scrivere invece ID #REQUIRED nelle due chiavi primarie e IDREF #REQUIRED nella chiave importata.
Il problema però viene quando faccio la validazione del XML perchè viene generato un errore:
"Attribute value "1" of type ID must be a name." per ogni chiave primaria utilizzata e l'errore:
"Attribute value "1" of type IDREF must be a name."
ovviamente i numeri "1" che ho indicato sono i valori di chiave e quindi ogni riga di errore riporta un valore diverso.
mi sapete dare una mano e magari farmi un po piu di chiarezza sull'utilizzo delle chiavi primarie e importate in XML?
grazie mille!
Luca