Что именно означает xmlns = "" - PullRequest
5 голосов
/ 06 июля 2010

Учитывая следующий (фрагмент) мыльный вызов:

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

В сущности, это то же самое, что (при проверке xsd с использованием XMLSpy)

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

Так что жеxmlns = "" сделать точно?

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

Ответы [ 2 ]

5 голосов
/ 06 июля 2010

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

Таким образом, разница:

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

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

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

1 голос
/ 06 июля 2010

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

...