Накратко за пространствата от имена (XML Namespaces) - Тайните на Интернет
Подобни публикации
Когато създаваме XML документ, може да се сблъскаме с факта, че различни по значение елементи ще имат едно и също име. Можете да видите пример в статията Топ 10 RSS грешки в точка 5, Грешно RSS разширение.
Нека да разгледаме един пример, който очевидно е „пресилен“, но лесен за разбиране. Трябва да направим селекция от две таблици на база данни, отнасящи се до работата на определена музикална група и да формираме каталог под формата на XML документ. Едната таблица на базата данни съдържа информация за аудиозаписите на групата, другата съдържа информация за книги, посветени на неговата работа. По някаква причина (неясно каква, но много важна) както описанието на аудиозаписите, така и описанието на книгите трябва да се съдържат в елемента "item". По същата причина както заглавията на публикациите, така и заглавията на книгите трябва да се съдържат в елемента заглавие. В резултат на това получаваме нещо подобно:
Пространства от имена за елементи
Индикацията за това към кое пространство от имена принадлежи този или онзи елемент се записва преди началото на името на елемента с разделител под формата на двоеточие:
Въз основа на горното, по принцип можете да декларирате пространство от имена за всеки елемент, който се използва в документа:
Пространството от имена, декларирано за елемент, е пространството от имена за всички негови вложени елементи, освен ако за тях не са декларирани други пространства от имена.
Можете да го направите дори по-лесно - декларирайте всички пространства от имена наведнъж в основния елемент:
Не забравяйте обаче, че идентификаторът на пространството от имена е стойността на атрибута " xmlns ", а не неговото префиксно име. В следващия пример всички елементи принадлежат към едно и също пространство (стойността на атрибута е „http://ininfo.biz/group“), въпреки че имат различни префиксни имена („музика“ и „книга“):
Обратното също е разрешено - елементите имат различни пространства от имена, но използват едни и същи префиксни имена:
Можете да правите без префикс имена. За да направите това, трябва да зададете пространството на имената по подразбиране. В този случай даденото пространство ще се използва за елемента, в който се среща, и за всички негови дъщерни (вложени) елементи:
За да замените пространството от имена по подразбиране, задайте атрибута " xmlns " на празен низ:
Пространства от имена за атрибути на елемент
Точно като елементите, техните атрибути също могат да бъдат присвоени на дадено пространство от имена:
Пространството от имена по подразбиране обаче не се разширява до атрибути. Ако даден атрибут няма префикс, тогава той не принадлежи към никое пространство от имена:
Горното също е вярно, когато пространството от имена е зададено на елемента, към който принадлежи атрибутът, например:
* За гражданин на България неговият TIN може да се счита за уникален идентификатор. Не номер на паспорт - паспортът се сменя три пъти и при загуба се издава нов.