まだまだ続くよ第4章 part4

ソート可能な子ノードについてとNamespaceのさわりについてのお話。

4.4 Orderable Child Nodes(つづき)
子ノードがソート可能の場合で、Node.orderBefore()とかを使う。

4.4.1 Orderable Same Name Siblings
同名のノードが存在した場合でも問題なく指定は可能。

[A, B, C, A, D]っていう子ノードが存在していて、親ノードの設定でソート可能の設定がされている場合にNode#orderBefore("A[2]","A[1]")を呼ぶと[A, A, B, C, D]って取得できる。API的には、orderBefore(String 移動元ノード,String 移動先)となって、要は最初の配列でいうところの4番目のAノードを1番目のAの前に移動しろという命令。しかも、すごいのはこの命令後は実際にsave時に順序が入れ替わって保存される。なのでこの後でA[1]に相当するのは命令前のA[2]になるということ

4.4.2 Non-orderable Child Nodes
Node.getNodes()で取得される順番は保証されないので(実装によって異なってくる)、順番に依存したアプリケーションにするなって。

4.4.3 Orderable Child Node Support is Optional
そのまま。

4.4.4 Properties are Never Orderable
これもそのまま。

ってのが仕様で定義されている。思っていた”Orderable”とだいぶ違った。。。orz
4.4.1って仕様で定義すべきことなんだろうか。。。

4.5 Namespaces
ノードやプロパティにはプレフィックスをコロンで区切って表現する、これがNameSpace。名前衝突の解決を図るのが目的。JCR準拠のリポジトリは以下の組み込みnamespaceが必要。

jcr 組み込みノードタイプ用
nt 組み込み主ノードタイプ名用
mix 組み込みmixinノードタイプ名用
xml XMl互換用
”” デフォルトnamespace.

level1ではnamespaceは特定のsessionから一時的にオーバーライドできる。
level2ではnamespaceの追加、削除ができる。

level1の場合のいってることはよくわからんが6.3章で詳細はわかるらしい。。。
ここでは上記レベルの認識だけでよさそうだ。

4.6 Path Syntax
パスの記述のシンタックスが表記されている。必要時確認すればよくてここでは書かない。

4.6.1 Names vs. Paths
specの表現としてmyapp:paragraphはnameと表現しmyapp:paragraph[3]とブランケッツがつくとパスと表現しているようだ。