XML

Precedente Home Page Successiva

dolphin.gif (5307 byte)

 

Links
dolphin.xml

"XML è l' ASCII del futuro"

Tim Bray

(collaboratore per la stesura delle specifiche XML 1.0)

"XML si presta a diventare un formato di dati intermedio per la comunicazione tra applicazioni che non possono essere riprogettate per supportare lo stesso formato dei dati"

James Utzschneider

 

Regole di sintassi: XML vs HTML

Regole di Sintassi

Descrizione

Virgolette richieste
Il valore di tutti gli attributi deve essere racchiuso tra singole o doppie virgolette, non necessario in HTML: <IMG src="immagine.gif"></IMG>
Bilanciamento dei tags
In XML tutti i tags devono avere un tag di chiusura:<IMG src="immagine.gif"></IMG>. Questo non è sempre necessario in HTML: <IMG src=immagine.gif>
Tags vuoti
Con XML non c'è distinzione tra ags vuoti e non vuoti il che significa che tutti i tags devono essere ben bilanciati. Per esempio l'uso corrett0 del separatore orizzontale è: <BODY>Benvenuti sul mio sito web <HR></HR></BODY>
Tag di chiusura
Invece di duplicare i tag con uno slash di prefisso "/" è possibile usare un singolo tag che termina con uno slash per chiudere i tag vuoti. Espressioni corrette ed equivalenti sono:
<HR></HR>
<HR/>
Tags innestati
Diversamente da HTML, XML non accetta tags innestati i cui marcatori di chiusura si sovrappongono. <IMG src=immagine.gif><SPAN>L'immagine. </IMG></SPAN>
Caratteri speciali
I caratteri speciali devono essere sempre rimpiazzati con la loro sequenza di escape come & " < > £ $ e le vocali accentate.
Case-sensitive
In XML i nomi det tag sono case-sensitive mentre questo non succede in HTML. Errore in XML <HTML> : </html>
Torna all'inizio

Sintassi di un documento XSL

Parola chiave

Descrizione

<xsl:template match=nome>
Definisce le regole per il tag specificato. La parola chiave match contiene il nome di un tag che il documento XML deve includere. Esempio1.
<xsl:value-of select=nome>
Restituisce il valore dell'attributo tag specificato o del testo associato al nodo. Il nome dell'attributo deve essere preceduto da @, ed è possibile usare la notazione a directory per indicare i nodi figli. Il comando funziona più o meno come una macro che espande il nodo runtime. Esempio2.
<xsl:for-each select=nome>
</xsl:for-each>
Ripete i comandi che seguono per ogni elemento che coincide con nome. Esempio3.
<xsl:apply-templates match=nome>
Applica tutti i possibili templates all'elemento che coincide con la descrizione. In generale, un singolo tag può essere processato da più di un template. Esempio4.
<xsl:eval>FunzNome( )></xsl:eval>
Valuta una funzione VBScript o JavaScript. Il risultato della funzione rimpiazzerà il comando. Esempio5.

ESEMPIO 1:

<xsl:template match="autore">
<B><xsl:value-of /></B>,
<xsl:value-of select="@nascita" />,
<I><xsl:value-of select="@sesso" /></I>
<br/>
</xsl:template>
Quando viene applicato il template, ogni tag autore all'interno del documento XML è tradotto seguendo le regole. Ad esempio la riga XML:
<autore sesso="maschio" nascita="1974"> Lucio Allegri </autore>
Sarà così visualizzato:

Lucio Allegri, 1974, maschio

Torna all'inizio
Torna alla sintassi XSL

ESEMPIO 2:

Le seguenti sono tutte espressioni valide:
<xsl: value-of> (il nodo attuale)
<xsl:value-of select="libro/autore/@nascita">
<xsl:value-of select="@nascita">
Torna all'inizio
Torna alla sintassi XSL

ESEMPIO 3:

Il comando è usato per applicare le regole a tutti i tags di un certo tipo:
<xsl:for-each select=libro/autore">
<xsl:value-of />
<xsl:eval>AddComma( )</xsl:eval>
</xsl:for-each>
Questo scrive i nomi di tutti gli autori ognuno separato da una virgola.
Torna all'inizio
Torna alla sintassi XSL

ESEMPIO 4:

<xsl:for-each select="libro">
<xsl:apply-templates select="autore"/>
<HR />
<xsl:apply-templates select="recensione"/>
</xsl:for-each>
Questo mostra i dettagli degli autori e la recensione per ogni libro contenuto nel file XML, entrambi formattati in base al proprio template.
Torna all'inizio
Torna alla sintassi XSL

ESEMPIO 5:

<TD><xsl:eval>WhenPublished( )</xsl:eval></TD>
Richiama la funzione che permetterà di visualizzare la data di pubblicazione del sito.
Torna all'inizio
Torna alla sintassi XSL

Sintassi di un file DTD

Regole di Sintassi

Descrizione

!ELEMENT tag (contenuto)
Definisce un tag che farà parte del vocabolario. Esempio1. I tags figli devono apparire nell'ordine dichiarato e possono essere qualificati con i seguenti caratteri di suffisso:
+: il tag può essere ripetuto ma deve comparire almeno una volta.
*: il tag può comparire zero o più volte.
?: il tag è opzionale.
!ATTLIST tag
attributo1 type #valore
...
attributo n type #valore
Definisce la lista degli attributi per il tag specificato. E' possibile dichiarare attributi multipli ognuno con il suo tipo e valore. Un attributo può essere di tipo CDATA o un elemento di una collezione. Il valore può essere FIXED, IMPLIED o REQUIRED. Esempio2.
!ENTITY % nome "valore"
Un'entità e l'equivalente XML di una macro. Usando la parola chiave ENTITY è possibile definire un nome ed il parser lo espanderà al valore dichiarato nel testo. Esempio3.
CDATA
Denota dei dati carattere "grezzi" che il parser non deve considerare.
PCDATA
Elemento di testo non avente figli o attributi che contengono dati carattere analizzati dal parser.
#IMPLIED
#REQUIRED
#FIXED
Sono dei qualificatori degli attributi dei tag: #FIXED assegna un valore a livello DTD che non può essere modificato dai dati XML. #IMPLIED significa che il valore è settato prendendo i dati XML. #REQUIRED significa che il campo non è opzionale.

ESEMPIO 1:

Definiamo un libro come tag che deve contenere i tags figli autore ed editore:
<!ELEMENT libro (autore, editore)>
Torna all'inizio
Torna alla sintassi DTD

ESEMPIO 2:

<!ATTLIST autore
sesso CDATA #REQUIRED
nascita CDATA #IMPLIED>
<!ATTLIST editore
città CDATA #FIXED "Verona">
Torna all'inizio
Torna alla sintassi DTD

ESEMPIO 3:

<!ENTITY  % Sesso "maschio | femmina">
Per usare le entità nel documento DTD è richiesta la seguente sintassi: il nome dell'entità preceduta dal carattere "%" e seguita dal carattere ";" ad esempio:
<!ATTLIST autore 
sesso (%Sesso;) #REQUIRED>
Torna all'inizio
Torna alla sintassi DTD

dolphin.gif (5307 byte)

 
"Le cose importanti non si trovano mai negli incartamenti"
J. W. Goethe

 

Inviare a dolphin group un messaggio di posta elettronica contenente domande o commenti su questo sito Web.
Aggiornato il 14-01-00.