Udostępnij za pośrednictwem


Zarządzanie przestrzeniami nazw w dokumencie XML

Przestrzenie nazw XML kojarzą nazwy elementów i atrybutów w dokumencie XML z niestandardowymi i wstępnie zdefiniowanymi identyfikatorami URI. Aby utworzyć te skojarzenia, zdefiniuj prefiksy dla identyfikatorów URI przestrzeni nazw i użyj tych prefiksów, aby kwalifikować nazwy elementów i atrybutów w danych XML. Przestrzenie nazw uniemożliwiają kolizje nazw elementów i atrybutów oraz umożliwiają obsługę i weryfikowanie elementów i atrybutów o tej samej nazwie.

Deklarowanie przestrzeni nazw

Aby zadeklarować przestrzeń nazw w elemecie, należy użyć atrybutu xmlns: :

xmlns:<name>=<"uri">

gdzie <name> jest prefiksem przestrzeni nazw i <"uri"> jest identyfikatorem URI identyfikującym przestrzeń nazw. Po zadeklarowaniu prefiksu można go użyć do zakwalifikowania elementów i atrybutów w dokumencie XML i skojarzenia ich z identyfikatorem URI przestrzeni nazw. Ponieważ prefiks przestrzeni nazw jest używany w całym dokumencie, powinien być krótki.

W tym przykładzie zdefiniowano dwa BOOK elementy. Pierwszy element jest kwalifikowany przez prefiks , mybooka drugi element jest kwalifikowany przez prefiks . bb Każdy prefiks jest skojarzony z innym identyfikatorem URI przestrzeni nazw:

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

Aby oznaczyć, że element jest częścią określonej przestrzeni nazw, dodaj do niego prefiks przestrzeni nazw. Jeśli na przykład Author element należy do mybook przestrzeni nazw, zostanie zadeklarowany jako <mybook:Author>.

Zakres deklaracji

Przestrzeń nazw jest skuteczna od jego punktu deklaracji do końca elementu, w którym został zadeklarowany. W tym przykładzie przestrzeń nazw zdefiniowana w elemecie BOOK nie ma zastosowania do elementów spoza BOOK elementu, takich jak Publisher element:

<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>  

Aby można było użyć przestrzeni nazw, należy ją zadeklarować, ale nie musi być wyświetlana w górnej części dokumentu XML.

W przypadku używania wielu przestrzeni nazw w dokumencie XML można zdefiniować jedną przestrzeń nazw jako domyślną przestrzeń nazw, aby utworzyć czystszy dokument. Domyślna przestrzeń nazw jest zadeklarowana w elemecie głównym i ma zastosowanie do wszystkich niekwalifikowanych elementów w dokumencie. Domyślne przestrzenie nazw dotyczą tylko elementów, a nie atrybutów.

Aby użyć domyślnej przestrzeni nazw, pomiń prefiks i dwukropek z deklaracji w elemecie :

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

Zarządzanie przestrzeniami nazw

Klasa XmlNamespaceManager przechowuje kolekcję identyfikatorów URI przestrzeni nazw i ich prefiksów oraz umożliwia wyszukiwanie, dodawanie i usuwanie przestrzeni nazw z tej kolekcji. W niektórych kontekstach ta klasa jest wymagana w celu uzyskania lepszej wydajności przetwarzania XML. Na przykład XsltContext klasa używa XmlNamespaceManager obsługi programu XPath.

Menedżer przestrzeni nazw nie przeprowadza żadnej walidacji w przestrzeniach nazw, ale zakłada, że prefiksy i przestrzenie nazw zostały już zweryfikowane i zgodne ze specyfikacją przestrzeni nazw W3C.

Uwaga

LINQ TO XML w językach C# i Visual Basic nie są używane XmlNamespaceManager do zarządzania przestrzeniami nazw. Zobacz Praca z przestrzeniami nazw XML (C#) i Praca z przestrzeniami nazw XML (Visual Basic) w dokumentacji LINQ, aby uzyskać informacje na temat zarządzania przestrzeniami nazw podczas korzystania z LINQ to XML.

Poniżej przedstawiono niektóre zadania zarządzania i wyszukiwania, które można wykonać za pomocą XmlNamespaceManager klasy . Aby uzyskać więcej informacji i przykładów, skorzystaj z linków do strony referencyjnej dla każdej metody lub właściwości.

Działanie Używanie
Dodawanie przestrzeni nazw AddNamespace Metoda
Usuwanie przestrzeni nazw RemoveNamespace Metoda
Znajdź identyfikator URI domyślnej przestrzeni nazw DefaultNamespace Właściwość
Znajdowanie identyfikatora URI dla prefiksu przestrzeni nazw LookupNamespace Metoda
Znajdowanie prefiksu identyfikatora URI przestrzeni nazw LookupPrefix Metoda
Pobieranie listy przestrzeni nazw w bieżącym węźle GetNamespacesInScope Metoda
Określanie zakresu przestrzeni nazw PushScope i PopScope metody
Sprawdzanie, czy prefiks jest zdefiniowany w bieżącym zakresie HasNamespace Metoda
Pobieranie tabeli nazw używanej do wyszukiwania prefiksów i identyfikatorów URI NameTable Właściwość

Zobacz też