

* Mozilla の XPointer 界面

[1] [[Mozilla]] [CODE[[[nsIDOMXMLDocument]]]] [[界面]] (一部):
- [CODE(DOMm)[[[evaluateFIXptr]]]]
-- 引数 [CODE(DOMp)[expression]] ([CODE(DOM)[[[DOMString]]]]):
[[FIXptr] 文字列。]]
-- 返値 ([CODE[[[nsIDOMRange]]]]): 評価結果の範囲物体 ([CODE(DOMi)[[[DOMRange]]]])
-- [[FIXptr]] [[式]]を評価
- [CODE(DOMm)[[[evaluateXPointer]]]]
-- 引数 [CODE(DOMp)[expression]] ([CODE(DOM)[[[DOMString]]]]):
[[FIXptr]] 文字列。
-- 返値 ([CODE[[[nsIXPointerResult]]]]): 評価結果
-- [[XPointer]] [[式]]を評価

出典:
[CITE[mozilla/dom/public/idl/core/nsIDOMXMLDocument.idl]]
<http://lxr.mozilla.org/mozilla/source/dom/public/idl/core/nsIDOMXMLDocument.idl>

[2] [[Mozilla]] [CODE[[[nsIXPointerResult]]]] [[界面]]:
- [CODE(DOMm)[[[item]]]]
-- 引数 [CODE(DOMp)[index]] ([CODE(DOM)[[[unsigned]] [[long]]]])
- [CODE(DOMa)[[[length]]]] (読取り専用属性) ([CODE(DOM)[[[unsigned]] [[long]]]])

出典: 
[CITE[mozilla/content/xml/document/public/nsIXPointer.idl]]
<http://lxr.mozilla.org/mozilla/source/content/xml/document/public/nsIXPointer.idl>

[3] [[Mozilla]] [CODE[[[nsIXPointerSchemeContext]]]] [[界面]]:
- [CODE(DOMa)[[[count]]]] (読取り専用属性) ([CODE(DOM)[[[unsigned]] [[long]]]])
- [CODE(DOMm)[[[getSchemeData]]]] ([CODE(DOM)[[[void]]]])
-- 引数 [CODE(DOMp)[index]] ([CODE(DOM)[[[unsigned]] [[long]]]])
-- 引数 [CODE(DOMp)[scheme]] ([CODE(DOM)[[[DOMString]]]]: 出力)
-- 引数 [CODE(DOMp)[data]] ([CODE(DOM)[[[DOMString]]]]: 出力)

この界面は [CODE[[[nsIXPointerSchemeProcessor]]]] が現在評価している
scheme およびデータよりも前にあるすべての scheme およびデータの組が得られる[Q[文脈]]
を提供します。

出典: 
[CITE[mozilla/content/xml/document/public/nsIXPointer.idl]]
<http://lxr.mozilla.org/mozilla/source/content/xml/document/public/nsIXPointer.idl>

[4] [[Mozilla]] [CODE[[[nsIXPointerSchemeProcessor]]]] [[界面]]:
- [CODE(DOMm)[[[evaluate]]]] ([CODE[[[nsIXPointerResult]]]])
-- 引数 [CODE(DOMp)[aDocument]] ([CODE[[[nsIDOMDocument]]]]):
[[XPointer]] を[[解決]]する[[文書]]。
-- 引数 [CODE(DOMp)[aContext]] ([CODE[[[nsIXPointerSchemeContext]]]]):
データを処理する [[XPointer]] 文脈。
-- 引数 [CODE(DOMp)[aData]] ([CODE(DOM)[[[DOMString]]]]):
解決する scheme データ。
-- 返値 ([CODE[[[nsIXPointerResult]]]]): 評価結果。
-- [[XPointer]] [[式]]を評価します。

この界面は [[XPointer]] 枠組みを実装する XPointer 処理器から、
XPointer 処理器がみつけた scheme 毎の指定に関して順に呼ばれます。

出典: 
[CITE[mozilla/content/xml/document/public/nsIXPointer.idl]]
<http://lxr.mozilla.org/mozilla/source/content/xml/document/public/nsIXPointer.idl>

[5] [[Mozilla]] [CODE[[[nsIXPointerEvaluator]]]] [[界面]]:
- [CODE(DOMm)[[[evaluate]]]]
-- 引数 [CODE(DOMp)[aDocument]] ([CODE[[[nsIDOMDocument]]]]):
[[XPointer]] [[式]]を評価する文書。
-- 引数 [CODE(DOMp)[aExpression]] ([CODE(DOM)[[[DOMString]]]]):
評価する [[XPointer]] 文字列。
-- 返値 ([CODE[[[nsIXPointerResult]]]]): 評価結果
-- [[XPointer]] [[式]]を評価

出典:
[CITE[mozilla/content/xml/document/public/nsIXPointer.idl]]
<http://lxr.mozilla.org/mozilla/source/content/xml/document/public/nsIXPointer.idl>

* XPointerLib の界面

