2017-01-19 17 views
1

は、以下のスニペットで..とcurrent()の使用法が正しいですか? 意味は、current()と../が等しい場合がありますか?現在のvs ../yangのxpath式の使用

container c { 
    leaf f1 { 
     type string; 
    } 

    leaf f2 { 
     type string; 
     when "../f1 = 'abc'"; 
    } 

    leaf f3 { 
     type string; 
     when "current()/../f1 = 'abc'"; 
    } 
} 

答えて

1

あなたの例ではcurrent()の使い方は正しいものの、冗長です。 current()は、初期コンテキストノードを返します。すべての式は、コンテキスト内の初期コンテキストノードで始まるため、明示的にこれを記述するのは意味がありません。

これは、current()が式の冒頭で../に相当することを意味しません。後者はparent::node()/child::node()に展開され、初期コンテキストノードの親のすべての子を返します。戻ってくるノードセットには、初期コンテキストノードとそのすべての兄弟が含まれます。これはcurrent()が返すものではありません - それは最高に似ています。

.または代替として書かれたself::node()が相当します。式が.で始まる場合、current()と同じノードが返されることがありますが、これはコンテキストに完全に依存します(.が使用されます)。

関連する問題