Obor názvů XML - XML namespace

Obory názvů XML se používají k poskytování jednoznačně pojmenovaných prvků a atributů v dokumentu XML . Jsou definovány v doporučení W3C . Instance XML může obsahovat názvy prvků nebo atributů z více než jedné slovní zásoby XML. Pokud je každé slovní zásobě přidělen jmenný prostor , lze vyřešit nejednoznačnost mezi identicky pojmenovanými prvky nebo atributy.

Jednoduchým příkladem by bylo vzít v úvahu instanci XML, která obsahovala odkazy na zákazníka a objednaný produkt. Zákaznický prvek i produktový prvek mohou mít podřízený prvek s názvem id . Odkazy na prvek id by proto byly nejednoznačné; jejich umístění do různých jmenných prostorů by odstranilo nejednoznačnost.

Názvy jmenného prostoru

Název namespace je identifikátor Uniform Resource (URI). Typicky identifikátor URI vybraný pro obor názvů dané slovní zásoby XML popisuje prostředek pod kontrolou autora nebo organizace definující slovní zásobu, například adresu URL webového serveru autora. Specifikace oboru názvů však nevyžaduje ani nenavrhuje, aby byl identifikátor URI oboru názvů použit k načtení informací; jednoduše se s ním zachází jako s analyzátorem XML jako s řetězcem. Například samotný dokument na adrese http://www.w3.org/1999/xhtml neobsahuje žádný kód. Jednoduše popisuje jmenný prostor XHTML pro lidské čtenáře. Použití identifikátoru URI (například „http://www.w3.org/1999/xhtml“) k identifikaci oboru názvů namísto jednoduchého řetězce (například „xhtml“) snižuje pravděpodobnost různých jmenných prostorů s použitím duplicitních identifikátorů.

Přestože je URI výrazového oboru názvů rozšířený, doporučení W3C jej označuje jako název oboru názvů . Specifikace není zcela přesná ohledně přesných pravidel pro názvy oborů názvů (výslovně neříká, že analyzátory musí odmítat dokumenty, kde název oboru názvů není platný identifikátor Uniform Resource Identifier ), a mnoho analyzátorů XML umožňuje použití libovolného řetězce znaků. Ve verzi 1.1 doporučení se název oboru názvů stává Internationalized Resource Identifier , který licencuje použití znaků jiných než ASCII, které byly v praxi již akceptovány téměř veškerým softwarem XML. Termín URI oboru názvů přetrvává nejen v populárním použití, ale také v mnoha dalších specifikacích od W3C a jinde.

Po zveřejnění doporučení Namespaces došlo k intenzivní debatě o tom, jak by se mělo zacházet s relativním URI, přičemž někteří intenzivně argumentovali, že by se s ním mělo jednoduše zacházet jako s řetězcem znaků, a jiní argumentovali s přesvědčením, že by se z něj měl stát absolutní URI vyřešením proti základní URI dokumentu. Výsledkem debaty bylo rozhodnutí W3C, že relativní URI byly zastaralé.

Používání identifikátorů URI ve formě adres URL ve schématu http (například http://www.w3.org/1999/xhtml ) je běžné, a to navzdory absenci formálního vztahu s protokolem HTTP. Specifikace jmenných prostorů neříká, co by se mělo stát, pokud je taková URL dereferencována (tj. Pokud se software pokusí načíst dokument z tohoto umístění). Jednou konvencí přijatou některými uživateli je umístění dokumentu RDDL na dané místo. Obecně by však uživatelé měli předpokládat, že identifikátor URI oboru názvů je jednoduše název, nikoli adresa dokumentu na webu.

Deklarace jmenného prostoru

Obor názvů XML je deklarován pomocí vyhrazeného atributu XML xmlns nebo , jehož hodnota musí být platný název oboru názvů . xmlns:prefix

Například následující deklarace mapuje předponu „xhtml:“ na obor názvů XHTML:

xmlns:xhtml="http://www.w3.org/1999/xhtml"

Jakýkoli prvek nebo atribut, jehož název začíná předponou „xhtml:“, je považován za v oboru názvů XHTML, pokud má nebo předek výše uvedenou deklaraci oboru názvů.

Je také možné deklarovat výchozí jmenný prostor. Například:

xmlns="http://www.w3.org/1999/xhtml"

V tomto případě je jakýkoli prvek bez předpony oboru názvů považován za v oboru názvů XHTML, pokud má nebo předek výše uvedenou výchozí deklaraci oboru názvů.

Pokud v oboru není žádná výchozí deklarace oboru názvů, nemá název oboru názvů žádnou hodnotu. V takovém případě se prvek bez explicitní předpony oboru názvů nepovažuje za součást žádného oboru názvů.

Atributy nikdy nepodléhají výchozímu jmennému prostoru. Atribut bez explicitní předpony oboru názvů se nepovažuje za atribut v žádném oboru jmen.

Obory jmen v API a objektových modelech XML

Různé specifikace zaujaly různé přístupy k tomu, jak jsou aplikacím poskytovány informace o oboru názvů.

Téměř všechny programovací modely umožňují načíst název prvku nebo uzlu atributu jako třídílný název: místní název, předponu oboru názvů a identifikátor URI oboru názvů. Aplikace by se neměly přiklánět k výběru prefixu, ale informace jsou poskytovány, protože mohou být užitečné pro lidské čtenáře. Názvy jsou považovány za rovnocenné, pokud se shodují URI oboru názvů a místní název.

Většina modelů navíc poskytuje určitý způsob určení, které jmenné prostory byly pro daný prvek deklarovány. Tyto informace jsou potřebné, protože některé slovníky XML umožňují, aby se kvalifikované názvy (obsahující předpony oboru názvů) objevovaly v obsahu prvků nebo atributů i v jejich názvech. Tyto informace lze poskytnout třemi hlavními způsoby:

  • Jako uzly atributů s názvem „xmlns“ nebo „xmlns: xxx“ přesně tak, jak jsou jmenné prostory zapsány ve zdrojovém dokumentu XML. Toto je model představovaný společností DOM .
  • Jako deklarace oboru názvů: odlišuje se od atributů, ale odpovídá individuálnímu s příslušnými atributy ve zdrojovém dokumentu XML. Toto je model představený společností JDOM .
  • Jako vazby oboru názvů v oboru: v tomto modelu je aplikace schopna určit, které obory názvů jsou v oboru pro daný prvek, ale není schopna určit, které prvky obsahují skutečné deklarace. Toto je model používaný v XPath , XSLT a XQuery .

Viz také

Reference

  1. ^ Bray, Tim; Dave Hollander; Andrew Layman; Richard Tobin; Henry S. Thompson (prosinec 2009). "Jmenné prostory v XML 1.0" . W3C . Vyvolány 9 October 2010 .
  2. ^ „Časová osa standardů XML a sémantického webu W3C“ (PDF) .
  3. ^ Dodds, Leigh (24 května 2000). "Zprávy ze zákopů" . O'Reilly Media, Inc.
  4. ^ Connolly, Dan (11. září 2000), W3C XML Plenární rozhodnutí o relativních referencích URI v deklaracích jmenného prostoru
  5. ^ Harold, Elliotte Rusty (20. února 2001). „RDDL Me This: What does a Namespace URL Locate?“ . Archivovány od originálu dne 7. května 2017.
  6. ^ „Jmenné prostory v XML 1.0 (třetí vydání)“ . W3C . Vyvolány 28 April 2017 .

externí odkazy