[6] [[XPointerLib]] ([[Mozilla]] 向けに開発されていた古いライブラリ) 
[CODE[[[nsIXPointerService]]]] [[界面]]:
- [CODE(DOMa)[[[XPOINTERLIB_NS]]]] (読取り専用属性、[CODE[[[string]]]]): 
XPointerLib 名前空間。 [CODE(DOMa)[DOM_IGNORE_ELEMENT_ATTRIBUTE]]
はこの名前空間に属する。
- [CODE(DOMa)[[[DOM_IGNORE_ELEMENT_ATTRIBUTE]]]] (読取り専用属性、 
[CODE[[[string]]]]): XPointer 処理・作成時に XPointerLib
が要素を無視するかどうかを指定する属性の名前。その属性の値は [CODE[[[boolean]]]]。
- [CODE(DOMm)[[[parseXPointerToRange]]]]
-- 引数 [CODE(DOMp)[xptr]] ([CODE[[[string]]]]): XPointer 文字列。
-- 引数 [CODE(DOMp)[doc]] ([CODE[[[nsIDOMDocument]]]]): XPointer
を解決する文書。
-- 返値 ([CODE(DOM)[[[nsIDOMRange]]]]): XPointer によって示された範囲。
-- 例外 ([CODE[[[Exception]]]]): XPointer が不正な時
-- XPointer を構文解析して DOM 範囲に。
- [CODE(DOMm)[[[parseXPointerToNode]]]]
-- 引数 [CODE(DOMp)[xptr]] ([CODE[[[string]]]]): XPointer 文字列。
-- 引数 [CODE(DOMp)[doc]] ([CODE[[[nsIDOMDocument]]]]): XPointer
を解決する文書。
-- 返値 ([CODE(DOM)[[[nsiDOMNode]]]]): XPointer によって示された範囲を近似した節点。
-- 例外 ([CODE[[[Exception]]]]): XPointer が不正な時
-- XPointer を構文解析して近似的に DOM [[節点]]に。
- [CODE(DOMm)[[[createXPointerFromSelection]]]]
-- 引数 [CODE(DOMp)[seln]] ([CODE[[[nsISelection]]]]): 変換する選択。
-- 引数 [CODE(DOMp)[doc]] ([CODE[[[nsIDOMDocument]]]]): 選択を含む文書。
-- 返値 ([CODE[[[string]]]]): 選択の XPointer 表現。
-- 文書における選択を対応する XPointer に変換。
- [CODE(DOMm)[[[createXPointerFromRange]]]]
-- 引数 [CODE(DOMp)[range]] ([CODE[[[nsIDOMRange]]]]): 変換する範囲。
-- 引数 [CODE(DOMp)[doc]] ([CODE[[[nsIDOMDocument]]]]): 範囲を含む文書。
-- 返値 ([CODE[[[string]]]]): 範囲の XPointer 表現。
-- 文書における範囲を対応する XPointer に変換。
- [CODE(DOMm)[[[markElement]]]]
-- 引数 [CODE(DOMp)[element]] ([CODE[[[nsIDOMElement]]]]): 印を付ける要素。
-- 例外: 印を付けることができない時。
-- 返値 ([CODE[[[nsIDOMElement]]]]): 印を付けた要素。
-- XPointerLib が作成・解析で無視するように要素に印を付ける。
文書に動的に要素を挿入する時に使用。
- [CODE(DOMm)[[[getVersion]]]]
-- 返値 ([CODE[[[string]]]]): XPointerLib の版。

出典: [CITE[xpointerlib/src/idl/nsIXPointerService.idl - view - 1.6]] 
<http://www.mozdev.org/source/browse/xpointerlib/src/idl/nsIXPointerService.idl?rev=1.6&content-type=text/x-cvsweb-markup>

[[#comment]]


* [CODE[Mvp.Xml]] の界面

[7] [[Mvp.Xml]] ([[XPointer.NET]]) の[[界面]]。

出典: [CITE[Mvp.Xml.XPointer]] 
<http://mvp-xml.sourceforge.net/api/Mvp.Xml.XPointer.html>

[8]
- 抽象クラス [CODE[[[Pointer]]]]: 抽象 XPointer クラス
-- 静的メソッド [CODE[[[Compile]]]]: XPointer 
指示子を構文解析して [CODE[Pointer]] 物体に。
--- 引数 [CODE[xpointer]] ([CODE[string]]): XPointer 指示子。
--- 返値 ([CODE[Pointer]])
-- メソッド [CODE[[[Evaluate]]]]
--- 引数 [CODE[nav]] ([CODE[[[XPathNavigator]]]]):
XPointer 指示子を評価する Navigator。
--- 返値 ([CODE[[[XPathNodeIterator]]]]): 指示された[[節点]]。
- クラス [CODE[[[XPointerReader]]]] ([CODE[[[XmlReader]]]] と 
[CODE[[[IHasXPathNavigator]]]] を継承)
- クラス [CODE[[[XPointerException]]]] ([CODE[[[Exception]]]] を継承)
- クラス [CODE[[[XPointerSyntaxException]]]]
([CODE[[[XPointerException]]]] を継承)
- クラス [CODE[[[NoSubresourcesIdentifiedException]]]]
([CODE[[[XPointerException]]]] を継承)

[[#comment]]


* メモ

[9]
注意: XPointer に対応しているといっても、
勧告になる前の古い互換性のない仕様に対応しているものだったりすることがよくあります。
([[名無しさん]] [sage])

[10]
[CITE[JavaScript (ECMAScript) による XPointer の実装]] <http://suika.fam.cx/www/2005/xpointer-js/xpointer-js-desc#API>

基本設計は Mozilla の実装ですが、
多少都合により変えてあります。
([[名無しさん]] [sage])

[11]
[[XML-Signature]] で [[XPointer]] を使う時、
[[速記]]指示子を使ったか scheme による指示子を使ったかで[[注釈節点]]の扱いが違ってきます。
つまり、 XML-Signature を実装するためにはどちらの方法で選択したかの情報が必要です。
(あるいは速記指示子による選択で[[節点集合]]を返す時に注釈節点を除外できるように実装するのもありか。)

([[名無しさん]])