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 zapobiegają kolizjom nazw elementów i atrybutów oraz pozwalają na obsługę i weryfikację 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 w deklaracji elementu.

<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 klasa XsltContext używa XmlNamespaceManager do obsługi 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 / Notatka

LINQ TO XML w C# i Visual Basic nie używa 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.

Do Użyj
Dodawanie przestrzeni nazw Metoda AddNamespace
Usuń przestrzeń nazw Metoda RemoveNamespace
Znajdź identyfikator URI domyślnej przestrzeni nazw DefaultNamespace własność
Znajdowanie identyfikatora URI dla prefiksu przestrzeni nazw Metoda LookupNamespace
Znajdowanie prefiksu identyfikatora URI przestrzeni nazw Metoda LookupPrefix
Uzyskaj listę przestrzeni nazw w bieżącym węźle Metoda GetNamespacesInScope
Określanie zakresu przestrzeni nazw metody PushScope i PopScope
Sprawdź, czy prefiks jest zdefiniowany w bieżącym zakresie Metoda HasNamespace
Pobieranie tabeli nazw używanej do wyszukiwania prefiksów i identyfikatorów URI NameTable własność

Zobacz także