Спецификация XML говорит, что неполные пространства имен не находятся ни в одном пространстве имен. Семантика в спецификации является спорной, но все наборы XML-инструментов были созданы для работы таким образом. Видеть:
Пространства имен XML и атрибуты без префиксов
Это концепция, которую мое подсознание ненавидит по причинам, которые мой сознательный мозг пытается сформулировать.
Если неквалифицированные атрибуты не находятся ни в одном пространстве имен, то почему проверка все еще работает? Это противоречие.
И что происходит, когда в области видимости есть два атрибута с одинаковыми именами. Один из пространства имен по умолчанию и один, принадлежащий текущему элементу.
<document xmlns="default.ns" xmlns:hr="humanresources.ns">
<hr:user id="abc" />
</document>
Если id
определено и в default.ns, и в humanresources.ns, но с разными типами данных, скажем, xs:token
и xs:integer
, какое пространство имен будет id
разрешено для проверки, если таковое имеется?
Предполагая, что валидатор ошибется из-за неоднозначности и заставит другие атрибуты быть квалифицированными, тогда мне придется написать вспомогательный метод GetLocalAttribute, чтобы справиться со всем этим?
Нравится:
ids
= выбрать все атрибуты элемента, где localname равноid
b
= выберите одно изids
, где пространство имен равно пространству имен элементов- если
b
!= ноль { вернутьb
} - иначе верните одно из
ids
, где пространство имен равно null
Люк