[2] [DFN[DOM[RUBYB[水準]@en[Level]]1]] は、 [[W3C]] で初めて[[勧告]]になった [[DOM]]
の仕様です。

* 構成

[9] [[DOM1 Core]] と [[DOM1 HTML]] が含まれていました。

[13] [[DOM1 Core]] は更に[[中核モジュール]]部分と [[DOM XML]] 部分に分かれていました。

-*-*-

[14] [[DOM1]] は [[Netscape4]] の [[JavaScript]] の [[DOM]] 部分と [[IE4 DOM]]
を引き継いで初めて[[標準化]]されたものでした。
といっても [[Netscape4]] の [[DOM]] や [[IE4 DOM]] とはほとんど互換性がなく、
[[IE4 DOM]] の[[データモデル]]を整理したものを新規 [[API]] として規定したものでした。

;; [15] [[DOM1]] で標準に含まれなかった既存の [[API]] は俗に [[DOM0]] と呼ばれ、
非常によく用いられ [[Webブラウザー]]の [[JavaScript]]
の基盤となる部分でありながら [[HTML5]] まで[[Web標準]]からは無視されていました。

-*-*-

[16] [[DOM1]] の内容はすべて [[DOM2]] にも引き継がれています。
いくつかの変更点を除いて技術的な内容も[[仕様書]]の構成もほとんど同じとなっています。

[17] 形式的には [[DOM2]] が公開された後も [[DOM1]] は [[W3C勧告]]として存続しています。
当初は [[DOM1]] の第2版の開発が並行して進められていましたが、
[[DOM2]] の開発に集中することを理由に中断されました。

[18] 現在は [[DOM1]] の内容は [CITE[Web IDL]]、[CITE[DOM Standard]]、
[CITE[HTML Standard]] で規定されています。

* 歴史

[REFS[
- [3] [CITE@en[Document Object Model (DOM) Level 1 Specification]] ([TIME[1998-10-01 21:01:54 +09:00]] 版) <http://www.w3.org/TR/REC-DOM-Level-1/>
- [4] [CITE@en[Document Object Model (DOM) Level 1 Specification]] ([TIME[1998-10-01 21:01:54 +09:00]] 版) <http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/>
- [5] [CITE@en[Document Object Model (DOM) Level 1 Specification (Second Edition)]] ([TIME[2000-09-30 05:48:57 +09:00]] 版) <http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/>
]REFS]

[6] 1998年に最初の [[W3C勧告]]が出版されました。

[7] その後[[第2版]]も開発が始められましたが、 [[DOM2]] の開発に集中することを理由に中止されています。

[8] [[DOM2]] には完全に含まれていますが (一部仕様変更あり)、 [[DOM1]]
は [[DOM2]] の出版後も[[廃止]]はされずに残されているようです。

