3.23

Sezione 3: Autori

Q 3.23: Quali sono i caratteri speciali su XML?

Solo cinque: &lt; (<), &amp; (&), &gt; (>), &quot; (“), e &apos; (‘).

Per il normale testo (non markup), non ci sono caratteri speciali oltre a < e &: assicurati solo che la tua Dichiarazione XML si riferisce al modo corretto di codificare schemi per sistemi di linguaggio e/o scrittura che vuoi usare, e che il tuo computer memorizzi correttamente il file usando questo schema di codifica. Vedi la domanda sui caratteri non Latini per una spiegazione più dettagliata.

Oltre ai caratteri di controllo ASCII invisibili (quelli che non puoi scrivere), tutti gli altri caratteri sono solo normale testo. I simboli di valuta (€, £, $, ƒ, ₨, Ƀ, e altri), tutti i segni di interpunzione (eccetto < e &), e tutte le altre lettere, segni, e simboli in qualsiasi sistema di linguaggio e scrittura sono solo testo (supponendo che abbia la codifica di carattere corretta).

Se la tua tastiera non ti permettesse di scrivere i caratteri che desideri, o se volessi caratteri fuori dai limiti dello schema di codifica che hai scelto, puoi usare una annotazione simbolica chiamata ‘riferimento di entità. I riferimenti di entità possono essere sia numerici,usando i punti di codice Unicodedecimali o esadecimali per qual carattere (ad es. se la tua tastiera non ha un simbolo Euro (€) puoi scrivere &#8364;); o possono essere caratteri, usando un insieme di nomi stabiliti che dichiari nel tuo DTD (ad es. <!ENTITY euro “&#8364;”>) che ti permette poi di utilizzare il nome &euro; nel tuo documento. Se stai usando uno Schema, devi usare la forma numerica per tutti eccetto i cinque sotto dato che gli Schemi non possano creare dichiarazioni di entità di carattere.

Se usi XML senza DTD, allora si presume che le cinque entità di carattere elencate all’inizio di questa domanda siano predichiarate, e puoi usarle senza dichiararle separatamente (infatti, la maggior parte dei software non ti permettono di dichiararle nuovamente):

&lt;

Il carattere minore (<) fa iniziare l’elemento markup (il primo carattere di un tag di apertura o chiusura).

&amp;

Il carattere ampersand (&) fa iniziare l’entità markup (il primo carattere di un riferimento di entità di carattere).

&gt;

Il carattere maggiore (>) conclude un tag di apertura o chiusura.

&quot;

Il carattere virgolette (“) può essere simbolizzato con questo riferimento di entità di carattere quando hai bisogno di incorporare delle virgolette dentro una riga che è già all’interno di virgolette.

&apos;

Il carattere apostrofo o singola virgoletta (‘) può essere simbolizzato con questo riferimento di entità di carattere quando hai bisogno di incorporare una singola virgoletta o un apostrofo dentro una riga che è già all’interno di apostrofi.

Se stai usando un DTD allora devi dichiarare tutte le entità di carattere che ti servono, quindi sarebbe bene dichiarare anche qualsiasi dei cinque sopra descritti che intendi usare. Se stai usando uno Schema, devi usare la forma numerica eccetto per i cinque sopra descritti in quanto gli Schemi non possono creare dichiarazioni di entità di carattere.

Ci sono circostanze speciali in cui puoi usare caratteri speciali come tali, come nelle sezioni CDATA. La maggior parte dei caratteri di controllo sono proibiti in XML: vedi le Specifiche per i dettagli esatti.

Inoltre, non ci sono parole riservate come per il namespace utente di XML: puoi chiamare un elemento element e un attributo attribute e così via nell’esempio (perverso) che segue:

<?xml version="1.0"?>
<!DOCTYPE DOCTYPE SYSTEM "SYSTEM" [
<!ELEMENT DOCTYPE (ELEMENT+)>
<!ATTLIST ELEMENT ATTLIST ENTITY #IMPLIED>
<!NOTATION DOCTYPE SYSTEM "ENTITY">
<!ENTITY NOTATION SYSTEM "ENTITY" NDATA DOCTYPE>
]>
<DOCTYPE>
  <ELEMENT ATTLIST="NOTATION">foo</ELEMENT>
</DOCTYPE>

dove il file SYSTEM contiene la dichiarazione: <!ELEMENT ELEMENT (#PCDATA)> e il file ENTITY non esiste nemmeno ☺

Ci sono parole chiave come DOCTYPE e IMPLIED che sono nomi riservati, ma che sono prefissati da un carattere flag (il carattere Markup Declaration Open o l’Indicatore di Nome Riservato) in modo da non essere confusi con Nomi specifici all’utente.

Leave a Comment

Your email address will not be published. Required fields are marked *