Что делает xmlns =, “” точно означают

Учитывая следующее (часть) вызов мыла;

<m1:NextCommencementDateInput xmlns:m1="http://foo.bar.com/Types">
    <aDate xmlns="">2010-06-02</aDate>
</m1:NextCommencementDateInput>

Apperantly это совпадает с (при проверке против xsd, использующего XMLSpy)

<m1:NextCommencementDateInput xmlns:m1="http://foo.bar.com/Types">
    <aDate>2010-06-02</aDate>
</m1:NextCommencementDateInput>

Таким образом, что делает xmlns = "", делают точно?

Править: Для разработки, почему я спрашиваю, это вызвано тем, что я звоню третьему лицу, и они теперь заявляют, что мы должны удалить xmlns = "" из наших запросов. Я однако думаю, что они - то же, и они должны изменить свою сторону.

5
задан Raymond 6 July 2010 в 08:24
поделиться

2 ответа

xmlns = "" очищает определение пространства имен по умолчанию (также известного как пустой префикс). После этого объявления все элементы без префикса считаются имеющими пустое пространство имен.

Итак, разница такова:

  • Первый пример (с xmlns = "") очищает пустой префикс, поэтому элемент aDate имеет пустое пространство имен.

  • Второй пример этого не проясняет. Пространство имен элемента aDate зависит от объявления пространства имен в содержащей его области. Если есть активное объявление xmlns = "some: namespace", aDate будет иметь это пространство имен. В противном случае у него будет пустое пространство имен.

Кроме того, некоторые анализаторы XML жалуются на xmlns = "", если нет активного объявления xmlns = "some: namespace" для очистки ...

6
ответ дан 14 December 2019 в 08:40
поделиться

Согласно спецификации XML Namespace (§6.2), они полностью идентичны, за исключением самого дополнительного атрибута (который ваша реализация может скрывать или не скрывать от вас).

1
ответ дан 14 December 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: