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:

<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>
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).

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