参照記法データアクセスで使うページ/要素取得記法。要素に他の要素を与えるために使う。

他の要素を指す要素。書式。それを解釈するのが要素。

全てURIで」、データアクセスで使うページ/要素取得要素。記法(要素を呼び出す記法ではない)。要素に他の要素を複数与えるために使う。

これもプラグインで。デフォルトでは記法定義なし。汎用記法で使う。

参照記法
  • -

セレクター Edit

:t/セレクターより Edit

未分類 Edit


あとで:t/セレクターを追加。

:/セレクターは属性値デコレーションに使えない Edit

:/システムが書くページ裏 Edit

:/セレクターでは上位/下位ページも指定可能に Edit

:i/ページ属性はセレクターで読む Edit

:i/要素埋め込み Edit

書き方 Edit


querySelector風に。

ページパスの表現も含む。

どう書くか?→ページを示すURIと、要素のインスタンス名/要素のクラス名の列をつなげて。ここに特定(見解も)を含めなければいけない??

要素にはインスタンス名を付けられるようにしたい。名前は重複するかも知れないので、IDというより名前。

CSS Selectors風セレクター Edit


CSS Selectors風。document.querySelectorAll()の書式。

タグ名にあたるのが要素のクラス名。

継承したクラス名にあたるのが要素インスタンスが持つ"dotAnnotations"属性。ノートアプリの「タグ」にあたるもの。でもこの言葉はもうマークアップタグとして使ってしまっているので。

:nth…とか:firstとか:evenみたいな疑似セレクターにあたるものは必要なものを似せて実装。

セレクター要素が必要。表現を解釈して要素セットを出力する要素。以前の参照記法にあたるもの。

"/"区切りのURIやページ名とひと続きになっていい。(ページ名区切りは変更可能だけど)

これをページ内やURL内に書く。

PHPでならDOMXPathを利用したライブラリーがある。

tj/php-selector: PHP DOM parser / queries with CSS selectors (https://github.com/tj/php-selector/blob/master/selector.inc)

XPath風でもいい Edit


document.evaluate()で使うような記法

XPathだとURIやページ名とひと続きになっていい。(ページ名の区切りは変更可能だけど)

ただ、CSSで使われるquerySelector風形式よりも使われてなさそう。CSS使う人だけが利用者ではないのでこの点は考えなくてもいい。

PHPにはDOMXPathがあるので、簡単。ページをHTML化してこれに与えれば、XPathで要素を指定できる。

PHP: DOMXPath - Manual

リンク関連名でフィルタリング Edit

エレメント取得はデータアクセスで要素取得すればいい。
ページセットのほうはリンク要素を取得して関連名でフィルタリングするもの。それをページセットで返せればいいので。

リンクのセット→ページセット
はセットの要素を個別に扱う必要がある。


†セットの扱い[?]

†参照記法は不要[?]

:Done/セットの扱い

:i/参照記法は不要

ページ名と一体化できる Edit


ページパス+要素パス

埋め込み要素ではページ名属性名を指定することも可能。

全てURIで」はパラメーターをDictionaryで与えるようなもの。これを使うので一体にする必要はない。

セレクターページ名を含まない。

ページセットにある各ページのルート要素から、指定位置にある要素」という指定をしたいので、ページ指定と分ける。

一体化してもいい。ページ名部分を指定せず、分けることもできるのがいい。

Selector Edit


Selector要素。「全てURIで」の要素指示の部分の解釈もする。

実装はVisitorパターン。Visitorが解析後のセレクター記法を持って、要素を収集していく。

Acceptorにどんな順番で道案内させるかは、Visitorセレクターを読んで決める。Acceptorは全てのセレクターに対応できるよう選択肢を用意。

セレクターは要素ではない Edit


セレクターはパラメーターの書き方。どう扱われるかはそれを受け入れる側(要素など)次第。

使われ方 Edit


必ず(フレームワークか要素に含まれるコントローラークラスの)コードから呼ばれるので、セレクターの使い方はフレームワークに含めない。セレクターを解釈するライブラリーを用意。処理対象のや戻り値を統一したりもしない。セレクターAPIからも呼ばれる。
  • ページ1つ → ルート要素
  • 要素1つ → Select() → 要素セット
  • ページ1つ → match()/test? → boolean

セレクター/ Edit

セレクターでやること Edit

  1. トークン化、空白類区切り
  2. 行頭から解析
  3. DOM風をトークン通りに辿る
    1. 辿れないときは無かったことに→null
      空セットではなく。
    2. 辿れたら→要素セット
      要素セットの順序は決まっていない。混乱するような順序ではない。