Verwalten von Namespaces in einem XML-Dokument
XML-Namespaces ordnen benutzerdefinierten und vordefinierten URIs in einem XML-Dokument Element- und Attributnamen zu. Um diese Zuordnungen zu erstellen, definieren Sie Präfixe für Namespace-URIs und verwenden diese zur Kennzeichnung von Element- und Attributnamen in XML-Daten. Namespaces verhindern Konflikte zwischen Element- und Attributnamen. Sie ermöglichen eine unterschiedliche Verarbeitung und Validierung von gleichnamigen Elementen und Attributen.
Deklarieren von Namespaces
Um einen Namespace für ein Element zu deklarieren, verwenden Sie das xmlns:
-Attribut:
xmlns:<name>=<"uri">
<name>
entspricht dabei dem Namespacepräfix und <"uri">
dem URI, durch den der Namespace identifiziert wird. Nachdem das Präfix deklariert wurde, können Sie mit ihm Elemente und Attribute in einem XML-Dokument kennzeichnen und diese dem Namespace-URI zuordnen. Da das Namespacepräfix im gesamten Dokument verwendet wird, sollte es möglichst kurz sein.
Im Beispiel werden zwei BOOK
-Elemente definiert. Das erste Element wird durch das Präfix mybook
, das zweite durch das Präfix bb
gekennzeichnet. Jedes Präfix wird einem anderen Namespace-URI zugeordnet:
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
Sie können angeben, dass ein Element Teil eines bestimmten Namespaces ist, indem Sie das Namespacepräfix hinzufügen. Wenn das Author
-Element beispielsweise zum mybook
-Namespaces gehört, wird es als <mybook:Author>
deklariert.
Gültigkeitsbereich der Deklaration
Ein Namespace gilt ab dem Punkt der Deklaration bis zum Ende desjenigen Elements, in dem er deklariert wurde. In diesem Beispiel wird der im BOOK
-Element definierte Namespace nicht auf Elemente außerhalb des BOOK
-Elements, z. B. das Publisher
-Element, angewendet:
<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>
Ein Namespace muss deklariert werden, bevor er verwendet werden kann, aber er muss sich nicht unbedingt am Anfang des XML-Dokuments befinden.
Wenn Sie mehrere Namespaces in einem XML-Dokument verwenden, können Sie einen Namespace als Standardnamespace definieren, um ein übersichtlicheres Dokument zu erstellen. Der Standardnamespace wird im Stammelement deklariert und auf alle nicht gekennzeichneten Elemente im Dokument angewendet. Standardnamespaces gelten nur für Elemente und nicht für Attribute.
Um den Standardnamespace zu verwenden, lassen Sie das Präfix und den Doppelpunkt in der Elementdeklaration aus:
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
Verwalten von Namespaces
In der XmlNamespaceManager-Klasse wird eine Sammlung von Namespace-URIs und ihrer Präfixe gespeichert. Sie können Namespaces in der Sammlung suchen, hinzufügen und entfernen. In bestimmten Kontexten ist die Klasse erforderlich, um die XML-Verarbeitungsleistung zu verbessern. So wird XsltContext von der XmlNamespaceManager-Klasse verwendet, um XPath-Unterstützung bereitzustellen.
Der Namespace-Manager führt keine Validierung der Namespaces durch, sondern setzt voraus, dass Präfixe und Namespaces bereits überprüft wurden und der W3C-Spezifikation für Namespaces entsprechen.
Hinweis
LINQ to XML in C# und Visual Basic verwenden nicht XmlNamespaceManager zum Verwalten von Namespaces. Informationen zur Verwaltung von Namespaces bei der Verwendung von LINQ to XML finden Sie in der LINQ-Dokumentation unter Arbeiten mit XML-Namespaces (C#) und Arbeiten mit XML-Namespaces (Visual Basic).
Im Folgenden finden Sie einige der Verwaltungs- und Suchaufgaben, die Sie mit der XmlNamespaceManager-Klasse ausführen können. Weitere Informationen und Beispiele finden Sie, indem Sie den Links zur Referenzseite der einzelnen Methoden oder Eigenschaften folgen.
Beschreibung | Verwendung |
---|---|
Hinzufügen eines Namespaces | AddNamespace-Methode |
Entfernen eines Namespaces | RemoveNamespace-Methode |
Suchen des URIs für den Standardnamespace | DefaultNamespace -Eigenschaft |
Suchen des URIs für ein Namespacepräfix | LookupNamespace-Methode |
Suchen des Präfixes für einen Namespace-URI | LookupPrefix-Methode |
Abrufen einer Namespaceliste im aktuellen Knoten | GetNamespacesInScope-Methode |
Festlegen des Gültigkeitsbereichs für einen Namespace | Die Methoden PushScope und PopScope |
Überprüfen, ob im aktuellen Gültigkeitsbereich ein Präfix definiert ist | HasNamespace-Methode |
Abrufen der Namenstabelle, die für die Suche nach Präfixen und URIs verwendet wird | NameTable -Eigenschaft |