Possibili errori di traduzione possono essere presenti in questo documento. Translation time: 2006/01/28, Tadas Talaikis, info@nakagava.com Solo il documento originale in inglese puo essere considerato ufficiale: http://www.w3.org/TR/2005/REC-xml-id-20050909/ |
Si prega di far riferimento agli errori noti di questo documento, i quali potrebbero includere alcune correzioni normative.
Vedere anche le traduzioni.
Questo documento è anche disponibile in questi formati non normativi: XML.
Copyright © 2005 W3C® (MIT, ERCIM, Keio), Tutti i diritti riservati. Si usano le regole W3C su responsabilità, marchio registrato ed uso del documento.
Questo documento definisce il significato dell’attributo xml:id come un attributo ID in documenti XML e definisce il processamento di quest’attributo per identificare ID in mancanza di validazione, senza recuperare risorse esterne e senza dipendere di un subset interno.
Questa sezione descrive lo stato di questo documento al momento della sua pubblicazione. Altri documenti possono sostituire questo documento. Un elenco delle pubblicazioni attuali del W3C e l´ultima revisione di questo rapporto tecnico si trova nell’ Indice di rapporti tecnici del W3C presso http://www.w3.org/TR/.
Questo documento è una Raccomandazione del W3C. Questo documento è stato sviluppato dal W3C XML Core Working Group come parte dalla XML Activity. È stato rivisto dai Membri del W3C e da altre parti interessate ed è stato approvato dal Direttore. È un documento stabile e può essere usato come materiale di riferimento o citato da un altro documento come una normativa di riferimento. L'obiettivo del W3C nel fare le Raccomandazioni è quello di richiamare l'attenzione alle specifiche e di promuovere la loro più ampia diffusione. Questo aumenta la funzionalità e l'interoperabilità del Web.
La versione inglese di questa specifica è l’unica versione normativa. Traduzioni di questo documento sono disponibili.
Tutti i commenti sono ben accetti su public-xml-id@w3.org, una mailing list con un archivio pubblico. L’elenco degli errori noti di questo documento è disponibile.
Questo documento definisce il significato dell’attributo xml:id come un attributo ID in documenti XML e definisce il processamento di quest’attributo per identificare ID in mancanza di validazione, senza recuperare risorse esterne e senza dipendere di un subset interno.
Questo documento è basato su xml:id Version 1.0 Proposed Recommendation, 12 Luglio 2005. I feedback ricevuti durante quella revisione hanno avuto come conseguenza alcuni cambiamenti editoriali minori. Si documentano evidenze d’interoperatibiltà tra almeno due implementazioni di questa specifica nel Rapporto d’implementazioni. Un insieme di prova è anche disponibile.
Questo documento è stato prodotto sotto la 5 February 2004 W3C Patent Policy. Il Working Group mantiene un elenco pubblico di divulgazioni di brevetto attinente a questo documento; la pagina include anche istruzioni per divulgare (ed escludere) un brevetto. Chi abbia una conoscenza attuale di un brevetto che possa avere Rivendicazioni Essenziali relative a questa specifica deve divulgare l’informazione de conformità con la sezione 6 della linea di condotta W3C su brevetti.
1 Introduzione
2 Terminologia
3 Sintassi
4 Processamento d’Attributi xml:id
5 Informare l’Applicazione
6 Errori
7 Conformità
7.1
Conformità con
xml:id
7.2 Conformità con il Set d’Informazione XML
8 Estensibilità
A Riferimenti
B Riferimenti (Non Normativo)
C
Impatto sulla Canonizzazione
(Non Normativo)
D Tecnologie di Validazione (Non Normativo)
D.1 Validazione con DTD
D.2 Validazione con lo Schema XML
D.3 Validazione con RELAX NG
E Normalizzazione del Valore d’Attributo in ID (Non Normativo)
[XML 1.0] e [XML 1.1] forniscono un meccanismo per annotare elementi con identificatori unici. Questo meccanismo consiste in dichiarare il tipo di un attributo come "ID", poi il parser convaliderà che
il valore ID corrisponde alla forma lessicale permessa,
il valore è unico dentro il documento XML, e che
ogni elemento ha come massimo un singolo identificatore unico
Le dichiarazioni dei subset DTD interno o esterno di un documento XML possono dichiarare gli attributi come di tipo ID. Comunque, il processamento dei subset DTD esterni è opzionale per i processori con conformità XML; e alcune specifiche, in particolare [SOAP], vietano completamente i DTD, non lasciando nessuna garanzia a tutti gli utenti del documento sulla possibilità di riconoscere con successo gli identificatori.
Gli identificatori si possono anche dichiarare via meccanismi esterni. Di particolare interesse è [XML Schemas] che provvede un tipo "xs:ID" con la stessa unicità e limitazioni di validità del XML. In ogni modo, no vi sono garanzie per gli utenti di trovare lo schema "corretto", né di poter processarlo se lo trovano.
Sarebbe desiderabile, per fare più vigoroso il collegamento delle subrisorse XML, un meccanismo che permetta il riconoscimento degli identificatori d’elemento unico da tutti i processori XML con conformità, validino o no. Questa specifica permette agli autori l’identificazione degli elementi con ID la possibilità di essere riconosciuti da qualsiasi processore, non precisando come, o se, sono disponibili dichiarazioni interne o esterne.
Un problema addizionale è che gli identificatori, siano basati in DTD o basati nello Schema XML, sono esposti attraverso differenti meccanismi concettuali- la proprietà infoset tipo d’attributo, o la famiglia di proprietà definizione di tipo rispettivamente. Un meccanismo uniforme di riconoscimento d’identificatori è raccomandabile.
Questa specifica fornisce un meccanismo di questo tipo: descrive la semantica degli attributi xml:id. Questa specifica è stata progettata per essere uno strato separato nel processamento e per essere compatibile con le tecnologie di validazione esistenti. Gli sviluppatori dovrebbero supportare il processamento xml:id
e fare della designazione di tipo ID il comportamento per default dei suoi processori.
Questo è stato un principio guida nel disegno di questa specifica: il risultato del processamento xml:id dovrebbe essere lo stesso se una dichiarazione appropriata fosse stata usata dal processore.
[Definizione: Le parole chiave deve, non deve, richiesto, dovrà, non dovrà, dovrebbe, non dovrebbe, raccomandato, potrebbe e facoltativo in questa specifica si devono interpretare come descritte in [IETF RFC 2119].]
[Definizione: Un processore xml:id è un modulo software che lavora in congiunzione con un processore XML per fornire accesso agli ID in un documento XML.]
[Definizione: un errore xml:id è un’errore non fatale che accade quando un processore xml:id trova un documento che abbia violato le limitazioni di questa specifica.]
Validazione è il processo che compara un documento XML (o parte di un documento XML) con una grammatica o set di regole per determinare se la struttura attuale del documento soddisfa le limitazioni della grammatica o le regole. Alcune tecnologie di validazione eseguiscono assegnazioni di tipo, determinando così non solo se il documento soddisfa le limitazioni specificate ma anche determinando, ad esempio, quali (elementi e/o) attributi sono tipo “ID”.
Benché spesso si eseguiscano insieme, la validazione e la designazione di tipo non sono lo stesso processo. Un processore che non convalidi XML 1.0, per esempio, può eseguire la designazione di tipo usando soltanto dichiarazione dal subset interno, senza mai avere nessun’informazione sulla validità strutturale del documento.
[Definizione: Il processamento di una designazione di tipo ID trasforma un valore d’attributo xml:id in un ID.] Questo si raggiunge spesso facendo il tipo dell’attributo "ID" nell’infoset o post-schema-validation
infoset (PSVI), però questo non è l’unico meccanismo possibile.
Nota:
Il processamento a livello d’applicazione degli ID, includendo quali elementi si possono davvero esaminare e con quali valori ID, è oltre lo scopo di questa specifica.
Per [Namespaces in XML] (e[Namespaces in XML 1.1]), i prefissi che comincino con “xml” sono riservati per uso delle specifiche XML e correlate XML. Questa specifica autorizza l’uso dell’attributo “xml:id” per la sintassi comune degli identificatori in XML con la semantica qui specificata.
Gli autori di documenti XML dovrebbero nominare i suoi attributi ID "xml:id" per aumentare l’interoperabilità di questi identificatori nel Web.
In processori XML che riconoscano namespace, il prefisso "xml" è legato al nome namespace http://www.w3.org/XML/1998/namespace come si descrive in Namespace in XML [Namespaces in
XML] (e [Namespaces in XML
1.1]). Si deve tenere conto che xml:id può essere anche usato da processori XML che non riconoscano namespace.
xml:idOgni attributo xml:id è processato così:
Il valore dell’attributo è normalizzato secondo le regole per normalizzazione del valore d’attributo degli attributi di tipo ID. Per i particolari, si veda E Normalizzazione del Valore d’Attributo in ID.
La proprietà infoset valore normalizzato è aggiornata con il valore normalizzato.
La Designazione di tipo ID è eseguita con il valore normalizzato.
Un processore xml:id deve assicurare che le seguenti limitazioni si mantengano per tutti gli attributi xml:id:
Il valore normalizzato dell’attributo è un NCName secondo la Raccomandazione Namespaces in XML che ha la stessa versione del documento in cui appare l’attributo (NCName per XML 1.0,
oNCName per XML
1.1).
Il tipo dichiarato dell’attributo, se ha uno, è “ID”. Tutte le dichiarazioni per attributi xml:id devono specificare “ID” come il tipo dell’attributo.
Un processore xml:id dovrà assicurare che si compiano le seguenti limitazioni:
I valori di tutti gli attributi di tipo “ID” (includendo tutti gli attributi xml:id) dentro un documento sono unici.
Un errore xml:id accade quando qualsiasi attributo xml:id non soddisfa le limitazioni.
Il processore xml:id esegue la designazione del tipo ID in tutti gli attributi xml:id, anche in quelli che non soddisfano le limitazioni.
Un processore xml:id dovrà aggiornare la proprietà infoset referenze, come si descrive nella Sezione 2.3 di [Set d’Informazione XML], e aggiornare qualsiasi struttura d’implementazione specifica usata per referenze crociate che riflettino i risultati della designazione di tipo ID.
Molte tecnologie di validazione impongono la limitazione per la quale un elemento XML può avere come massimo un attributo di tipo ID. Il processamento xml:id non impone questa limitazione.
Questa specifica definisce il processamento xml:id, ma corrisponde all’applicazione la determinazione del momento in cui accade questo processamento. Gli utenti d’applicazioni che forniscano mezzi per modificare documenti XML possono ragionevolmente aspettare che il processamento xml:id accada sempre che si faccia un cambiamento di un valore ID.
Quando accade la designazione di tipo ID, il processore xml:id deve
informare gli attributi xml:id assegnati all’applicazione. Dipende dall’implementazione la forma d’informare.
Per le applicazioni che operano concettualmente con l’Infoset, un processore xml:id può usare la proprietà Infoset tipo d’attributo:
Il processore xml:id può informare i risultati della designazione di tipo ID in una maniera compatibile con DTD collocando la proprietà Infoset tipo d’attributo dell’attributo all’ID.
Per le applicazioni che operano concettualmente con PSVI, un processore xml:id può usare la famiglia definizione di tipo delle proprietà PSVI:
Il processore xml:id può informare i risultati della designazione di tipo ID in una maniera compatibile con uno Schema XML collocando la proprietà PSVI definizione di tipo dell’attributo con xs:ID.
Per le applicazioni che operano con modelli di dati definiti in altre maniere, i meccanismi dipendono dall’implementazione:
Il processore xml:id può informare i risultati della designazione di tipo ID in altre maniere.
Il requisito chiave è che l’applicazione possa riconoscere i risultati delle designazioni di tipo ID.
Una violazione delle limitazioni di questa specifica ha come conseguenza un errore xml:id. Questi non sono errori fatali, ma dovranno essere informati dal processore xml:id. Per ragioni d’interoperabilità è fortemente raccomandabile che gli errori xml:id non siano ignorati silenziosamente.
La conformità con xml:id per applicazioni che dipendano da processori XML e usino tecnologie di validazione consiste nell’uso della struttura xml:id spiegata in 4 Processamento d’Attributi xml:id e la conformità con le limitazione tanto di questa specifica quanto delle regole della tecnologia di validazione.
La conformità con xml:id per applicazioni che dipendano di processori XML non validanti è definita per la riconoscenza degli attributi xml:id come si spiega in 4 Processamento d’Attributi xml:id e la conformità con le limitazioni di questa specifica.
La conformità con le limitazioni che “devano” compiersi è obbligatoria. Si raccomanda che le applicazioni assicurino anche le altre limitazioni. Questa specifica non definisce limitazioni che siano semplicemente opzionali.
Un documento è conforme a questa specifica se non genera nessun errore xml:id.
Questa specifica è conforme al [Set d’Informazione XML]. Le seguenti informazioni devono essere presenti nell’input infoset per abilitare un processamento corretto:
Item Informazione dell’elemento con proprietà attributi.
Item Informazione dell’attributo con proprietà nome namespace, nome locale e valore normalizzato.
Inoltre, le seguenti proprietà potrebbero essere presenti nell’output infoset:
proprietà tipo d’attributo negli Item Informazione dell’Attributo.
La specifica Canonical XML
Version 1.0 descrive un processo nel quale gli attributi nel namespace xml: sono ereditati in un documento canonico. Mentre questo produce un risultato accettabile con gli attributi xml:lang o xml:space, il processamento degli attributi xml:id in questa forma probabilmente produrrà documenti che contengano errori xml:id,
specificamente valori d’attributo xml:id che non siano unici.
Questa è un’apparente fessura nel disegno del XML canonico. La specifica Exclusive XML Canonicalization Version 1.0 non ha questa caratteristica e può essere più appropriata per i documenti che abbiano ID.
Quest’appendice descrive come il processamento xml:id interagisce con le tecnologie di validazione selezionate.
Si promuove l’uso per gli autori DTD degli attributi xml:id quando forniscano identificatori per elementi dichiarati nei suoi DTD.
Il seguente frammento DTD dà un esempio di dichiarazione per attributo xml:id:
<!ATTLIST someElement
xml:id ID #IMPLIED
>
Si promuove per gli autori DTD la dichiarazione d’attributi chiamati xml:id
con il tipo ID. Un documento che usi attributi xml:id
che abbiano un tipo dichiarato diverso da ID sempre genereranno errori xml:id.
Gli utenti di documenti validati con l’uso d’attributi xml:id
dichiarati propriamente possono riconoscere gli ID con la proprietà tipo d’attributo.
Per gli autori Schema XML si promuove l’uso degli attributi xml:id quando si forniscono gli identificatori per elementi dichiarati nei suoi schemi. Si tenga conto che questo può essere portato a termine più facilmente importando lo schema per XML namespace e usando la dichiarazione d’attributo che contiene.
Il seguente frammento Schema XML per il namespace XML mostra un esempio di dichiarazione d’attributo xml:id:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/XML/1998/namespace">
<xs:attribute name="id" type="xs:ID"/>
</xs:schema>
Per gli autori Schema XML si promuove la dichiarazione d’attributi nominati xml:id con il tipo xs:ID. Un documento che usa attributi xml:id che abbiano un tipo dichiarato diverso da xs:ID sempre genereranno errori xml:id.
I consumatori di documenti che validino attributi xml:id contro uno schema appropriato per il namespace XML possono riconoscere ID attraverso la famiglia definizione di tipo delle proprietà PSVI.
Le applicazioni possono riconoscere attributi xml:id come ID usando concettualmente un Processore di Conformità Schema Minima e lo schema di sotto.
Gli effetti di un Processore di Conformità Schema Minima, processando lo schema di sotto, si possono vedere in approssimazione osservando gli attributi chiamati xml:id, assicurandosi che i valori di questi attributi abbiano la forma lessicale corretta (NCName), e che il valore sia unico dentro il documento.
Gli autori di RELAX NG Grammar sono incoraggiati ad usare attributi xml:id quando forniscano gli identificatori per gli elementi dichiarati in loro schemi.
Il seguente frammento RELAX NG mostra un esempio di dichiarazione per l’attributo xml:id:
<optional xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<attribute name="xml:id">
<data type="ID"/>
</attribute>
</optional>
Gli autori RELAX NG Grammar sono incoraggiati a dichiarare attributi chiamati xml:id con il tipo xs:ID. Un documento che usi attributi xml:id che abbiano un tipo dichiarato diverso da xs:ID sempre genererà errori xml:id.
[XML 1.0] richiede che i parser normalizzino tutti i valori d’attributo. La normalizzazione espande i caratteri referenze, le entità referenze e pulisce i caratteri line end. Gli attributi del tipo ID sono esposti a regole addizionali di normalizzazione: rimuovere i caratteri leading e trailing space e sostituire le sequenze di spazi con un singolo spazio.
Il processore xml:id deve assicurare che entrambi i passi della normalizzazione eseguiscano tutti gli attributi chiamati xml:id. In particolare, il parser può non aver effettuato i passi addizionali della normalizzazione richiesti per gli attributi del tipo ID perché l’attributo può non essere stato dichiarato o essere stato dichiarato come un ID.
Si consideri il seguente documento:
<!DOCTYPE doc [ <!ATTLIST doc xml:id ID #IMPLIED> ]> <doc xml:id=" one "> <para xml:id=" two "></para> </doc>
Il valore iniziale di xml:id in doc sarà “uno” perché il parser sa che era un ID. Il valore iniziale in para sarà “due”. Giacché il parser non sapeva che era un ID, non effettuerà le normalizzazioni addizionali richieste.
Dopo il processamento xml:id, il valore degli attributi xml:id in
doc e para sarà “uno” e “due”, rispettivamente. Questi valori propriamente normalizzati saranno memorizzati nella proprietà valore normalizzato nell’infoset. L’esecuzione del processamento xml:id cambia l’infoset se vi sono attributi xml:id normalizzati incompletamente.
Nota:
Per ragioni d’interoperabilità, i produttori di documenti dovranno usare valore completamente normalizzati che siano NCNames legali in attributi xml:id.
Associating Style Sheets with XML documents
XML-Signature XPath Filter 2.0
XPointer element() Scheme
XPointer Framework
XPointer xmlns() Scheme
XML Inclusions (XInclude) Version 1.0
XML-binary Optimized Packaging
xml:id Version 1.0
XML Information Set (Second Edition)
OWL Web Ontology Language - Use Cases and Requirements
Ruby Annotation in Spanish
Ruby Annotation in Italian
SOAP Introduction