RIGHT:[[:t/データアクセス]] [[:t/要素]] [[:t/セレクター]] [[:t/設定]] [[:t/連携]] [[☆]]

ページの中の要素を指定する記法。
「[[全てURIで]]」のURIでも使えるように。ページ名に続いて要素指定。

Wikiの設定/構築に使ったり、クライアントアプリから使ったり、他アプリとの連携用にしたり。

APIとしても使える。MediaWikiでの''[[api.php>http://ja.wikipedia.org/w/api.php?format=json&action=query&titles=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&prop=revisions&rvprop=content]]''([[prettified>http://ja.wikipedia.org/w/api.php?format=jsonfm&action=query&titles=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&prop=revisions&rvprop=content]])のようなもの。でもMediaWikiのはページ/本文は投稿されたままのテキスト(WikiText)。Xではページ/本文内の表やリストをデータ構造にしたい。

----

#contents

*データアクセス [#x2a3f4de]

// まとめ



*[[:t/データアクセス]]より [#t3979dc2]

**未分類 [#q0e9c5d3]

あとで[[:t/データアクセス]]も追加。

// ***[[:i/]]

***データコンテキストでの呼びだされ時と同じ [#z1ae0f1f]
使われるコードはデータコンテキストで呼ばれた時と同じもの。
データコンテキストではどのメソッドを呼び出すかが文脈で決まるが、プログラムコード内では普通にメソッドを指定していい。

RIGHT:[[:t/記法]] [[:t/API]] [[:t/UI]] [[:t/連携]]

*** セレクターで指定された要素を呼び出す [#c933a56a]
要素は別の要素で囲むと、装飾や封印ができる。
打ち消し線で抹消されているなら、データアクセスでも抹消された情報として取得したい。

通常通りを再現するため、データアクセスを「セレクターで指定された要素以外の戻り値を無視するだけのこと」と定義することもできるけど、そうはしない。

データアクセスは、指定された要素だけに問い合わせること。再現性を重視するならルート要素や、上位にある適当な要素に問い合わせればいい。

両方必要??
***セレクター記法 [#w4f9827c]
CSS Selector風。querySelectorAllで指定する書式。
XPath風(document.evaluate風)も"/"区切りのURIやページ名とひと続きになっていい。(ページ名区切りは変更可能だけど)



***%%[[旧検索]]で探す%% [#za085e6c]
%%要素を選択する処理。%%
要素を選択するには要素のインスタンス名やクラス名で。旧検索は値(内容)で探すもの。データアクセスからは使わない。



***%%下位展開/%%埋め込み解決後に [#ne3b9287]
%%下位展開の基準から下位ページにアクセス可能に。%%
埋め込まれた要素にもアクセス可能に。

埋め込み%%/下位展開%%後でなければアクセス不可能な要素ができてしまうし、閲覧時に見た通りに使えなければ分かりにくい。

%%見た通りなので下位展開された下位ページの要素にもアクセス可能にしないと。上位に下位が付いてくるので「継承」とは呼ばない。方向が逆。%%

[[:Done/下位展開で下位のページ属性は参照できるか]]
…はページ/属性(へのデータアクセス)なので別領域の話。ページ/内容にある要素にはデータアクセス可能。%%つまり下位展開分にもデータアクセス可能。%%
下位展開ではページをまとめないので、単一ページの場合と同じ。



***普段通りの挙動 [#j974944a]
データアクセスでも他の呼び出し方でも処理は同じ。コードも同じ。

ただ、HTMLを要求するとHTMLヘッダーも無い断片が返ってくる。
HTMLヘッダーがいるなら連鎖の始まりにあたるデータコンテキストをそういう指定にして、各要素がそれに対応するようにして。
***URIもコンテキスト [#d70d9717]
URIのクエリー文字列にページ/要素を書くと、そこ専用のデータコンテキストで展開される。
%%URIのクエリー文字列で指定して呼ぶとき、HTMLとかRSSとかの形式を指定するには基礎となる要素を付け足す。付け足す要素はページ内に存在しなくてもよくなる。%%リクエスト時だけの即席要素。
URIに書くときはパラメーターの指定がしづらいので、指定できるのはパラメーターを1つしか受けない要素だけ。コンテキストを作るだけの要素なのでURIでしか使い道がない。

(RSSの場合はビュー別のテンプレートのほうで基礎部分を作ったほうがいい)

指定しなければデフォルトのコンテキスト。ページと同じコンテキストを作る要素。



***連鎖はできなくていい [#n0baff7f]
URIでは要素のパラメーターを書きにくいので、(URI上では)複数の要素を組み合わせられなくてもいい。
組み合わせるならページに書いて。それを呼び出すようにして。



***記法の代わりになるもの [#v246efe4]
セレクター記法の代わりに要素セットやページセットも渡せるように''各要素が''考慮する。
型別にパラメーター名を変えてもいいし、ひとつのパラメーターを複数の型に対応させてもいい。

†[[:Done/セットの扱い]]



***インポートと近い [#dcefb428]
JSONインポートと実装が一部共通。



***フォーマット [#a8abf58e]
参考に、MediaWikiの例。
[[http://www.mediawiki.org/wiki/API:Data_formats#Output]]



*データアクセス/ [#gfe39da7]
- [[データアクセスでやること]]

#ls