2010-07-06 106 views
5

給定以下(一塊)肥皂調用;xmlns =「」究竟意味着什麼

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

Apperantly這是一樣的

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

那麼,是什麼的xmlns = 「」 做的正是(反對使用的XMLSpy的XSD驗證時)?

編輯:闡述爲什麼我問這是因爲我打電話給第三方,他們現在說我們應該從我們的請求中刪除xmlns =「」。然而我認爲他們是一樣的,他們應該改變自己的一面。

+1

的可能重複[什麼是的xmlns的確切用法xml和html](http://stackoverflow.com/questions/1372064/what-is-the-exact-usage-of-xmlns-in-xml-and-html) – kennytm 2010-07-06 07:54:12

+0

(也相關:http:// stackoverflow .com/questions/630468/what-is-xmlns-in-every-wpf-file) – kennytm 2010-07-06 07:54:49

+2

我不認爲這是重複的。 Raymond詢問有關xmlns的具體用法,而您提供的鏈接一般都在討論xmlns。 – maayank 2010-07-06 08:16:33

回答

1

根據XML Namespace specification (§6.2),除了額外屬性本身(您的實現可能會或可能不會隱藏)之外,它們是完全相同的。

+0

根據規範,你鏈接到他們*不*相同(但它將取決於周圍的XML)。 – 2010-07-06 08:35:32

+0

這確實取決於上下文。我將整個案例作爲整個文件。 – 2010-07-06 09:13:40

5

xmlns=""清除默認命名空間(又名空白前綴)的定義。在這個聲明之後,所有沒有前綴的元素都被認爲具有空名稱空間。

所以所不同的是:

  • 第一示例(使用的xmlns = 「」)清除空前綴,以便ADATE元件具有空的命名空間。

  • 第二個例子沒有清除它。 aDate元素的名稱空間取決於包含作用域中的名稱空間聲明。如果存在活動的xmlns =「some:namespace」聲明,則aDate將具有此名稱空間。否則它將具有空名稱空間。

此外,一些XML解析器抱怨上的xmlns =「」如果沒有積極的xmlns =「一些:namespace」聲明以清除......

相關問題