Správa oborů názvů v dokumentu XML
Obory názvů XML přidružují názvy elementů a atributů v dokumentu XML k vlastním a předdefinovaným identifikátorům URI. Chcete-li vytvořit tato přidružení, definujete předpony pro identifikátory URI oboru názvů a tyto předpony použijte k kvalifikace názvů elementů a atributů v datech XML. Obory názvů zabraňují kolizím názvů elementů a atributů a umožňují zpracování a ověřování prvků a atributů stejného názvu a jejich ověření odlišně.
Deklarace oborů názvů
Chcete-li deklarovat obor názvů u elementu xmlns:
, použijte atribut:
xmlns:<name>=<"uri">
kde <name>
je předpona oboru názvů a <"uri">
je identifikátor URI, který identifikuje obor názvů. Po deklaraci předpony ji můžete použít k kvalifikace prvků a atributů v dokumentu XML a jejich přidružení k identifikátoru URI oboru názvů. Vzhledem k tomu, že se předpona oboru názvů používá v celém dokumentu, měla by mít krátkou délku.
Tento příklad definuje dva BOOK
prvky. První prvek je kvalifikovaný předponou mybook
a druhý prvek je kvalifikovaný předponou, bb
. Každá předpona je přidružená k jinému identifikátoru URI oboru názvů:
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
Chcete-li znaménko znaménka, že je prvek součástí určitého oboru názvů, přidejte do něj předponu oboru názvů. Například pokud Author
prvek patří do mybook
oboru názvů, je deklarován jako <mybook:Author>
.
Rozsah deklarace
Obor názvů je účinný od bodu deklarace až do konce prvku, ve který byl deklarován. V tomto příkladu se obor názvů definovaný v elementu BOOK
nevztahuje na elementy mimo BOOK
element, například element 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>
Obor názvů musí být deklarován před jeho použitím, ale nemusí se zobrazovat v horní části dokumentu XML.
Pokud v dokumentu XML používáte více oborů názvů, můžete definovat jeden obor názvů jako výchozí obor názvů a vytvořit tak přehlednější dokument. Výchozí obor názvů je deklarován v kořenovém elementu a vztahuje se na všechny nekvalifikované prvky v dokumentu. Výchozí obory názvů se vztahují pouze na elementy, nikoli na atributy.
Chcete-li použít výchozí obor názvů, vynecháte předponu a dvojtečku z deklarace elementu:
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
Správa oborů názvů
Třída XmlNamespaceManager ukládá kolekci identifikátorů URI oboru názvů a jejich předpon a umožňuje vyhledávat, přidávat a odebírat obory názvů z této kolekce. V určitých kontextech je tato třída nutná k lepšímu výkonu zpracování XML. XsltContext Například třída používá XmlNamespaceManager pro podporu XPath.
Správce oboru názvů neprovádí žádné ověření oborů názvů, ale předpokládá, že předpony a obory názvů jsou již ověřeny a odpovídají specifikaci oborů názvů W3C.
Poznámka:
LINQ TO XML v jazyce C# a Visual Basic se nepoužívají XmlNamespaceManager ke správě oborů názvů. Informace o správě oborů názvů při použití LINQ to XML najdete v tématu Práce s obory názvů XML (C#) a Práce s obory názvů XML (Visual Basic).
Tady jsou některé úlohy správy a vyhledávání, které můžete s třídou provádět XmlNamespaceManager . Další informace a příklady najdete na odkazech na referenční stránku pro každou metodu nebo vlastnost.
Záměr | Používání |
---|---|
Přidání oboru názvů | AddNamespace Metoda |
Odebrání oboru názvů | RemoveNamespace Metoda |
Vyhledání identifikátoru URI pro výchozí obor názvů | DefaultNamespace Vlastnost |
Vyhledání identifikátoru URI pro předponu oboru názvů | LookupNamespace Metoda |
Vyhledání předpony identifikátoru URI oboru názvů | LookupPrefix Metoda |
Získání seznamu oborů názvů v aktuálním uzlu | GetNamespacesInScope Metoda |
Obor názvů | PushScope a PopScope metody |
Kontrola, jestli je předpona definovaná v aktuálním oboru | HasNamespace Metoda |
Získání tabulky názvů používané k vyhledání předpon a identifikátorů URI | NameTable Vlastnost |