Questa è la traduzione in italiano della versione del documento redatto in inglese (l'unica versione che abbia valore ufficiale) "Namespaces in XML 1.1 (Second Edition)" presso http://www.w3.org/TR/2006/REC-xml-names11-20060816/. Gli errori eventualmente presenti in questa traduzione, sono di esclusiva responsabilità del traduttore, Ivan Bazzi, e non sono in alcun modo imputabili al consorzio W3C. Questa traduzione è stata realizzata nel novembre 2011. Per qualsiasi commento su questa traduzione rivolgersi a Ivan Bazzi.

W3C

I namespace in XML 1.1 (seconda edizione)

Reccomandation W3C del 16 agosto 2006

Questa versione:
http://www.w3.org/TR/2006/REC-xml-names11-20060816
Ultima versione:
http://www.w3.org/TR/xml-names11
Precedente versione:
http://www.w3.org/TR/2006/PER-xml-names11-20060614/
Curatori:
Tim Bray, Textuality mailto:tbray@textuality.com
Dave Hollander, Contivo, Inc. mailto:dmh@contivo.com
Andrew Layman, Microsoft mailto:andrewl@microsoft.com
Richard Tobin, University of Edinburgh and Markup Technology Ltd mailto:richard@cogsci.ed.ac.uk

Si prega di fare riferimento all'errata corrige di questo documento per eventuali correzioni normative.

Si vedano anche le traduzioni.


Sommario

I namespace di XML forniscono un metodo semplice per qualificare nomi dielementi e attribuiti utilizzati in documenti Extensible Markup Language associandoli a a riferimenti IRI.

Stato di questo documento

Questa sezione descrive lo stato di questo documento al momento della sua pubblicazione. Altri documenti potrebbero sostituire questo documento. Una lista delle pubblicazioni W3C attuali e l'ultima revisione di questo rapporto tecnico può essere trovata nell'indice dei rapporti tecnici di W3C presso http://www.w3.org/TR/.

Questo documento è un prodotto dello XML Core Working Group parte della W3C XML Activity. La versione inglese di questo documento è la sola versione normativa. Comunque, per le traduzioni di questo documento si veda http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-names-11.

Implementazioni note sono documentate nel rapporto sulle implementazioni dei namespace 1.1 (tutte le implementazioni dei Namespace versione 1.1 includono i Namespace versione 1.0) . È anche disponibile un insieme di strumenti di test alla pagina XML Test Suite.

Questa seconda edizione incorpora tutte le correzioni note sino alla data di pubblicazione. Soppianta la precedente Raccomandazione W3C del 4 febbraio 2004 . Per la convenienza del lettore, è anche disponibile una versione in XHTML con indicatori di revisione colorati.

Si prega di indicare errori presenti in questo documento a xml-names-editor@w3.org; i cui archivi sono disponibili pubblicamente. La lista delle correzioni per questo documento è disponibile presso http://www.w3.org/XML/2006/xml-names11-errata.

Questo documento è stato revisionato da membri della W3C, da sviluppatori software, e da gruppi della W3C e dalle parti interessate ed è sottoscritto dal Direttore come raccomandazione della W3C. È un documento stabile e può essere utilizzato come materiale di riferimento o citato da un altro documento [n.d.t. effettivamente la versione inglese]. Il ruolo della W3C nel fare la Raccomandazione è quella di attrarre l'attenzione sulla specifica e di promuoverne una larga diffusione. Questo accresce le funzionalità e l'interoperabilità del Web.

Questo documento è regolamentato dal CPP del 24 gennaio 2002 come emendato dalla Procedura di transizione delle politica di brevetti di W3C. W3C cura una lista pubblica di ogni descrizione brevettuale fatta in connessione con i documenti prodotti dal gruppo; la pagina contiene anche istruzioni su come divulgare il brevetto. Un individuo che abbia effettiva conoscenza di un brevetto che creda contenere Rivendicazioni deve divulgare le informazioni relative al brevetto in accordo con la sezione 6 della Politica di brevetto della W3C.

Indice

1 Motivazioni e sommario
    1.1 Nota sulla notazione e l'uso
2 Namespace XML
    2.1 Concetti di base
    2.2 Uso di IRI come nomi di un namespace
    2.3 Confronto fra riferimenti IRI
3 Dichiarazione di Namespace
4 Nomi qualificati
5 Uso dei nomi qualificati
6 Applicazione di namespace a elementi e ad attributi
    6.1 Ambito dei namespace
    6.2 Default per i namespace
    6.3 Unicità degli attibuti
7 Conformità dei documenti
8 Conformità dei processori

Appendici

A Riferimenti normativi
B Altri riferimenti (Non Normativi)
C La struttura interna dei namespace di XML (Non normativa)
D Cambiamenti dalla versione 1.0 (Non Normativa)
    D.1 Cambiamenti dalla versione 1.1
E Riconoscimenti (Non Normativa)


1 Motivazioni e sommario

Immaginiamo applicazioni di Extensible Markup Language (XML) dove un singolo documento XML contenga elementi e attributi (qui riferiti come "vocabolario di marcatura") definiti e utilizzati da molteplici moduli software. Una motivazione per questo caso è la modularità: se un vocabolario cosÌ fatto esistesse e fosse compreso adeguatamente e per il quale fosse a disposizione del software, sarabbe meglio riutilizzare questo vocabolario piuttosto che reinventarlo.

Tali documenti, contenenti vocabolari di marcatura multipli, pongono problemi di riconoscimento e conflitto. I moduli software devono essere in grado di riconoscere gli elementi e gli attributi per la cui elaborazione sono stati progettati, anche nel caso di "conflitti" che avvenissero quando una marcatura intesa per altri pacchetti software utilizzi lo stesso nome per un elemento o per un attributo.

Queste considerazioni richiedono che le strutture dei documenti dovrebbero avere nomi costruiti in modo da evitare conflitti tra nomi provenienti da diversi vocabolari di marcatura. Questa specifica descrive un meccanismo, i namespace in l'XML, che raggiunge questo scopo assegnando nomi estesi a elementi e attributi.

1.1 Appunto sulla notazione e l'uso

Dove ENFATIZZATE, le parole chiave [n.d.t. e loro coniugazioni in italiano] DEVE (MUST), NON DEVE (MUST NOT), È RICHIESTO (REQUIRED), DOVREBBE (SHOULD), NON DOVREBBE (SHOULD NOT), PUÒ (MAY) in questo documento sono da considerarsi usate come descritto in [Parole chiave].

Si noti che molti dei simboli non terminali coinvolti nella produzione di questa specifica non sono definiti qui bensí nella specifica dell'XML [XML]. Quando i simboli non terminali definiti qui hanno nomi uguali ai simboli definiti nella specifica dell'XML, le regole di produzione presenti qui in tutti i casi correlano un sottoinsieme di stringhe che vengono correlate dalle corrispondenti regole la.

Nelle regole di produzione in questo documento, NSC [n.d.t. dall'inglese Namespace Contraints] è un "vincolo al namespace ", una delle regole che i documenti conformi a questa specifica DEVONO seguire.

2 Namespace XML

2.1 Concetti di base

[Definizione: Un namespace XML è identificato da un riferimento IRI [RFC3987]; nomi di elementi e nomi di attributi possono essere posti in un namespace XML utilizzando il meccanismo descritto in questa specifica. ]

[Definizione: Un nome esteso è una coppia cosistente di un nome di namespace e di un nome locale. ] [Definizione: Per un nome N in un name space identificato da un IRI I, il nome del namespace è I. Per un nome N che non è in un namespace, il nome del namespace non ha valore. ] [Definizione: in entrambi i casi il nome locale è N. ] È questa combinazione di gestione universale dei namespace tramite IRI con i nomi locali del vocabolario che è efficace nell'evitare conflitti di nomi.

I riferimenti IRI possono contenere caratteri non consentiti nei nomi, e sono spesso sconvenientemente lunghi, così i nomi estesi non vengono usati direttamente per denominare elementi e attributi in documenti XML. Vengono invece usati nomi qualificati. [Definizione: Un nome qualificato è un nome soggetto ad interpretazione del namespace. ] Nei documenti che siano conformi a questa specifica, i nomi degli elementi e degli attributi appaiono come nomi qualificati. Sintatticamente, sono o nomi con prefissi o nomi senza prefissi. Una sintassi di dichiarazione basata sugli attributi viene fornita per legare prefissi a nomi di un namespace e per legare un namespace di default applicabile a nomi di elementi senza prefissi; l'ambito di validità di queste dichiarazioni è determinato dagli elementi in cui essi appaiono cosicché trovare combinazioni diverse in diverse parti di un documento. I processori che si conformino a questa specifica DEVONO riconoscere queste dichiarazioni e prefissi e agire sulla base di essi.

2.3 Confronto tra riferimenti IRI

Riferimenti IRI che identificano namespace vengono messi a confronto ogni volta che si cerchi di stabilire se un nome appartenga o no ad un dato namespace o se due nomi appartengano allo stesso namespace. [Definizione: due IRI sono trattati come stringhe e sono identici se e solo se tali stringhe sono identiche, cioè, se sono la stessa sequenza di caratteri. ] Nel confronto si distingue tra maiuscole e minuscole e % non viene considerato un carattere di escape.

Una conseguenza di questo è che riferimenti IRI che non siano identici in questo senso possono risultare in riferimenti alla stessa risorsa. Esempi includono riferimenti IRI che differiscono solo nell'uso di maiuscole e minuscole o per l'uso di % come carattere di escape, o che siano entità esterne che abbiano un diverso URI base (ma si noti che l'uso di IRI relativi per nomi di namespace viene scoraggiato).

Nelle dichiarazioni di un namespace, il riferimento IRI è il valore normalizzato dell'attributo, cosicché sostituzioni di caratteri XML e riferimenti ad entità sono già stati fatti prima di qulasiasi confronto.

Esempi:

I riferimenti IRI sotto riportati sono tutti differenti agli effetti della identificazione dei namespace, visto che differiscono nell'uso delle maiuscole e delle minuscole:

  • http://www.example.org/wine

  • http://www.Example.org/wine

  • http://www.example.org/Wine

Anche i riferimenti IRI sotto riportati sono tutti differenti agli effetti della identificazione dei namespace:

  • 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

Come lo sono questi:

  • http://www.example.org/~wilbur

  • http://www.example.org/%7ewilbur

  • http://www.example.org/%7Ewilbur

Se l'entità eacute é definita in modo che sia é, tutti i tag iniziali sotto indicati contengono dichiarazioni di namespace correlanti i prefissi p allo stesso riferimento IRI, http://example.org/rosé.

  • <p:foo xmlns:p="http://example.org/rosé">

  • <p:foo xmlns:p="http://example.org/ros&#xe9;">

  • <p:foo xmlns:p="http://example.org/ros&#xE9;">

  • <p:foo xmlns:p="http://example.org/ros&#233;">

  • <p:foo xmlns:p="http://example.org/ros&eacute;">

A causa del rischio di confusione tra IRI che sarebbero eqivalenti se dereferenziati, l'uso di caratteri di escape % nei nomi di namespace è fortemente sconsigliato.

3 Dichiarazione di Namespace

[Definizione: Un namespace (o più precisamente, un legame ad un namespace) è dichiarato utilizzando una famiglia di attributi riservati. Tali nomi di attributi devono essere xmlns o devono cominciare con xmlns:. Questi attributi, come qualsiasi altro attributo di XML, possono essere forniti direttamente o per default. ]

Nomi di attributi per la dichiarazione di uno spazio di nomi
[1]    NSAttName    ::=    PrefixedAttName
| DefaultAttName
[2]    PrefixedAttName    ::=    'xmlns:' NCName [NSC: Prefissi riservati e nomi di namespace]
[3]    DefaultAttName    ::=    'xmlns'
[4]    NCName    ::=    NCNameStartChar NCNameChar* /* Il valore del Name di XML, meno il ":" */
[5]    NCNameChar    ::=    NameChar - ':'
[6]    NCNameStartChar    ::=    NameStartChar - ':'

Il valore normalizzato dell'attributo DEVE essere o un riferimento IRI — il nome di un namespace che identifica il namespace — o una stringa vuota. Il nome del namespace, per assolvere al suo scopo, DOVREBBE avere caratteristiche di unicità e di persistenza. Non è suo scopo essere direttamente utilizzabile per il recupero di un (eventuale) schema. Uniform Resource Names [RFC2141] è un esempio di sintassi progettata con in mente tale obiettivo. Comunque sia, dovrebbe essere chiaro che URL ordinari possano essere utilizzati in modo da ottenere questo stesso obiettivo.

[Definizione: se il nome dell'attributo corrisponde a PrefixedAttName, allora NCName fornisce il prefisso del namespace, usato per associare i nomi degli elementi e degli attributi con il nome del namespace nel valore dell'attributo nell'ambito dell'elemento a cui è associata la dichiarazione. ]

[Definizione: se il nome dell'attributo corrisponde a DefaultAttName, allora il nome del name space nel valore dell'attributo è quello del namespace di default nell'ambito dell'elemento a cui è associata la dichiarazione] I namespace di default e la sovrascrittura di dichiarazioni vengono discusse in 6 Applicazione dei namespace a elementi e attributi.

Un esempio di dichiarazione di namespace che associa il prefisso dello spazio di nomi edi con il nome dello spazio di nomi http://ecommerce.example.org/schema:

<x xmlns:edi='http://ecommerce.example.org/schema'>
  <!-- il prefisso "edi" viene legato a http://ecommerce.example.org/schema
       per l'elemento "x" e il suo contenuto -->
</x>

Per quanto non siano esse stesse riservate, non è consigliabile l'uso di nomi con prefissi il cui LocalPart cominci con le lettere x, m, l, in qualsiasi combinazione di minuscole e maiuscole in quanto questi nomi sarebbero riservati se utilizzati senza un prefisso.

5 Uso dei nomi qualificati

In documenti XML conformi a questa specifica i nomi degli elementi sono dati come nomi qualificati, come segue:

Nomi degli elementi
[12]    STag    ::=    '<' QName (S Attribute)* S? '>' [NSC: prefisso dichiarato]
[13]    ETag    ::=    '</' QName S? '>' [NSC: prefisso dichiarato]
[14]    EmptyElemTag    ::=    '<' QName (S Attribute)* S? '/>' [NSC: prefisso dichiarato]

Un esempio di nome qualificato funzionante come nome di elemento:

  <!-- Il namespace 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 o sono dichiarazioni di namespace oppure il loro nome è dato come nome qualificato:

Attributo
[15]    Attribute    ::=    NSAttName Eq AttValue
| QName Eq AttValue [NSC: prefisso dichiarato]

Un esempio di nome qualificato funzionante come nome di attributo:

<x xmlns:edi='http://ecommerce.example.org/schema'>
  <!-- Il namespace dell'attributo 'taxClass' è http://ecommerce.example.org/schema -->
  <lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>

Vincolo al namespace: prefisso dichiarato

Il prefisso del namespace, a meno che non sia xml o xmlns, DEVE essere stato dichiarato in un attributo di dichiarazione di namespace o all'interno di un tag iniziale dell'elemento dove il prefisso viene usato oppure in un elemento predecessore (cioè un elemento nel contenuto del quale appaia la marcatura prefissata). Inoltre, il valore dell'attributo nella più interna dichiarazione di questo tipo NON DEVE essere una stringa vuota.

Questo vincolo può portare a difficoltà operative nel caso in cui la dichiarazione del namespace non venga effettuata direttamente nell'entità del documento XML, ma attraverso un attributo di default dichiarato in una entità esterna. Dichiarazioni di questo tipo potrebbero non venir lette da software che siano basati su un processore XML che non compie la validazione. Molte applicazioni XML, presumibilmente incluse quelle che tengono conto dei namespace, non richiedono processori che operano una validazione. Perché tali applicazioni funzionino correttamente le dichiarazioni di spazio di nomi DEVONO essere fornite direttamente o attraverso attributi di default dichiarati nel sottoinsieme interno del DTD.

Anche i nomi degli elementi e i nomi degli attributi vengono dati come nomi qualificati quando appaiono in dichiarazioni nei DTD:

Nomi qualificati nelle dichiarazioni
[16]    doctypedecl    ::=    '<!DOCTYPE' S QName (S ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
[17]    elementdecl    ::=    '<!ELEMENT' S QName S contentspec S? '>'
[18]    cp    ::=    (QName | choice | seq) ('?' | '*' | '+')?
[19]    Mixed    ::=    '(' S? '#PCDATA' (S? '|' S? QName)* S? ')*'
| '(' S? '#PCDATA' S? ')'
[20]    AttlistDecl    ::=    '<!ATTLIST' S QName AttDef* S? '>'
[21]    AttDef    ::=    S (QName | NSAttName) S AttType S DefaultDecl

Si noti che la validazione basata su DTD non tiene conto degli spazi dei nomi nel seguente senso: un DTD limita gli elementi e gli attributi che possono apparire in un documento attraverso i loro nomi non interpretati, non attraverso coppie di tipo (nome di namespace, nome locale). Per validare un documento che usi dei namespace a fronte di un DTD, lo stesso prefisso deve essere usato sia nel DTD che nell'istanza. Un DTD può comunque limitare indirettamente i namespace usati in un documento valido fornendo valori #FIXED per attribbuti che dichiarino namespace.

6 Applicazione dei namespace a elementi e attributi

6.1 Visibilità del namespace

L'ambito di visibilità di un namespace che dichiari un prefisso si estende dall'inizio del tag iniziale dove esso appare alla fine del corrispondente tag finale, ad esclusione dell'ambito di qualsiasi dichiarazione interna con la stessa parte NSAttName. Nel caso del tag vuoto, l'ambito di visibilità è lo stesso tag.

Una dichiarazione di namespace così fatta vale per tutti i nomi di elementi e attributi all'interno del suo ambito il cui prefisso corrisponde a quello specificato nella dichiarazione.

Il nome esteso corrispondente ad un nome con prefisso di attributo o elemento ha l'IRI, al quale il prefisso è legato in qualità di nome del namespace, e la parte locale in qualità del 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>Moved to 
    <html:a href='http://frob.example.com'>here.</html:a></html:p></html:body>
</html:html>

Come attributi di un singolo elemento possono essere dichiarati molteplici prefissi per namespace, come viene mostrato in questo esempio:

<?xml version="1.1"?>
<!-- sono disponibili per tutto l'elemento entrambi i prefissi di namespace  -->
<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 dell'attributo in una dichiarazione di namespace per un prefisso PUÒ essere nullo. Questo ha l'effetto, nell'ambito della dichiarazione, di rimuovere ogni associazione del prefisso con un nome di namespace. Ulteriori dichiarazioni POSSONO dichiarare nuovamente il prefisso:


<?xml version="1.1"?>
<x xmlns:n1="http://www.w3.org">
    <n1:a/>               <!-- legale; il prefisso n1 viene legato a http://www.w3.org -->
    <x xmlns:n1="">
        <n1:a/>           <!-- illegale; il prefisso n1 non viene legato qui -->
	<x xmlns:n1="http://www.w3.org">
            <n1:a/>       <!-- legale; il prefisso n1 viene legato nuovamente -->
        </x>
    </x>
</x>

6.2 Default per i namespace

La visibilità per la dichiarazione di un namespace di default si estende dall'inizio del tag iniziale dove essa appare sino alla fine del corrispodente tag finale, ad esclusione dell'ambito di dichiarazioni di namespace di default più interne. Nel caso di un tag vuoto, l'ambito di visibilità è il tag stesso.

Una dichiarazione di namespace di default si applicata, nel suo ambito, a tutti i nomi di elemento non senza prefisso. Le dichiarazioni del namespace di default non si applicano direttamente ai nomi degli attributi; l'interpretazione degli attributi senza prefisso è determinata dall'elemento in cui figurano.

Se viene dichiarato un namespace di default in un cero ambito di visibilità, il nome esteso corrispondente ad un nome di elemento senza prefisso prende l'IRI del namespace di default come suo nome di namespace. Se non è dichiato un namespace di default in un certo ambito di visibilit`, il namespace non ha valore. Il nome del namespace per un nome di attributo senza prefisso non ha mai alcun valore. In ogni caso, il nome locale è la parte locale (che è naturalmente coincide col nome senza prefisso).

<?xml version="1.1"?>
<!-- Gli elementi sono nello spazio di nomi dell'HTML, in questo caso di default -->
<html xmlns='http://www.w3.org/1999/xhtml'>
  <head><title>Frobnostication</title></head>
  <body><p>Moved to 
    <a href='http://frob.example.com'>here</a>.</p></body>
</html>
<?xml version="1.1"?>
<!-- I tipi di elementi senza prefisso vengono da "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ù esteso esempio dell'ambito di validità dei namespace:

<?xml version="1.1"?>
<!-- Inizialmente, il namespace di 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>
      <!-- Fa dell'HTML il namespace di default per alcuni commenti -->
      <p xmlns='http://www.w3.org/1999/xhtml'>
          This is a <i>funny</i> book!
      </p>
    </notes>
</book>

Il valore dell'attributo in una dichiarazione di namespace di default PUÒ essere vuota. Questo ha lo stesso effetto, nell'ambito di visibilità della dichiarazione, di quando non ci fosse alcun namespace di default.

<?xml version='1.1'?>
<Beers>
  <!-- Il namespace di default all'interno delle tabelle è quello dell'HTML -->
  <table xmlns='http://www.w3.org/1999/xhtml'>
   <th><td>Name</td><td>Origin</td><td>Description</td></th>
   <tr> 
     <!-- All'interno delle celle non c'è alcun namespace di default -->
     <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>

6.3 Unicità degli attributi

Nei documenti XML conformi a questa specifica, nessun tag dovrebbe contenere due attributi che:

  1. abbiano nomi identici, o

  2. abbiano nomi qualificati con la stessa parte locale e con i prefissi che siano legati a nomi di namespace identici.

Questa estrizione è equivalente a richiedere che nessun elemento abbia due attributi con lo stesso nome esteso.

Per esempio, ognuno dei tag dell'elemento bad vuoto non è consentito nel seguente frammento:

<!-- http://www.w3.org è legato ad 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, ognuno dei seguenti è consentito, il secondo perché il namespace di default non si applica ai nomi di attributi:

<!-- http://www.w3.org &egarve; legato ad n1 ed è di default -->
<x xmlns:n1="http://www.w3.org" 
   xmlns="http://www.w3.org" >
  <good a="1"     b="2" />
  <good a="1"     n1:a="2" />
</x>

7 Conformità dei documenti

Questa specifica si applica ai documenti XML 1.1. Per conformarsi a questa specifica, un documento DEVE essere ben formato in accordo con la specifica XML 1.1 [XML 1.1].

Nei documenti XML che conformi a questa specifica, i nomi degli elementi e degli attributi DEVONO seguire le regole di produzione per QName e DEVONO soddisfare i "vincoli dei namespace". Tutti gli altri simboli a cui nel documento viene RICHIESTO, per la buona formazione secondo XML 1.1, di soddisfare la regola di produzione di Name, DEVONO soddisfare la regola di produzione di NCName di questa specifica.

[Definizione: Un documento è ben formato per i namespace se si conforma a questa specifica. ]

Ne segue che in un documento ben formato per i namespace:

  • Tutti i nomi degli attributi e degli elementi contengono o uno zero o un ‘due punti’;

  • Nessun nome di entità, oggetto di istruzione o nome di notazione contiene alcun ‘due punti’.

Inoltre, un documento ben formato secondo i namespace può anche essere valido secondo i namespace.

[Definizione: un documento ben formato per i namespace è valido per i namespace se è valido in accordo alla specifica XML 1.1 e se tutti i simboli che non siano nomi di elemento o di attributo a cui sia RICHIESTO, per la validità secondo XML 1.1, di soddisfare la regola di produzione di Name di XML, soddisfi la regola di produzione di NCName di questa specifica. ]

Ne segue che in un documento valido per i namespace:

  • Nessun attributo con un tipo dichiarato ID, IDREF(S), ENTITY(IES) o NOTATION contenga alcun ‘due punti’.

A Riferimenti normativi

Parole chiave
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, ed. IETF (Internet Engineering Task Force), marzo 1997. Disponibile presso http://www.rfc-editor.org/rfc/rfc2119.txt
RFC2141
RFC 2141: URN Syntax, R. Moats, ed. IETF (Internet Engineering Task Force), maggio 1997. Disponibile presso http://www.rfc-editor.org/rfc/rfc2141.txt.
RFC3986
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax, T. Berners-Lee, R. Fielding, e L. Masinter, eds. IETF (Internet Engineering Task Force), gennaio 2005. Disponibile presso http://www.rfc-editor.org/rfc/rfc3986.txt
RFC3629
RFC 3629: UTF-8, a transformation format of ISO 10646, F. Yergeau, ed. IETF (Internet Engineering Task Force), novembre 2003. Disponibile presso http://www.rfc-editor.org/rfc/rfc3629.txt
RFC3987
Internationalized Resource Identifiers (IRIs), M. Duerst e M. Suignard eds. gennaio 2005. Disponibile presso http://www.rfc-editor.org/rfc/rfc3987.txt.
XML
Extensible Markup Language (XML) 1.0 (Fourth Edition), Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, e François Yergeau eds. W3C (World Wide Web Consortium), 16 agosto 2006. Disponibile presso http://www.w3.org/TR/2006/REC-xml-20060816/.
XML 1.1
Extensible Markup Language (XML) 1.1 (Second Edition), Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, François Yergeau, e John Cowan eds. W3C (World Wide Web Consortium), 16 agosto 2006. Disponibile pressot http://www.w3.org/TR/2006/REC-xml11-20060816/.

B Altri riferimenti (non normativa)

1.0 Errata
Namespaces in XML Errata. W3C (World Wide Web Consortium). Disponibile presso http://www.w3.org/XML/xml-names-19990114-errata.
1.1 Errata
Namespaces in XML 1.1 Errata. W3C (World Wide Web Consortium). Disponibile presso http://www.w3.org/XML/2004/xml-names11-errata.
Scoraggiamento degli URI relativi
Results of W3C XML Plenary Ballot on relative URI References In namespace declarations 3-17 July 2000, Dave Hollander e C. M. Sperberg-McQueen, 6 settembre 2000. Available at http://www.w3.org/2000/09/xppa.
Requirements
Namespaces in XML 1.1 Requirements, Jonathan Marsh, ed. W3C (World Wide Web Consortium), marzo 2002. Disponibile presso http://www.w3.org/TR/2002/WD-xml-names11-req-20020403/.

D Cambiamenti dalla versione 1.0 (non normativa)

Questa versione incorpora correzioni alla versione 1.0 a partire dal 6 dicembre 2002 [1.0 Errata]. Ci sono due ulteriori cambiamenti sostanziali:

  • Viene fornito un meccanismo per de-dichiarare prefissi;

  • I nomi di namespace sono IRI, piuttosto che URI.

Ci sono parecchi cambiamenti editoriali, inclusi un numero di cambiamenti terminologici oltre ad aggiunte intese a produrre maggiore consistenza. L'appendice non normativa "La struttura internal dei namespace per XML" è stata rimossa.

D.1 cambiamenti dalla versione 1.1

Questa versione incorpora l'errata corrige per la versione 1.1 a partire dal 1 giugno 2006 [1.1 Errata].

Visto che la versione finale dell'RFC riguardo l'IRI non è stata ancora pubblicata, la prima edizione della versione 1.1 include la propria definizione degli IRI. Questa è stata rimossa e sostituita dal riferimento all'apposita RFC.