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 , mybook
a 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ść |