2016-10-13 42 views
0

我一直認爲XML DOM Element.getAttribute(name)被指定爲返回空字符串,如果該屬性不存在。但我只是讀Mozilla's docs,這說瀏覽器返回null。它繼續引用WhatWG spec,確實說它應該返回null。但是我回到了W3C的DOM Level 3規範,它說這個方法應該返回空字符串。Element.getAttribute()對於缺少的屬性有什麼故事?

那真正的故事是什麼?真正的規格是什麼? WhatWG規範現在是否真的取代了DOM的W3C規範?幾年後我還沒有碰過這種東西,那麼我是否落後於時代?

回答

1

什麼是真正的規格?

https://dom.spec.whatwg.org/是規範的DOM規範。這是唯一的DOM規範,實際上仍然在維護和更新,並且可以修復錯誤。它取代了以前的所有DOM規範。這是瀏覽器引擎實施者正在實施的規範。因此,如果您發現特定瀏覽器的行爲與https://dom.spec.whatwg.org/中的要求不符,則應提交瀏覽器錯誤,要求他們更新瀏覽器以符合規範。

+1

旁註:瀏​​覽器不是唯一的DOM實現,OP沒有具體說明他是否只關心那些 – the8472

+0

那麼Java XML解析器的實現是否遵循WhatWG規範或W3C規範?活動從什麼時候開始從W3C遷移?是否有規範性文件描述了規範所有權的這種變化? –

+0

我不知道Java XML DOM工具是做什麼的。如果他們很早以前寫過,他們可能沒有及時更新當前的規範,如果有的話,我猜他們的作者可能沒有計劃更新它們。這裏的上下文是https://dom.spec.whatwg。org文檔中描述了瀏覽器引擎實際實現的內容,因此如果您使用非瀏覽器實現,並且對您很重要,它的行爲與瀏覽器的行爲相同,那麼您選擇一個。但是,如果與瀏覽器的互操作性不重要,那就不要這樣做。 Java XML DOM工具的行爲與瀏覽器DOM實現的行爲並不重要。 – sideshowbarker

1

當前版本的W3C DOM規範是DOM4。 DOM4中getAttribute的行爲已經發生了變化,因此W3C似乎趕上了WHATWG。據Wikipedia

DOM的主要標準化是由W3C於去年制定的建議在2004年WHATWG接手標準的發展,發佈爲一個活的文件處理。 W3C現在發佈了WHATWG標準的穩定快照

DOM Level 1DOM Level 2DOM Level 3

返回值

Attr值作爲一個字符串,或空字符串如果該屬性沒有指定或默認值。

W3C DOM4

返回上下文對象的屬性列表,其名稱是否則在第一屬性的值。

+0

因此,我認爲符合DOM Level 2的XML解析器仍然會返回空字符串? –

+0

@GarretWilson如果它聲稱遵守DOM Level 2,是的。 – nwellnhof

+1

以上所有內容都是準確的,但有一點值得注意:就引用的聲明「W3C現在發佈WHATWG標準的穩定快照**」而言,雖然在2014年年底前這種情況確實存在一段時間,但它仍然是準確的不再是真的。 https://www.w3.org/TR/dom/不再被維護,並且自2014年以來沒有對上游https://dom.spec.whatwg.org/規範進行任何更改https:// github .COM/W3C/DOM /提交/ GH-頁 – sideshowbarker