PDA

View Full Version : problema con XML e DTD


Herod2k
11-12-2006, 18:08
Ciao a tutti,

ho un problemino, a cui non ho soluzione, qualcuno mi da una mano?

poniamo il seguente codice XML

<LIBRO>ZANNA BIANCA
<CODICE-ISBN>1-11-1111-11-11</CODICE-ISBN>
</LIBRO>

come lo dichiaro nel DTD?

se scrivo
<!ENTITY LIBRO (#PCDATA, CODICE-ISBN)>

il validatore mi dice che il DTD non è corretto ma non capisco perché

Qualcuno mi sa illuminare?

Grazie

H2K

Herod2k
11-12-2006, 18:38
Visto che ci siete, mi spiegate anche perché questa entità paramentrica genera errore?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE LIBRO [
<!ENTITY % pc "#PCDATA">
<!ELEMENT LIBRO (CODICE)>
<!ELEMENT CODICE (%pc;)>
]>

<LIBRO>
<CODICE>numero</CODICE>
</LIBRO>

Grazie mille

H2K

k0nt3
11-12-2006, 18:46
Ciao a tutti,

ho un problemino, a cui non ho soluzione, qualcuno mi da una mano?

poniamo il seguente codice XML

<LIBRO>ZANNA BIANCA
<CODICE-ISBN>1-11-1111-11-11</CODICE-ISBN>
</LIBRO>

come lo dichiaro nel DTD?

se scrivo
<!ENTITY LIBRO (#PCDATA, CODICE-ISBN)>

il validatore mi dice che il DTD non è corretto ma non capisco perché

Qualcuno mi sa illuminare?

Grazie

H2K
prima di tutto non ci vuole ELEMENT al posto di ENTITY?
poi mi sa che puoi mettere solo un OR tra #PCDATA e CODICE-ISBN, e cioè:
<!ELEMENT LIBRO (#PCDATA | CODICE-ISBN)>

è un pò che non metto mano a queste cose comunque.. potrei fare errori :D

ps. infatti non ricordo cosa sono le entita.. :stordita: indipendentemente da ciò dovresti metterli in OR lo stesso.. è una limitazione del DTD

Herod2k
13-12-2006, 11:52
<!ELEMENT LIBRO (#PCDATA | CODICE-ISBN)>
cosi funziona, ma non è quello che volevo io, ho capito anche che scrivendo
<!ELEMENT LIBRO ANY>
funziona, ma non è proprio pulitissimo come sistema perché cosi mi passa tutto e non mi evidenzia gli elementi che non dovrebbero esserci.

k0nt3
13-12-2006, 12:14
<!ELEMENT LIBRO (#PCDATA | CODICE-ISBN)>
cosi funziona, ma non è quello che volevo io, ho capito anche che scrivendo
<!ELEMENT LIBRO ANY>
funziona, ma non è proprio pulitissimo come sistema perché cosi mi passa tutto e non mi evidenzia gli elementi che non dovrebbero esserci.
con il DTD non si può fare tutto, per quello c'è XSD, ma c'è da dire che XSD è complicatissimo :stordita:
puoi sempre controllare la validità del documento direttamente nell'applicazione (potrebbe essere facile o no a seconda del linguaggio che usi e librerie disponibili)