Condividi tramite


Gestione degli spazi dei nomi in un documento XML

Gli spazi dei nomi XML associano nomi di elementi e attributi in un documento XML con URI personalizzati e predefiniti. Per creare queste associazioni, definire i prefissi per gli URI dello spazio dei nomi e usare tali prefissi per qualificare i nomi degli elementi e degli attributi nei dati XML. Gli spazi dei nomi impediscono conflitti tra nomi di elemento e attributo e consentono di gestire e convalidare in modo diverso elementi e attributi dello stesso nome.

Dichiarazione dei namespace

Per dichiarare un namespace in un elemento, usare l'attributo xmlns::

xmlns:<name>=<"uri">

dove <name> è il prefisso dello spazio dei nomi e <"uri"> è l'URI che identifica lo spazio dei nomi. Dopo aver dichiarato il prefisso, è possibile usarlo per qualificare elementi e attributi in un documento XML e associarli all'URI dello spazio dei nomi. Poiché il prefisso dello spazio dei nomi viene utilizzato in tutto il documento, dovrebbe essere di lunghezza breve.

Questo esempio definisce due BOOK elementi. Il primo elemento è qualificato dal prefisso , mybooke il secondo elemento è qualificato dal prefisso , bb. Ogni prefisso è associato a un URI dello spazio dei nomi diverso:

<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">  
    <bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>

Per indicare che un elemento fa parte di uno spazio dei nomi specifico, aggiungere il prefisso dello spazio dei nomi. Ad esempio, se un Author elemento appartiene allo spazio dei mybook nomi , viene dichiarato come <mybook:Author>.

Ambito della dichiarazione

Il namespace è efficace dal punto di dichiarazione fino alla fine dell'elemento in cui è stato dichiarato. In questo esempio lo spazio dei nomi definito nell'elemento BOOK non si applica agli elementi esterni all'elemento BOOK , ad esempio l'elemento Publisher :

<Author>Joe Smith</Author>  
<BOOK xmlns:book="http://www.contoso.com">  
    <title>My Wonderful Day</title>  
      <price>$3.95</price>  
</BOOK>  
<Publisher>  
    <Name>MSPress</Name>  
</Publisher>  

È necessario dichiarare uno spazio dei nomi prima di poterlo usare, ma non deve essere visualizzato nella parte superiore del documento XML.

Quando si utilizzano più namespace in un documento XML, è possibile definire un namespace come predefinito per creare un documento dall'aspetto più ordinato. Lo spazio dei nomi predefinito viene dichiarato nell'elemento radice e si applica a tutti gli elementi non qualificati nel documento. Gli spazi dei nomi predefiniti si applicano solo agli elementi, non agli attributi.

Per usare lo spazio dei nomi predefinito, omettere il prefisso e i due punti dalla dichiarazione sull'elemento :

<BOOK xmlns="http://www.contoso.com/books.dtd">  
...
</BOOK>

Gestione dei namespace

La classe XmlNamespaceManager memorizza una raccolta di URIs dei namespace e dei loro prefissi, e permette di cercare, aggiungere e rimuovere namespaces da questa raccolta. In determinati contesti, questa classe è necessaria per migliorare le prestazioni di elaborazione XML. Ad esempio, la XsltContext classe usa XmlNamespaceManager per il supporto XPath.

Il gestore di spazi dei nomi non esegue alcuna convalida dei namespaces, ma presuppone che i prefissi e i namespaces siano già stati verificati e conformi alla specifica W3C Namespaces.

Annotazioni

LINQ TO XML in C# e Visual Basic non usano XmlNamespaceManager per gestire i namespace. Per informazioni sulla gestione dei namespace quando si utilizza LINQ to XML, consultare Lavorare con i Namespace XML (C#) e Lavorare con i Namespace XML (Visual Basic) nella documentazione di LINQ.

Ecco alcune delle attività di gestione e ricerca che è possibile eseguire con la XmlNamespaceManager classe . Per altre informazioni ed esempi, seguire i collegamenti alla pagina di riferimento per ogni metodo o proprietà.

Per Utilizzo
Aggiungere uno spazio dei nomi Metodo AddNamespace
Rimuovere un namespace Metodo RemoveNamespace
Trovare l'URI per lo spazio dei nomi predefinito DefaultNamespace proprietà
Trovare l'URI per un prefisso dello spazio dei nomi Metodo LookupNamespace
Trovare il prefisso per un URI dello spazio dei nomi Metodo LookupPrefix
Ottenere un elenco di spazi dei nomi nel nodo corrente Metodo GetNamespacesInScope
Definire l'ambito di uno spazio dei nomi metodi PushScope e PopScope
Controllare se un prefisso è definito nell'ambito corrente Metodo HasNamespace
Ottenere la tabella dei nomi usata per cercare prefissi e URI NameTable proprietà

Vedere anche