[1] DOM 水準1 API の変遷:
,WD 971009	,WD 971209	,WD 980318	,WD 980416	,WD 980720	,PR 980818	,REC 981001	,WD 000929
,	,[Core]DOM	,==	,==	,[Core]DOMImplementation	,==	,==	,==
,	,getFactory
,	,	,createDocument	,==
,	,	,hasFeature	,==	,==	,==	,==	,==
,	,[Core]DOMFactory
,	,createDocument
,	,createDocumentContext
,	,createElement
,	,createTextNode
,	,createComment
,	,createPI
,	,createAttribute
,[Core]DocumentContext	,==	,==	,==
,document[RW]	,==	,==	,==
,	,	,[Core]DocumentFragment	,==	,==	,==	,==	,==
,	,	,masterDoc[RW]	,==	,masterDoc[R]
,[Core]Document : Node	,==	,==	,==	,[Core]Document : DocumentFragment	,[Core]Document : Node	,==	,==
,documentType[RW]	,==	,==	,==	,doctype[R]	,==	,==	,==
,	,	,	,	,implementation[R]	,==	,==	,==
,documentElement[RW]	,==	,==	,==	,documentElement[R]	,==	,==	,==
,	,	,contextInfo	,==
,	,	,createDocumentContext	,==
,	,	,createElement	,==	,==	,==	,==	,==
,	,	,	,	,createDocumentFragment	,==	,==	,==
,	,	,createTextNode	,==	,==	,==	,==	,==
,	,	,createComment	,==	,==	,==	,==	,==
,	,	,	,	,createCDATASection	,==	,==	,==
,	,	,createPI	,==	,createProcessingInstruction	,==	,==	,==
,	,	,createAttribute	,==	,createAttribute	,==	,==	,==
,	,	,createAttributeList	,==
,	,	,	,createTextIterator
,	,	,	,	,createEntity
,	,	,	,	,createEntityReference	,==	,==	,==
,	,getElementsByTagName	,==	,==	,==	,==	,==	,==
,[Core]Node	,==	,==	,==	,==	,==	,==	,==
,	,	,	,	,nodeName[R]	,==	,==	,==
,	,	,	,	,nodeValue[RW]	,==	,==	,==
,getNodeType	,==	,==	,==	,nodeType[R]	,==	,==	,==
,getParentNode	,==	,==	,==	,parentNode[R]	,==	,==	,==
,getChildren	,==	,getChildNodes	,==	,childNodes[R]	,==	,==	,==
,getFirstChild	,==	,==	,==	,firstChild[R]	,==	,==	,==
,	,	,	,	,lastChild[R]	,==	,==	,==
,getPreviousSibling	,==	,==	,==	,previousSibling[R]	,==	,==	,==
,getNextSibling	,==	,==	,==	,nextSibling[R]	,==	,==	,==
,	,	,	,	,attributes[R]	,==	,==	,==
,	,	,	,	,	,	,ownerDocument[R]	,==
,insertChild	,insertBefore	,==	,==	,==	,==	,==	,==
,replaceChild	,==	,==	,==	,==	,==	,==	,==
,removeChild	,==	,==	,==	,==	,==	,==	,==
,	,	,	,	,	,appendChild	,==	,==
,hasChildren	,==	,hasChildNodes	,==	,hasChildNodes	,==	,==	,==
,	,	,	,	,cloneNode	,==	,==	,==
,	,	,	,	,equals
,getElementsByTagName
,	,	,	,[XML]XMLNode
,	,	,	,getParentXMLNode
,	,	,	,getChildXMLNodes
,	,	,	,hasChildXMLNodes
,	,	,	,getFirstXMLChild
,	,	,	,getPreviousXMLSibling
,	,	,	,getNextXMLSibling
,	,	,	,getEntityReference
,	,	,	,getEntityDeclaration
,[Core]NodeList	,==	,X	,X	,[Core]NodeList	,==	,==	,==
,getEnumerator	,==
,item	,==	,X	,X	,item	,==	,==	,==
,replace
,append
,prepend
,insert
,remove
,getLength	,==	,X	,X	,size[R]	,length[R]	,==	,==
,	,[Core]EditableNodeList
,	,replace
,	,insert
,	,remove
,[Core]NodeEnumerator	,==	,[Core]NodeIterator	,==
,	,	,getLength	,==
,getCurrent	,==	,==	,getCurrentPos
,atStart	,==	,X	,atFirst
,atEnd	,==	,X	,atLast
,getNext	,==	,toNext	,toNextNode
,getPrevious	,==	,toPrevious	,toPrevNode
,getFirst	,==	,toFirst	,toFirstNode
,getLast	,==	,toLast	,toLastNode
,	,	,toNth	,moveTo
,	,	,toNode
,	,	,[Core]TreeIterator : NodeIterator	,==
,	,	,numChildren	,==
,	,	,numPreviousSiblings	,==
,	,	,numNextSiblings	,==
,	,	,toParent	,==
,	,	,toPreviousSibling	,==
,	,	,toNextSibling	,==
,	,	,toFirstChild	,==
,	,	,toLastChild	,==
,	,	,toNthChild	,==
,[Core]NamedNodeList	,[Core]AttributeList	,==	,==	,[Core]NamedNodeMap	,==	,==	,==
,getNode	,getAttribute	,==	,==	,getNamedItem	,==	,==	,==
,setNode	,setAttribute	,==	,==	,setNamedItem	,==	,==	,==
,remove	,==	,==	,==	,removeNamedItem	,==	,==	,==
,item	,==	,==	,==	,item	,==	,==	,==
,getLength	,==	,==	,==	,size[R]	,length[R]	,==	,==
,getEnumerator
,[Core]Attribute : Node	,==	,==	,==	,==	,==	,[Core]Attr : Node	,==
,name[RW]	,getName	,==	,==	,==	,name[R]	,==	,==
,specified[RW]	,==	,==	,==	,==	,specified[R]	,==	,==
,value[RW]	,==	,==	,getValue	,==	,value[RW]	,==	,==
,(definition[RW])	,==
,toString	,==	,==	,==
,[Core]Element : Node	,==	,==	,==	,==	,==	,==	,==
,tagName[RW]	,getTagName	,==	,==	,==	,tagName[R]	,==	,==
,attributes[RW]	,==	,attributes	,getAttributes	,==
,	,	,	,getAttribute	,==	,==	,==	,==
,setAttribute	,==	,==	,setAttribute	,==	,==	,==	,==
,	,	,	,removeAttribute	,==	,==	,==	,==
,	,	,	,getAttributeNode	,==	,==	,==	,==
,	,	,	,setAttributeNode	,==	,==	,==	,==
,	,	,	,removeAttributeNode	,==	,==	,==	,==
,	,getElementsByTagName	,==	,==	,X	,getElementsByTagName	,==	,==
,	,	,normalize	,==	,==	,==	,==	,==
,[Core]Text : Node	,==	,==	,==	,[Core]Data : Node	,[Core]CharacterData : Node	,==	,==
,data[RW]	,==	,==	,==	,data[RW]	,==	,==	,==
,	,	,	,	,size[R]	,length[R]	,==	,==
,	,	,splice	,==	,substring	,substringData	,==	,==
,	,	,append	,==	,==	,appendData	,==	,==
,	,	,insert	,==	,==	,insertData	,==	,==
,	,	,delete	,==	,==	,deleteData	,==	,==
,	,	,replace	,==	,==	,replaceData	,==	,==
,isIgnorableWhitespace[RW]	,==
,	,	,	,	,[Core]Text : Data	,[Core]Text : CharacterData	,==	,==
,	,	,	,	,splitText	,==	,==	,==
,	,	,	,	,joinText
,[Core]Comment : Node	,==	,==	,==	,[Core]Comment : Data	,[Core]Comment : CharacterData	,==	,==
,data[RW]	,==	,==	,==
,[Core]PI : Node	,==	,==	,==	,[Core]ProcessingInstruction : Node	,==	,[XML]ProcessingInstruction : Node	,==
,name[RW]	,==	,==	,==	,target[RW]	,target[R]	,==	,==
,data[RW]	,==	,==	,==	,==	,==	,==	,==
,[Core]Reference : Node	,X	,X	,[XML]EntityReference : Node	,==	,==	,==	,==
,name[RW]
,(definition[RW])
,	,	,	,isExpanded[RW]
,	,	,	,expand
,[Core]NamedCharacterReferemce : Reference
,getReplacementText
,[Core]NumericCharacterReference : Reference
,character[RW]
,original[RW]
,	,[XML]DocumentType : Node	,==	,==	,==	,==	,==	,==
,	,name[RW]	,==	,==	,==	,name[R]	,==	,==
,	,externalSubset[RW]	,==	,==
,	,internalSubset[RW]	,==	,==
,	,generalEntities[RW]	,==	,==	,entities[R]	,==	,==	,==
,	,paremeterEntities[RW]	,==	,==
,	,notations[RW]	,==	,==	,notations[R]	,==	,==	,==
,	,elementTypes[RW]	,==	,==
,	,[XML]ElementDefinition : Node	,==	,==
,	,name[RW]	,==	,==
,	,contentType[RW]	,==	,==
,	,contentModel[RW]	,==	,==
,	,attributeDefinitions[RW]	,==	,==
,	,inclusions[RW]	,==	,==
,	,exceptions[RW]	,==	,==
,	,[XML]PCDATAToken : Node	,==	,==
,	,[XML]ElementToken : Node	,==	,==
,	,name[RW]	,==	,==
,	,occurence[RW]	,==	,==
,	,[XML]ModelGroup : Node	,==	,==
,	,occurrence[RW]	,==	,==
,	,connector[RW]	,==	,==
,	,tokens[RW]	,==	,==
,	,[XML]AttributeDefinition : Node	,==	,==
,	,name[RW]	,==	,==
,	,allowedTokens[RW]	,==	,==
,	,declaredType[RW]	,==	,==
,	,defaultType[RW]	,==	,==
,	,defaultValue[RW]	,==	,==
,	,[XML]Notation : Node	,==	,==	,==	,==	,==	,==
,	,name[RW]	,==	,==
,	,isPublic[RW]	,==	,==
,	,publicIdentifier[RW]	,==	,==	,publicId[RW]	,publicId[R]	,==	,==
,	,systemIdentifier[RW]	,==	,==	,systemId[RW]	,systemId[R]	,==	,==
,	,[XML]CDATASection : Node	,X	,[XML]CDATASection : Text	,==	,==	,==	,==
,	,content[RW]
,	,[XML]ConditionalSection : Node
,	,included[RW]
,	,condition[RW]
,	,content[RW]
,	,([XML]Entity : Node)	,X	,[XML]EntityDeclaration : Node	,[XML]Entity : Node	,==	,==	,==
,	,(name[RW])
,	,(isParameterEntity[RW])
,	,	,	,replacementString[RW]
,	,	,	,replacementSubtree[RW]
,	,	,	,	,publicId[RW]	,publicId[R]	,==	,==
,	,	,	,	,systemId[RW]	,systemId[R]	,==	,==
,	,	,	,	,notationName[RW]	,notationName[R]	,==	,==
,	,([XML]InternalEntity : Entity)
,	,(content[RW])
,	,([XML]ExternalEntity : Entity)
,	,(isNDATA[RW])
,	,(isPublic[RW])
,	,(publicIdentifier[RW])
,	,(systemIdentifier[RW])
,	,([XML]ExternalTextEntity : ExternalEntity)
,	,(content[RW])
,	,([XML]ExternalNDATAEntity : ExternalEntity)
,	,(notation[RW])
,	,(content[RW])
,	,([XML]NDATA : Node)
,	,(content[RW])
,	,[HTML]HTMLDocument : Document	,-	,[HTML]HTMLDocument : Document	,==	,==	,==	,==
,	,	,	,title[RW]	,==	,==	,==	,==
,	,referrer[RW]	,-	,referrer[RW]	,referrer[R]	,==	,==	,==
,	,fileSize[RW]	,-	,fileSize[RW]	,fileSize[R]
,	,fileCreatedDate[RW]	,-	,fileCreatedDate[RW]	,fileCreatedDate[R]
,	,fileModifiedDate[RW]	,-	,fileModifiedDate[RW]	,fileModifiedDate[R]
,	,fileUpdatedDate[RW]	,-	,fileUpdatedDate[RW]	,fileUpdatedDate[R]
,	,	,	,domain[RW]	,domain[R]	,==	,==	,==
,	,	,	,URL[RW]	,URL[R]	,==	,==	,==
,	,body[RW]	,-	,body[RW]	,==	,==	,==	,==
,	,images[RW] (getImages)	,-	,images[RW] (getImages)	,images[R]	,==	,==	,==
,	,applets[RW] (getApplets)	,-	,applets[RW] (getApplets)	,applets[R]	,==	,==	,==
,	,links[RW] (getLinks)	,-	,links[RW] (getLinks)	,links[R]	,==	,==	,==
,	,forms[RW] (getForms)	,-	,forms[RW] (getForms)	,forms[R]	,==	,==	,==
,	,anchors[RW] (getAnchors)	,-	,anchors[RW] (getAnchors)	,anchors[R]	,==	,==	,==
,	,(getScripts)
,	,location[RW]
,	,"cookie[RW] (getCookie, setCookie)"	,-	,"cookie[RW] (getCookie, setCookie)"	,cookie[RW]	,==	,==	,==
,	,	,	,open	,==	,==	,==	,==
,	,	,	,close	,==	,==	,==	,==
,	,	,	,write	,==	,==	,==	,==
,	,	,	,writeln	,==	,==	,==	,==
,	,	,	,	,getElementById	,==	,==	,==
,	,	,	,	,getElementsByName	,==	,==	,==
,	,	,	,(alinkColor[RW])	,==	,==	,==	,==
,	,	,	,(background[RW])	,==	,==	,==	,==
,	,	,	,(bgColor[RW])	,==	,==	,==	,==
,	,	,	,(fgColor[RW])	,==	,==	,==	,==
,	,	,	,(linkColor[RW])	,==	,==	,==	,==
,	,	,	,(vlinkColor[RW])	,==	,==	,==	,==
,	,[HTML]HTMLLocation
,	,href[RW]
,	,protocol[RW]
,	,host[RW]
,	,hostname[RW]
,	,port[RW]
,	,pathname[RW]
,	,search[RW]
,	,hash[RW]
,	,reload
,	,replace
,	,[HTML]HTMLElement : Element	,-	,[HTML]HTMLElement : Element	,==	,==	,==	,==
,	,(id[RW])	,-	,(id[RW])	,id[RW]	,==	,==	,==
,	,title[RW]	,-	,title[RW]	,==	,==	,==	,==
,	,lang[RW]	,-	,lang[RW]	,==	,==	,==	,==
,	,dir[RW]	,-	,dir[RW]	,==	,==	,==	,==
,	,className (className[RW])	,-	,className[RW]	,==	,==	,==	,==
,	,style	,-	,style[RW]	,(style[RW])	,==	,==	,==
,	,(parentElement[RW])
,	,(onClick[RW])
,	,(onDblClick[RW])
,	,(onKeyDown[RW])
,	,(onKeyUp[RW])
,	,(onKeyPress[RW])
,	,(onMouseOut[RW])
,	,(onMouseOver[RW])
,	,(onMouseMove[RW])
,	,(onMouseUp[RW])
,	,(onMouseDown[RW])
,	,(all[RW])
,	,(document[RW])
,	,(contains)
,	,(addAttribute)
,	,(setAttribute)
,	,(removeAttribute)
,	,([HTML]NamedNodeList : NodeList)	,-	,([HTML]NamedNodeList)	,[HTML]HTMLCollection	,==	,==	,==
,	,	,	,(length[R])	,length[R]	,==	,==	,==
,	,	,	,(item)	,item	,==	,==	,==
,	,	,	,(namedItem)	,namedItem	,==	,==	,==

