Dela via


Hantera namnområden i ett XML-dokument

XML-namnområden associerar element- och attributnamn i ett XML-dokument med anpassade och fördefinierade URI:er. Om du vill skapa dessa associationer definierar du prefix för namnområdes-URI:er och använder dessa prefix för att kvalificera element- och attributnamn i XML-data. Namnrymder förhindrar kollisioner mellan element och attributnamn och gör att element och attribut med samma namn kan hanteras och valideras på olika sätt.

Deklarera namnområden

Om du vill deklarera ett namnområde för ett element använder du attributet xmlns: :

xmlns:<name>=<"uri">

där <name> är namnområdesprefixet och <"uri"> är den URI som identifierar namnområdet. När du har deklarerat prefixet kan du använda det för att kvalificera element och attribut i ett XML-dokument och associera dem med namnområdes-URI:n. Eftersom namnområdesprefixet används i ett dokument bör det vara kort.

Det här exemplet definierar två BOOK element. Det första elementet kvalificeras av prefixet , mybookoch det andra elementet kvalificeras av prefixet . bb Varje prefix är associerat med en annan namnområdes-URI:

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

Om du vill ange att ett element är en del av ett visst namnområde lägger du till namnområdesprefixet i det. Om ett Author element till exempel tillhör mybook namnområdet deklareras det som <mybook:Author>.

Deklarationsomfång

Ett namnområde gäller från dess deklarationspunkt till slutet av elementet som det deklarerades i. I det här exemplet gäller inte namnområdet som definierats i elementet BOOK för element utanför elementet BOOK , till exempel elementet 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>  

Ett namnområde måste deklareras innan det kan användas, men det behöver inte visas överst i XML-dokumentet.

När du använder flera namnområden i ett XML-dokument kan du definiera ett namnområde som standardnamnområde för att skapa ett renare dokument. Standardnamnområdet deklareras i rotelementet och gäller för alla okvalificerade element i dokumentet. Standardnamnområden gäller endast för element, inte för attribut.

Om du vill använda standardnamnområdet utelämnar du prefixet och kolonet från deklarationen på elementet:

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

Hantera namnområden

Klassen XmlNamespaceManager lagrar en samling namnområdes-URI:er och deras prefix och låter dig leta upp, lägga till och ta bort namnområden från den här samlingen. I vissa sammanhang krävs den här klassen för bättre XML-bearbetningsprestanda. Klassen XsltContext använder XmlNamespaceManager till exempel för XPath-stöd.

Namnområdeshanteraren utför ingen validering på namnrymderna, men förutsätter att prefix och namnområden redan har verifierats och överensstämmer med specifikationen för W3C-namnområden .

Kommentar

LINQ TILL XML i C# och Visual Basic använder XmlNamespaceManager inte för att hantera namnområden. Se Arbeta med XML-namnområden (C#) och Arbeta med XML-namnområden (Visual Basic) i LINQ-dokumentationen för information om hur du hanterar namnområden när du använder LINQ till XML.

Här är några av de hanterings- och uppslagsuppgifter som du kan utföra med XmlNamespaceManager klassen. Mer information och exempel finns i länkarna till referenssidan för varje metod eller egenskap.

To Använd
Lägga till ett namnområde AddNamespace Metod
Ta bort ett namnområde RemoveNamespace Metod
Hitta URI:n för standardnamnområdet DefaultNamespace Egenskapen
Hitta URI:n för ett namnområdesprefix LookupNamespace Metod
Hitta prefixet för en namnområdes-URI LookupPrefix Metod
Hämta en lista över namnområden i den aktuella noden GetNamespacesInScope Metod
Omfång för ett namnområde PushScope och PopScope metoder
Kontrollera om ett prefix har definierats i det aktuella omfånget HasNamespace Metod
Hämta den namntabell som används för att söka efter prefix och URI:er NameTable Egenskapen

Se även