2010-07-06 26 views
5

Учитывая следующее (кусочек) мыльного вызова;Что означает 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 = "" из наших запросов. Я, однако, думаю, что они такие же, и они должны изменить свою сторону.

+1

возможно дубликат [что точное использование Xmlns в xml и html] (http://stackoverflow.com/questions/1372064/what-is-the-exact-usage-of-xmlns-in-xml-and-html) – kennytm

+0

(Также уместно: http: // stackoverflow .com/questions/630468/what-is-xmlns-in-every-wpf-file) – kennytm

+2

Я не думаю, что это дубликат. Raymond спрашивает о конкретном использовании xmlns, в то время как ссылки, которые вы предоставили, говорят о xmlns в целом. – maayank

ответ

1

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

+0

Согласно спецификации, с которой вы ссылаетесь, они не одинаковы (но это будет зависеть от окружающего XML). –

+0

Это действительно зависит от контекста. Я рассматривал пример как целостный документ. –

5

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

Так разница:

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

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

Кроме того, некоторые XML парсеры жалуются на Xmlns = «», если нет активных XMLNS = «некоторые: пространство имен» заявление, чтобы очистить ...

Смежные вопросы