[3] [CODE(DOMi)@en[[[Node]]]] [[オブジェクト]]の [DFN[[CODE(DOMm)@en[[[compareDocumentPosition]]]] [[メソッド]]]]は、2つの[[節点]]の[[文書順]]的な意味での関係を返します。 * 仕様書 - [1] [CITE@en-US[Web DOM Core]] - [14] [CITE@en-US[Document Object Model Core]] -- [2] -- [13] - [5] [CITE@en-US[Document Object Model XPath]] [4] 現時点では [[Web DOM Core]] には存在することだけで実質的な規定がまだされていません。 [TIME[2010-12-31T06:40:47.000Z]] * [CODE(DOM)@en[DocumentPosition]] [11] 驚くべきことに [[DOM3]] 仕様上は関係がほのめかされているだけで明示されていないのですが、 [CODE(DOMm)@en[[[compareDocumentPosition]]]] は[[定義群]] [DFN[[CODE(DOM)@en[[[DocumentPosition]]]]]] に属する[[定数]]による[[ビットマスク]]値を返します。 [12] [[界面]] [CODE(DOMi)@en[[[Node]]]] の[[定義群]] [CODE(DOM)@en[[[DocumentPosition]]]] には、 [[データ型]]が [CODE(IDL)@en[[[unsigned short]]]] である以下の[[定数]]があります [SRC[>>2]]。 :[DFN[[CODE(DOMc)@en[[[DOCUMENT_POSITION_DISCONNECTED]]]]]] ([CODE[0x01]]):両[[節点]]は[[連結]]ではありません。 [WEAK[([[連結]]していない[[節点]]の順序は常に[[実装規定]]です。)]] :[DFN[[CODE(DOMc)@en[[[DOCUMENT_POSITION_PRECEDING]]]]]] ([CODE[0x02]]):与えられた[[節点]]は[[参照節点]]に先行する[[節点]]です。 :[DFN[[CODE(DOMc)@en[[[DOCUMENT_POSITION_FOLLOWING]]]]]] ([CODE[0x04]]):与えられた[[節点]]は[[参照節点]]に後続する[[節点]]です。 :[DFN[[CODE(DOMc)@en[[[DOCUMENT_POSITION_CONTAINS]]]]]] ([CODE[0x08]]):与えられた[[節点]]は、[[参照節点]]を含んでいます。 [WEAK[(含む[[節点]]は常に先行する[[節点]]でもあります。)]] :[DFN[[CODE(DOMc)@en[[[DOCUMENT_POSITION_CONTAINED_BY]]]]]] ([CODE[0x10]]):与えられた[[節点]]は、[[参照節点]]に含まれています。 [WEAK[(含まれる[[節点]]は常に後続する[[節点]]でもあります。)]] :[DFN[[CODE(DOMc)@en[[[DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC]]]]]] ([CODE[0x20]]):どちらが先行でどちらが後続かは[[実装規定]]です。 * 処理モデル [8] この[[メソッド]]がよばれた[[節点]]を[DFN[[RUBYB[参照節点]@en[reference node]]]]とするとき、 [[参照節点]]と第1引数に与えられた[[節点]]についての[[文書]]中での位置を[[文書順]]に基づき調べて返します [SRC[>>2]]。 ** 文書順 [6] 「[[文書順]]」は通常の [[DOM]] [[節点]]に対しては [[DOM]] 仕様で定義されていますが、 [[DOM XPath]] 仕様では [CODE(DOMi)@en[[[XPathNamespace]]]] [[節点]]が追加されているため、 それに対応した拡張された「[[文書順]]」が定義されています。 [[DOM XPath]] に対応している場合には拡張された定義に基づき結果を返さなければなりません [SRC[>>5]]。 ;; [7] という規定が2004年の [[DOM XPath]] 仕様では [CODE(DOMm)@en[[[compareTreePosition]]]] という現存しないメソッド名についてなされていますw ** 異なる実装からの節点の比較 [9] [[DOM3]] は異なる [[DOM]] の実装が混在する環境を扱っています。異なる [[DOM]] 実装からの[[節点]]の比較であっても、両実装の間で「[[実装規定]]」 となっている部分の動作について協調して決定できるのであれば、それに従った結果を返すべきであるようです。 [10] [[節点]]が異なる [[DOM]] 実装のものであり、 「[[実装規定]]」の部分について一貫した結果となるよう協調して動作できない場合、 [[例外]] [CODE(DOM)@en[[[NOT_SUPPORTED_ERR]]]] を[[投げます]]。 [SRC[>>2]]