| | "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>
|
Sintassi di un documento XSL
Parola chiave |
Descrizione |
|
Definisce le regole per il tag specificato. La parola chiave match
contiene il nome di un tag che il documento XML deve includere. Esempio1.
|
|
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>
|
Ripete i comandi che seguono per ogni elemento che coincide con nome. Esempio3.
|
|
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.
|
|
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
ESEMPIO 2:
Le seguenti sono tutte espressioni valide:
<xsl:value-of select="libro/autore/@nascita">
<xsl:value-of select="@nascita">
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.
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.
ESEMPIO 5:
<TD><xsl:eval>WhenPublished( )</xsl:eval></TD>
Richiama la funzione che permetterà di visualizzare la data di
pubblicazione del sito.
Sintassi di un file DTD
Regole di Sintassi |
Descrizione |
|
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.
|
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.
|
|
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)>
ESEMPIO 2:
<!ATTLIST autore
sesso CDATA #REQUIRED
nascita CDATA #IMPLIED>
<!ATTLIST editore
città CDATA #FIXED "Verona">
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>
| |
"Le cose importanti non si trovano mai negli
incartamenti"
J. W. Goethe
|