注意: HTML モジュールは一部を除き省略しています。

注意: 名前や機能がほぼ同じものを[[行]]にまとめています。
その semantics などは異なることがあります。

注意: 丸括弧に入れたのは、本文に出てこないものの [[IDL]]
定義には存在しているものや、予約とされているものです。

[10] 初期案にあった [[DTD]] に関する機能のほとんどは削除され、その後の [[DOM2]]
や [[DOM3]] でも復活していません。 ([[DOM3 AS]] に似た機能はありますが、
連続性は無さそうです。)

[11] [[DOM0]] とは ([[DOM HTML]] の一部を除き) カバーしている機能がほぼ重なっていません。
[[DOM1]] は [[DOM0]] を包含するものではなく、後の [[Web Applications 1.0]] 
(現 [[HTML Standard]]) まで10年近く [[DOM0]] は標準不在状態が続きました。
[[W3C]] は当初から [[DOM0]] 部分を [[DOM1]] に含めるつもりは無かったように見えます。

[12] [[DOM1]] は [[IE4 DOM]] の影響を大きく受けていますが、 [[API]]
としての互換性はそれほど高くありません。 [[IE]] と [[Netscape]] 
との[[第1次ブラウザー戦争]]の末期に当たり、両者の提案を盛り込みつつどちらとも異なる折衷案となったと思われます。
[[IE]] は [[DOM1]] は比較的早い時期に実装しました。 [[Netscape]]
は [[Gecko]] ベースとなった版で実装しました。


[19] [CITE@en[Mark ElementTraversal Rec as obsolete · Issue #96 · w3c/WebPlatformWG]]
([TIME[2018-04-05 14:40:09 +09:00]])
<https://github.com/w3c/WebPlatformWG/issues/96>

[20] 
[DFN[KS X 6045:2004]],
[DFN[KS X 6045:2014]]

[21] 
[TIME[西暦2004年][2004]]にこんなの出版するの時代遅れもいいところだし、
[TIME[西暦2014年][2014]]に何を改正したのかも謎で意味不明すぎる。
その後も廃止されてないのおかしすぎる。

[23] 
[[解説]]にも何を改正したのか書いてないし。制定理由も
「世界的に普及しているDOMを国内で普及させるため」
とかわけのわからないことが書いてある。

[22] 
[[W3C]] が [[W3C勧告]]を廃止しないで放置してたから[[韓国]]が勘違いしちゃったのかな?
罪深いな。


[24] 
[[W3C]] は SE WD を出版して放置してたんだが、それすら反映されているようには見えない。
古い不具合がある FE をわざわざ KS として「普及」させようとするの、
もう有害行為だろ?


