Possibili errori di traduzione possono essere presenti in questo documento. Traduzionne a cura di: Nick Venturelli 23/3/2004 Solo il documento originale in inglese puo essere considerato ufficiale: http://www.w3.org/TR/2004/REC-xml-names11-20040204 |
Fare riferimento a l'errata di questo documento, che può includere alcune correzioni normative.
Vedere traduzioni.
Il documento é disponibile in questi formati non normativi: XML.
Lo spazio dei nomi (namespaces) XML rappresenta un metodo semplice per la qualificazione dei nomi degli elementi e attributi utilizzati nei documenti XML, associandoli con dei spazi dei nomi identificati con indirrizzi IRI.
Questa sezione descrive lo stato di questo documento al momento della sua pubblicazione. Altri documenti possono sostituire questo documento. L'ultima versione di questa serie di documenti si trova al W3C. Un elenco delle Raccomandazioni attuali del W3C e di altri documenti tecnici si trova a l' indice dei documenti tecnici del W3C all'indirizzo http://www.w3.org/TR/.
Questo Documento e una Raccomandazione del W3C. È stato rivisto dai membri del W3C e da altre parti interessate ed è stato approvato dal Direttore come una raccomdazione del W3C. E' un documento stabile che può essere usato come materiale di riferimento o citato come riferimento normativo da un altro documento. Il ruolo del W3C nel fare questa Raccomandazione è quello di richiamare l'attenzione alla specificazione e di promuovere la sua ampia diffusione. Questo aumenta la funzionalità e l'interoperabilità del Web.
Questo documento è un prodotto dell'attività XML del W3C. La versione inglese di questo documento è la sola versione normativa. Tuttavia, per le traduzioni di questo documento riferirsi a http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-names11.
La documentazione degli eventuali diritti di proprietà intellettuale relativa a questa raccomandazione si trova alla pagina publica IPR disclosure page del gruppo di lavoro.
Le realizzazioni conosciute sono documentate nel rapporto Namespaces 1.1 implementation report. Un insieme di prova è disponibile via la pagina XML Test Suite .
Per favore riportate gli errori presente in questo documento a xml-names-editor@w3.org; Gli archivi pubblici sono disponibili. La lista degli errori in questo documento è disponibile a http://www.w3.org/XML/2004/xml-names11-errata(solo in inglese).
1 Motivazione e Sommario
1.1 Nota sulla Notazione e l’uso
2 Spazio dei Nomi XML
2.1 Concetti di Base
2.2 L'utilizzo dei Indirizzi IRI come Nomi del Spazio Dei Nomi
2.3 Paragone dei indirizzi IRI
3 La Dichiarazione degli Spazi dei Nomi
4 Nomi Qualificati
5 L'uso dei Nomi Qualificati
6 L'applicazione del spazio dei nomi agli elementi e attributi
6.1 La Portata del spazio dei nomi
6.2 Lo spazio dei nomi per default
6.3 Unicità degli Attributi
7 Conformit dei Documenti
8 La Conformità dei Processori
9 Identificatori di Risorse Internazionalizzati (IRIs)
A Riferimenti Normativi
B Altri riferimenti (Non-Normativi)
C La struttura interna del spazio dei nomi XML (Non-Normativi)
D I cambiamenti dalla versione 1.0 (Non-Normativi)
E Ringraziamenti (Non-Normativi)
Prevediamo applicazioni dell linguagio XML per il quale un solo documento XML può contenere gli elementi e gli attributi (qui chiamato “vocabolario di markup”) definiti ed utilizzati da multipli moduli software. Una motivazione per questo è la modularità: se tale vocabolario di markup esiste che è ben capito e per cui del software utile è disponibile, è meglio riutilizzare questo vocabolario di markup piuttosto che di reinventarlo.
I documenti di questo tipo, che contengono molti vocabolari di markup, creano problemi di riconoscimento e di collisione. I moduli di software devono potere riconoscere gli elementi e gli attributi che devono trattare, anche di fronte agli “scontri" che accadono quando il markup destinato ad un certo altro software usa lo stesso nome d'elemento o d'attributo.
Queste considerazioni richiedono che le strutture di documenti dovrebbero avere dei nomi construiti per evitare scontri fra i nomi provenendo da differenti vocabolari di markup. Questa specifica descrive un meccanismo, spazio dei nomi XML, che compie questo assegnando dei nomi espansi agli elementi ed agli attributi.
Dove messo in RISALTO, in questo modo le parole, DEVE, NON DEVE, RICHIESTO, DOVREBBE, Non DOVREBBE, Può in questo documento devono essere interpretati come descritto nel [Keywords].
Notare che molti non-terminali non sono definiti nelle produzioni di questa specifica ma nella specificazione del XML [XML]. Quando i non-terminali definiti qui hanno gli stessi nomi dei non-terminali definiti nella specificazione XML, le produzioni fatte qui in ogni caso corrispondono a un sottoinsieme delle stringe corrispondenti della specificazione XML.
Nelle produzioni di questo documento, il NSC
è una "Namespace Constraint" (limitazione
del spazio dei nomi), una delle regole che i documenti conformando a questa specifica
DEVONO
seguire.
[Definizione : Un spazio dei nomi XML è identificato da un indirizzo IRI; i nomi d'elementi e d'attributi si possono mettere in un spazio dei nomi XML usando meccanismi descritti in questa specificazione. ]
[Definizione: Un nome espanso è un paio consistendo in un nome del spazio dei nomi ed un nome locale. ] [Definizione: Per un nome N in un spazio dei nomi identificato da un indirizzo IRI I, il nome del spazio dei nomi è I. Per un nome N che non è in un spazio dei nomi il nome del spazio dei nomi non ha valore. ] [Definizione: In ogni luogo il nome locale è N. ] È questa combinazione tra lo spazio dei nomi IRI gestito universalmente ed i nomi locali del vocabolario che è efficace ad evitare i scontri di nomi.
Gli indirizzi IRI possono contenere caratteri non ammessi per i nomi e sono spesso inconvenientemente lunghi, per cui non si utilizzano direttamente i nomi espansi per nominare gli elementi e gli attributi nei documenti XML. Invece i nomi qualificati sono usati. [Definizione : Un nome qualificato è un nome soggetto all'interpretazione del spazio dei nomi. ] Nei documenti conformi a questa specifica, i nomi d'elementi e d'attributi appaiono come nomi qualificati. Sintatticamente, sono sia nomi con prefisso sia nomi sensa prefisso. Una sintassi di dichiarazione basata a partire dai attributi è fornita per legare i prefissi ai nomi del spazio dei nomi e per legare un spazio dei nomi di default che è valido per nomi d’elementi sensa prefisso; queste dichiarazioni si limitano agli elementi sui quali appaiono, in modo che si possano legare in vari modi nelle parti diverse di un documento. I processori conformi a questa specifica DEVONO riconoscere ed agire su queste dichiarazioni e prefissi.
La stringa vuota, benchè sia un indirizzo IRI legale, non può essere usata come nome del spazio dei nomi.
L'uso di indirizzi IRI relativi, compreso gli appelli al documento stesso, è sconsiglato nelle dichiarazioni del spazio dei nomi.
Nota:
Sconsigliare gli indirizzi IRI relativi è stato deciso da una scheda elettorale plenaria del W3C XML [Sconsiglio dei indirizzi IRI relativi]. Inoltre dichiara che “le specifiche successive quali DOM, XPath, ecc. Non definiranno alcun'interpretazione”.
Gli indirizzi IRI, che identificano lo spazio dei nomi sono paragonati per determinare se un nome appartiene a un deto spazio dei nomi, e se due nomi appartengono allo stesso spazio dei nomi. [Definizione: I due indirizzi IRI sono trattati come delle stringhe e sono identici se e soltanto se le stringhe sono identiche, cioè, se sono la stessa sequenza di caratteri. ] Il paragone è sensibile ai caratteri minuscoli/maiuscoli, e nessun %-escaping è fatto o sfatto.
Una conseguenza è che gli indirizzi IRI che non sono identici in questo senso possono risolversi alla stessa risorsa. Per esempio, gli indirizzi IRI che differiscono soltanto dai loro caratteri minuscoli/maiuscoli o dal %-escaping, o coloro che sono in delle entità esterne che hanno indirizzi URI di base diversi (ma notate che gli indirizzi IRI relativi sono sconsigliati come nomi del spazio dei nomi).
In una dichiarazione di un spazio dei nomi, l'indirizzo IRI è il valore normalizzato dell'attributo, allora la sostituzione dei caratteri XML e degli appelli d'entità è già stato fatto prima di qualunque paragone.
Esempi:
Gli indirizzi IRI seguenti sono diversi per quanto riguarda l'identificazione degli spazi dei nomi, poiché differiscono nei caratteri minuscoli/maiuscoli:
http://www.example.org/wine
http://www.Example.org/wine
http://www.example.org/Wine
Anche Gli indirizzi IRI seguenti sono diversi nel scopo di identificare i spazi dei nomi:
http://www.example.org/rosé
http://www.example.org/ros%c3%a9
http://www.example.org/ros%c3%A9
http://www.example.org/ros%C3%a9
http://www.example.org/ros%C3%A9
E anche questi:
http://www.example.org/~wilbur
http://www.example.org/%7ewilbur
http://www.example.org/%7Ewilbur
Se l'entità eacute è definito come essendo é,
i tag iniziali seguenti contengono tutte delle dichiarazioni del spazio dei nomi che legano il
prefisso p
allo stesso indirizzo IRI, http://example.org/rosé
.
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
<p:foo xmlns:p="http://example.org/rosé">
A causa del rischio di confusione tra indirizzi IRI che sarebbero equivalenti se dereferenziati, l’uso del %-escaping nei nomi per il spazio dei nomi è fortemente scoraggiato.
[Definizione: Uno spazio dei nomi (o, più precisamente, un legato ad un spazio dei nomi) è dichiarato tramite una famiglia di attributi riservati. Il nome di un tal attributo deve essere xmlns o iniziare con xmlns:. Questi attributi, come tutti gli altri attributi di XML, possono essere forniti direttamente o da default. ]
[1] | NSAttName | ::= | PrefixedAttName | |
| DefaultAttName | ||||
[2] | PrefixedAttName | ::= | 'xmlns:' NCName | [NSC: Prefissi e Nomi del Spazio Dei Nomi Riservati] |
[3] | DefaultAttName | ::= | 'xmlns' | |
/* Un Nome di XML, sensa il ":" */ | ||||
[5] | NCNameChar | ::= | NameChar
- ':' | |
[5a] | NCNameStartChar | ::= | NameStartChar
- ':' |
Il valore normalizzato DEVE essere un indirizzo IRI — il nome del spazio dei nomi che identifica il spazio dei nomi — o una stringa vuota. Il nome del spazio dei nomi, per servire il suo scopo inteso DOVREBBE avere le caratteristiche dell'unicità e della persistenza. Non è un obiettivo que sia direttamente utilizzabile per il ricupero di uno schema (se uno esiste). I Nomi di Risorsa Uniforme (Uniform Resource Name) [RFC2141] è un esempio di una sintassi che è disegnata con questi obiettivi a mente. Comunque, dovrebbe essere notato che gli URLs ordinari possono essere gestiti in tale maniera per realizzare questi stessi obiettivi.
[Definizione: Se il nome del attributo corrisponde al PrefixedAttName, allora il NCName dà il prefisso del spazio dei nomi, usato per associare i nomi dei attributi e dei elementi col nome del spazio dei nomi nel valore del attributo entro il limite dell'elemento a cui la dichiarazione è fissata.]
[Definizione: Se il nome del attributo corrisponde al DefaultAttName, allora il nome del spazio dei nomi nel valore dell'attributo è quello del defualt spazio dei nomi entro il limite dell'elemento a cui la dichiarazione è fissata.] Il defualt spazio dei nomi e l’annullamento di dichiarazioni sono discussi in 6 'applicazione del spazio dei nomi agli elementi e attributi.
Un esempio di dichiarazione di spazio dei nomi che associa il prefisso spazio dei
nomi edi con il nome del spazio dei nomi
http://ecommerce.example.org/schema
:
<x xmlns:edi='http://ecommerce.example.org/schema'> <!-- il prefisso "edi" è legato a http://ecommerce.example.org/schema per l'elemento "x" ed il suo contenuto --> </x>
Limitazione del spazio dei nomi (Namespace constraint): Prefissi e nomi del spazio dei nomi riservati
Il prefisso xml è per definizione legato al nome del spazio dei nomi
http://www.w3.org/XML/1998/namespace
. Si
PUÒ,
dichiararlo, ma non
è obbligatorio, e
NON SI DEVE
eliminarne la dichiarazione o legarlo a qualunque altro nome del spazio dei nomi. Altri prefissi
NON DEVONO
essere legati a questo nome del spazio dei nomi.
Il prefisso xmlns è utilizzato soltanto per dichiarare le legature agli
spazi dei nomi ed è legato per definizione al nome del spazio dei nomi
http://www.w3.org/2000/xmlns/
.
NON SI DEVE
dichiararlo o eliminarne la dichiarazione. Altri prefissi
NON DEVONO
essere legati a questo nome del spazio dei nomi.
Tutti gli altri prefissi che cominciano con la sequenza delle tre lettere x, m, l, in ovunque combinazione dei caratteri minuscoli/maiuscoli, sono riservati. Ciò significa che:
gli utenti NON DOVREBBERO usarli tranne come definiti dalle specifiche ulteriori
i processori NON DEVONO trattarli come dei errori irrimediabili (fatal errors).
Nonostante non sono loro stessi riservati, è sconsigliabile usare nomi prefissi di cui la parte locale comincia con le lettere x, m, l, in ovunque combinazione dei caratteri minuscoli/maiuscoli, poiché questi nomi sarebbero riservati se fossero utilizzati senza prefisso.
Nei documenti XML conformi a questa specifica, alcuni nomi (delle strutture che corrispondono al Nome non-terminale) DEVONO essere dati come nomi qualificati, definiti come segue:
[6] | QName | ::= | Nome con Prefisso |
| Nome sensa Prefisso | |||
[6a] | PrefixedName | ::= |
Prefisso ':' Parte Locale
|
[6b] | UnprefixedName | ::= |
Parte Locale
|
[7] | Prefix | ::= | NCName |
[8] | LocalPart | ::= | NCName |
Il Prefisso fornisce la parte prefisso del spazio dei nomi del nome qualificato e DEVE essere associato ad un indirizzo IRI di spazio dei nomi in una dichiarazione di spazio dei nomi. [Definizione: La ParteLocale fornisce la parte locale del nome qualificato.]
Notare che il prefisso funziona soltanto come un parametro di sostituzione per un nome di spazio dei nomi. Le applicazioni DOVREBBERO utilizzare il nome del spazio dei nomi, e non il prefisso, nella costruzione dei nomi di cui lo scopo estende oltre il documneto contenitore.
Nei documenti XML conformi a questa specifica, i nomi d'elementi sono dati come nomi qualificati, come segue:
[9] | STag | ::= | '<' QName
(S
Attribute)*
S? '>'
| [NSC: Prefisso Dichiarato] |
[10] | ETag | ::= | '</' QName
S? '>' | [NSC: Prefisso Dichiarato] |
[11] | EmptyElemTag | ::= | '<' QName
(S
Attribute)*
S? '/>' | [NSC: Prefisso Dichiarato] |
Un esempio di un nome qualificato che serve da nome di elemento:
<!-- il spazio dei nomi dell’elemento 'price' è http://ecommerce.example.org/schema --> <edi:price xmlns:edi='http://ecommerce.example.org/schema' units='Euro'>32.18</edi:price>
Gli attributi sono sia dichiarazioni di spazio dei nomi o i loro nomi sono dati come nomi qualificati:
[12] | Attribute | ::= | NSAttName
Eq
AttValue | |
| QName Eq
AttValue | [NSC: Prefisso dichiarato] |
Un esempio di nome qualificato che serve come nome d'attributo:
<x xmlns:edi='http://ecommerce.example.org/schema'> <!-- il spazio dei nomi dell'attributo 'taxclass' è http://ecommerce.example.org/schema --> <lineItem edi:taxClass="exempt">Baby food</lineItem> </x>
Limitazione del spazio dei nomi: Prefisso Dichiarato
Il prefisso del spazio dei nomi, a meno che si tratti di xml
o di xmlns
,
DEVE
essere stato dichiarato in un
attributo di dichiarazione del spazio dei nomi
sia nel tag iniziale dell’elemento in cui il
prefisso è usato o in un elemento antenato (cioè un elemento nel qual
contenuto accade il
markup prefisso). Inoltre, il valore dell'attributo nella dichiarazione la più interna
NON DEVE
essere una stringa vuota.
Questa Limitazione può condurre alle difficoltà operazionali nel caso dove l’attributo di dichiarazione del spazio dei nomi è fornito, non direttamente nell'entità del documento, XML, ma via un attributo di default in un'entità esterna. Tali dichiarazioni possono non essere lette da un software basato su un processore XML che non convalida. Molte applicazioni XML, presumibilmente comprese quelle sensibili al spazio dei nomi, non richiedono processori che convalidano. Se il funzionamento corretto con tali applicazioni è richiesto, le dichiarazioni del spazio dei nomi DEVONO essere fornite sia direttamente sia via attributi di defualt dichiarati nel sottoinsieme interno del DTD.
I nomi degli elementi e degli attributi sono anche dati come nomi qualificati quando appaiono in dichiarazioni nel DTD:
[13] | doctypedecl | ::= | '<!DOCTYPE' S
QName (S
ExternalID)?
S? ('['
(markupdecl
| PEReference
| S)*
']'
S?)? '>' |
[14] | elementdecl | ::= | '<!ELEMENT' S
QName
S
contentspec
S? '>' |
[15] | cp | ::= | (QName
| choice
| seq)
('?' | '*' | '+')? |
[16] | Mixed | ::= | '(' S?
'#PCDATA'
(S?
'|'
S?
QName)*
S?
')*' |
| '(' S? '#PCDATA' S? ')'
| |||
[17] | AttlistDecl | ::= | '<!ATTLIST' S
QName
AttDef*
S? '>' |
[18] | AttDef | ::= | S
(QName | NSAttName)
S AttType
S DefaultDecl |
Notare che la convalida fondata sulle DTD non
tiene conto degli spazi dei nomi nel senso seguente: un DTD limita gli elementi
ed attributi che possono apparire in un documento dai loro nomi non
interpretati, non dalle (spazio dei nomi, nome locale) paia. Per convalidare un
documento che usa il spazio dei nomi contro un DTD, gli stessi prefissi devono
essere usati nel DTD come nell'istanza. Una DTD può tuttavia limitare
indirettamente il spazio dei nomi in un documetno valido dando valori fissi #FIXED
agli attributi che dichiarano gli spazi dei nomi.
La portata di una dichiarazione del spazio dei nomi che dichiara un prefisso si estende dall'inizio del tag iniziale nel quale appare fino alla fine del tag finale corrispondente, a parte la portata di qualunque dichiarazioni interne con la stessa parte di NSAttName. Nel caso di un tag vuoto, lo scopo è il tag sé stesso
Una tale dichiarazione del spazio dei nomi si applica a tutti i nomi d'elementi e d'attributi entro la sua portata, il cui prefisso corrisponde a quello precisato nella dichiarazione.
Il nome espanso che corrisponde ad un nome d'elemento o d'attributo prefisso, ha l'indirizzo IRI al quale prefisso è legato, come il suo nome del spazio dei nomi, e la parte locale come il suo nome locale.
<?xml version="1.1"?> <html:html xmlns:html='http://www.w3.org/1999/xhtml'> <html:head><html:title>Frobnostication</html:title></html:head> <html:body><html:p>Mosso <html:a href='http://frob.example.com'>qui.</html:a></html:p></html:body> </html:html>
Si possono dichiarare molti prefissi del spazio dei nomi come attributi di un solo elemento, come lo mostra quest'esempio:
<?xml version="1.1"?>
<!-- i due prefissi del spazio dei nomi sono disponibili ovunque -->
<bk:book xmlns:bk='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<bk:title>Cheaper by the Dozen</bk:title>
<isbn:number>1568491379</isbn:number>
</bk:book>
Il valore di un attributo nella dichiarazione del spazio dei nomi per un prefisso PUÒ essere vuoto. Ciò ha per effetto, nella portata della dichiarazione, di eliminare ogni associazione del prefisso ad un nome del spazio dei nomi. Dichiarazioni ulteriori POSSONO re-dichiare il prefisso di nuovo:
<?xml version="1.1"?>
<x xmlns:n1="http://www.w3.org">
<n1:a/> <!-- legale; il prefisso n1 è legato a http://www.w3.org -->
<x xmlns:n1="">
<n1:a/> <!-- illegale; qui il prefisso n1 non è legato -->
<x xmlns:n1="http://www.w3.org">
<n1:a/> <!-- legale; il prefisso n1 è legato di nuovo -->
</x>
</x>
</x>
La portata della dichiarazione di uno spazio dei nomi per defualt si estende dall'inizio del tag iniziale, nel quale appare, fino alla fine del tag finale corrispondente, all'infuori della portata di qualsiasi dichiarazioni del spazio dei nomi da default interne. Nel caso di un tag vuoto, lo scopo è il tag sé stesso.
Una dichiarazione del spazio dei nomi da defualt è applicata a tutti i nomi d'elemento sensa prefisso entro la sua portata. Le dichiarazioni del spazio dei nomi da defualt non si applicano direttamente ai nomi d'attributi; l'interpretazione degli attributi sensa prefisso è determinata dall'elemento sul quale appaiono.
Se c’è una dichiarazione del spazio dei nomi da default nello scopo, il nome espanso corrispondendo ad un elemento sensa prefisso ha l'indirizzo IRI del spazio dei nomi da defualt come il suo nome del spazio dei nomi. Se non c'è nessuna dichiarazione del spazio dei nomi da defualt nello scopo, il nome del spazio dei nomi non ha valori. Il nome del spazio dei nomi di un nome d'attributo sensa prefisso non ha mai valori. In tutti i casi, il nome locale corrisponde a la parte locale (che naturalmente è lo stesso di quello del nome sensa prefisso sé stesso).
<?xml version="1.1"?> <!-- gli elementi sono nello spazio dei nomi HTML, in questo caso da default --> <html xmlns='http://www.w3.org/1999/xhtml'> <head><title>Frobnostication</title></head> <body><p>Mosso <a href='http://frob.example.com'>qui</a>.</p></body> </html>
<?xml version="1.1"?>
<!-- i tipi di elementi sensa prefisso sono del tipo "books" -->
<book xmlns='urn:loc.gov:books'
xmlns:isbn='urn:ISBN:0-395-36341-6'>
<title>Cheaper by the Dozen</title>
<isbn:number>1568491379</isbn:number>
</book>
Un più grand'esempio della portata del spazio dei nomi:
<?xml version="1.1"?> <!-- inizialmente, il spazio dei nomi da default è "books" --> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:ISBN:0-395-36341-6'> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> <notes> <!-- fare HTML il nome del spazio dei nomi da defualt per un commento --> <p xmlns='http://www.w3.org/1999/xhtml'> This is a <i>funny</i> book! </p> </notes> </book>
Il valore d'attributi in una dichiarazione del spazio dei nomi da default PUÒ essere vuoto. Ciò ha lo stesso effetto, nella portata della dichiarazione, di aver nessun spazio dei nomi da default.
<?xml version='1.1'?> <Beers> <!-- lo spazio dei nomi da default all'interno della tabella è HTML --> <table xmlns='http://www.w3.org/1999/xhtml'> <th><td>Name</td><td>Origin</td><td>Description</td></th> <tr> <!-- nessun spazio dei nomi da defualt nelle cellule della tabella --> <td><brandName xmlns="">Huntsman</brandName></td> <td><origin xmlns="">Bath, UK</origin></td> <td> <details xmlns=""><class>Bitter</class><hop>Fuggles</hop> <pro>Wonderful hop, light alcohol, good summer beer</pro> <con>Fragile; excessive variance pub to pub</con> </details> </td> </tr> </table> </Beers>
Nei documenti XML conformi a questa specifica, nessun tag può contenere due attributi che:
hanno dei nomi identici, o
hanno dei nomi qualificati con la stessa parte locale e con prefissi legati a nomi del spazio dei nomi che sono identici.
Questa limitazione equivale ad esigere che nessun elemento abbia due attributi con lo stesso nome espanso.
Per esempio, ogni tag iniziale bad
è illegale nel seguito:
<!-- http://www.w3.org è legato a n1 e n2 --> <x xmlns:n1="http://www.w3.org" xmlns:n2="http://www.w3.org" > <bad a="1" a="2" /> <bad n1:a="1" n2:a="2" /> </x>
Comunque, ciascuno delle seguenti è legale, il secondo perché lo spazio dei nomi da defualt non si applica ai nomi d'attributi:
<!-- http://www.w3.org è legato a n1 ed è il defualt --> <x xmlns:n1="http://www.w3.org" xmlns="http://www.w3.org" > <good a="1" b="2" /> <good a="1" n1:a="2" /> </x>
Questa specifica si applica ai documenti di XML 1.1. Per Essere conformi a questa specifica, un documento DEVE essere ben-formato secondo la specifica XML 1.1 [XML 1.1].
Nei documenti XML conformi a questa specifica, i nomi d'elementi e d'attributi DEVONO corrispondere alla produzione per QName (nomi qualificati) e DEVONO soddisfare i "Namespace Constraint" (limitazione del spazio dei nomi). Tutti gli altri simboli nel documento che sono RICHIESTI, per essere ben-formato secondo XML 1.1, a corrispondere alla produzione del Nome, DEVONO corrispondere a questa specifica per la produzione del NCName.
[Definizione: Un documento è ben-formato per il spazio dei nomi se è conforme a questa specifica. ]
Ne segue che in un documento ben-formato per il spazio dei nomi:
Tutti i nomi d'elementi e d'attributi contengono zero o un, due punti (:) ;
Nessun nome d'entità, trattamento d’obiettivi d’istruzione, o nome di notazione contiene un due punti.
Inoltre, un documento ben-formato per il spazio dei nomi può essere anche valido per il spazio dei nomi.
[Definizione: Un documento ben-formato per il spazio dei nomi è valido per il spazio dei nomi se è valido rispetto alla specifica XML 1.1, e tutti i simboli tranne i nomi dell'elementi e d’attributi che sono RICHIESTI, per validità del XML 1.1, a corrispondere alla produzione XML del Nome, corrispondono a questa specifica per la produzione del NCName. ]
Ne segue che in un documento valido per il spazio dei nomi:
Nessun attributo il cui tipo dichiarato è ID, IDREF(S), ENTITY(IES), o NOTATION contiene un due punti(:).
Per essere conforme a questa specifica, un processore DEVE segnalare le violazioni al ben-formato del spazio dei nomi, con l’eccezione che NON È RICHIESTO controllare che i nomi del spazio dei nomi siano indirizzi IRI legali.
[Definizione: Un processore di convalidazione XML che è conforme a questa specifica è convalidando del spazio dei nomi se in più segnala le violazioni di validità dello spazio dei nomi. ]
Il lavoro continua per produrre un documento RFC definendo gli Identificatori di Risorse Internazionalizzati (IRI). Poiché questo lavoro non è ancora completo, questa sezione dà una definizione sintattica degli indirizzi IRI per le necessità di questa specifica. Il gruppo di lavoro XML Core prevede di emettere un erratum che sostituira questa sezione con un riferimento al documento RFC quando quest'ultimo sarà pubblicato.
Gli utenti che definiscono il spazio dei nomi sono consigliati di limitarsi ai nomi del spazio dei nomi con indirizzi URI finché il documento RFC sia pubblicato e il software che sostiene l'IRI sia nell'uso comune. I sviluppatori sono similmente consigliati di non rigettare i nomi del spazio dei nomi che violano le versioni preliminari in termini dei caratteri consentiti.
Per una definizione più generale e discussioni sugli indirizzi IRI, vedere il documento [IRI draft 5] (lavoro in corso).
Gli indirizzi URI sono limitati ad un sottoinsieme dei caratteri ASCII; gli indirizzi IRI permettono la maggior parte dei caratteri Unicode da #xA0 in poi. Le versioni preliminari precedenti del documento RFC che tratta degli indirizzi IRI (per esempio [IRI draft 3]) autorizzavano anche loro alcuni caratteri ASCII vietati, ma non la versione corrente ([IRI draft 5]).
[Definizione: I caratteri supplementari permessi negli indirizzi IRI da la versione [IRI draft 5] sono: ]
i caratteri Unicode del piano 0 #xA0 - #xD7FF, #xF900-#xFDCF, #xFDF0-#xFFEF
i caratteri Unicode dei piani 1 a 14 #x10000-#x1FFFD ... #xD0000-#xDFFFD, #xE1000-#xEFFFD
[Definizione: Un indirizzo IRI è un gruppo di caratteri convertibili in un indirizzo URI seguendo le tappe seguenti: ]
Convertire la parte hostname, se presente, usando l'operazione ToASCII precisata nella Sezione 4.1 del documento [RFC3490] con le flag UseSTD3ASCIIRules e AllowUnassigned messe a TRUE.
sfuggire (escape) tutti caratteri supplementari come segue:
Ogni carattere supplementare è convertito in UTF- 8 [RFC3629] come uno o più byte.
I byte risultanti sono sfuggiti secondo il meccanismo di scappamento degli indirizzi URI (cioè convertiti in %HH, dove HH è la notazione esadecimale del valore del byte).
Il carattere originale è sostituito con la sequenza di caratteri risultanti.
Nota:
L'algoritmo della versione [IRI draft 5] include una tappa di normalizzazione UCS, ma ciò non fa alcuna differenza per le stringhe che sono indirizzi IRI.
Questa versione incorpora le correzioni d'errore della versione 1.0 dal 6 dicembre 2002 [1.0 Errata]. Due cambiamenti importanti vengono ad aggiungersi:
Un meccanismo è fornito per eliminare la dichiarazione di prefissi;
I nomi del spazio dei nomi sono indirizzi IRI invece di essere indirizzi URI.
Ci sono molti cambiamenti redazionali, compreso un certo numero di cambiamenti alla terminologia e di aggiunte intese a migliorare la coerenza. L'appendice non-normativo “La struttura interna del spazio dei nomi XML.” è stato tolto
Questo lavoro riflette la collaborazione di molte persone, che comprende in particolare i partecipanti del World Wide Web Consortium XML Working Group e il Special Interest Group ed i partecipanti nel W3C Metadata Activity. I contributi di Charles Frankston di Microsoft sono stati di valore particolare.