XML -Namespace
XML -Namespaces werden verwendet, um einzigartig benannt zu sein Elemente und Attribute in einem Xml dokumentieren. Sie sind in a definiert W3C -Empfehlung.[1][2] Eine XML -Instanz kann Element- oder Attributnamen aus mehr als einem XML -Vokabular enthalten. Wenn jedes Wortschatz a gegeben ist a NamespaceDie Mehrdeutigkeit zwischen identisch benannten Elementen oder Attributen kann gelöst werden.
Ein einfaches Beispiel wäre, eine XML -Instanz zu berücksichtigen, die Verweise auf einen Kunden und ein bestelltes Produkt enthielt. Sowohl das Kundenelement als auch das Produktelement könnten ein untergeordnetes Element namens genannt haben Ich würde. Verweise auf die Ich würde Element wäre daher mehrdeutig; Das Platzieren in verschiedenen Namensspitzen würde die Mehrdeutigkeit entfernen.
Namespace -Namen
A Namespace -Name ist ein Einheitliche Ressourcenkennung (URI). Normalerweise beschreibt die für den Namespace eines bestimmten XML -Vokabulars ausgewählte URI eine Ressource unter der Kontrolle des Autors oder der Organisation, die das Wortschatz definiert, wie z. B. a URL Für den Webserver des Autors. Die Namespace -Spezifikation erfordert jedoch weder, dass der Namespace -URI zum Abrufen von Informationen verwendet wird. Es wird einfach von einem XML -Parser als Zeichenfolge behandelt. Zum Beispiel das Dokument bei http://www.w3.org/1999/xhtml selbst enthält keinen Code. Es beschreibt einfach das Xhtml Namespace an menschliche Leser. Wenn Sie einen URI (z.
Obwohl der Begriff Namespace Uri ist weit verbreitet, die W3C -Empfehlung bezeichnet sie als die Namespace -Name. Die Spezifikation ist nicht völlig vorschreiber über die genauen Regeln für Namespace -Namen Einheitliche Ressourcenkennung) und viele XML -Parser ermöglichen es, dass jede Zeichenzeichenfolge verwendet wird. In Version 1.1 der Empfehlung wird der Namespace -Name zu einem Internationalisierte Ressourcenkennung, die die Verwendung von Nicht-ASCII-Zeichen lizenziert, die in der Praxis bereits von fast allen XML-Software akzeptiert wurden. Der Begriff Namespace Uri Doch nicht nur in der Bevölkerung, sondern auch in vielen anderen Spezifikationen von W3C und anderswo bestehen.
Nach der Veröffentlichung der Namespaces -Empfehlung gab es eine intensiv Durch die Lösung des Basis -URI des Dokuments.[3] Das Ergebnis der Debatte war eine Entscheidung von W3C, dass relative URIs veraltet waren.[4]
Die Verwendung von URIs, die in Form von URLs im HTTP -Schema angehen (wie z. http://www.w3.org/1999/xhtml) ist üblich, trotz des Fehlens einer formalen Beziehung zum HTTP -Protokoll. In der Namespaces -Spezifikation wird nicht angegeben, was passieren soll, wenn eine solche URL derenferenziert ist (dh wenn Software versucht, ein Dokument von diesem Ort abzurufen). Eine von einigen Benutzern übernommene Konvention besteht darin, eine zu platzieren Rddl Dokument am Standort.[5] Im Allgemeinen sollten Benutzer jedoch davon ausgehen, dass der Namespace URI einfach ein Name ist, nicht die Adresse eines Dokuments im Web.
Namespace Deklaration
Ein XML -Namespace wird mit dem reservierten XML -Attribut deklariert xmlns
oder XMLNS: Präfix
, dessen Wert ein gültig sein muss Namespace -Name.
Beispielsweise ordnet die folgende Deklaration den "xhtml:" -Präfix dem XHTML -Namespace ab:
xmlns: xhtml = "http://www.w3.org/1999/xhtml"
Jedes Element oder Attribut, dessen Name mit dem Präfix "xhtml:" beginnt, gilt als im XHTML -Namespace, wenn es oder ein Vorfahr die obige Namespace -Deklaration hat.
Es ist auch möglich, einen Standard -Namespace zu deklarieren. Zum Beispiel:
xmlns = "http://www.w3.org/1999/xhtml"
In diesem Fall wird ein Element ohne Namespace -Präfix als im XHTML -Namespace angesehen, wenn es oder ein Vorfahr die obige Standard -Namespace -Deklaration hat.
Wenn es keine Standard -Namespace -Deklaration im Umfang gibt, hat der Namespace -Name keinen Wert.[6] In diesem Fall wird ein Element ohne explizites Namespace -Präfix als in keinem Namespace angesehen.
Attribute unterliegen niemals dem Standard -Namespace. Ein Attribut ohne explizites Namespace -Präfix wird als in keinem Namespace befindet.
Namespaces In API- und XML -Objektmodellen
Unterschiedliche Spezifikationen haben unterschiedliche Ansätze zur Präsentation von Namespace -Informationen für Anwendungen verfolgt.
Fast alle Programmiermodelle ermöglichen es, dass der Name eines Element- oder Attributknotens als dreiteiliger Name abgerufen werden: den lokalen Namen, das Namespace-Präfix und den Namespace URI. Anwendungen sollten vermeiden, dass die Auswahl des Präfixs eine Bedeutung beibekommt. Die Informationen werden jedoch bereitgestellt, da sie für menschliche Leser hilfreich sein können. Namen gelten als gleich, wenn der Namespace URI und der lokale Name übereinstimmen.
Darüber hinaus bieten die meisten Modelle eine Möglichkeit, zu bestimmen, welche Namespaces für ein bestimmtes Element deklariert wurden. Diese Informationen werden benötigt, da einige XML -Vokabulare qualifizierte Namen (mit Namespace -Präfixen) im Inhalt von Elementen oder Attributen sowie in ihren Namen ermöglichen. Es gibt drei Hauptmöglichkeiten, wie diese Informationen bereitgestellt werden können:
- Als Attributknoten namens "XMLNS" oder "XMLNS: XXX", genau wie die Namespaces im Quell -XML -Dokument geschrieben sind. Dies ist das Modell, das von präsentiert wird Dom.
- Als Namespace Deklarationen: Unterscheidet von Attributen, entsprechend eins zu eins mit den relevanten Attributen im Quell-XML-Dokument. Dies ist das Modell, das von präsentiert wird Jdom.
- Als In-Scope-Namespace-Bindungen: In diesem Modell kann die Anwendung feststellen, welche Namespaces für ein bestimmtes Element in den Geltungsbereich enthalten ist, aber nicht in der Lage ist, zu bestimmen, welche Elemente die tatsächlichen Deklarationen enthalten. Dies ist das Modell, in dem verwendet wird XPath, Xslt, und XQuery.
Siehe auch
Verweise
- ^ Bray, Tim; Dave Hollander; Andrew Layman; Richard Tobin; Henry S. Thompson (Dezember 2009). "Namespaces in XML 1.0". W3c. Abgerufen 9. Oktober 2010.
- ^ "XML und Semantic Web W3C Standards Timeline (V.1.2)" (PDF).
- ^ Dodds, Leigh (24. Mai 2000). "Nachrichten aus den Gräben". O'Reilly Media, Inc.
- ^ Connolly, Dan (11. September 2000), W3C XML Plenarentscheidung zu relativen URI -Referenzen in Namespace -Deklarationen
- ^ Harold, Elliotte Rusty (20. Februar 2001). "Rddl mich das: Was findet eine Namespace -URL?". Archiviert von das Original am 7. Mai 2017.
- ^ "Namespaces in XML 1.0 (dritte Ausgabe)". W3c. Abgerufen 28. April 2017.