7

要素の直接の親からルートまでの特定の要素のすべての親を選択する 2 つの xpath クエリを記述する必要があります。その後、要素の特定の属性を選択できるようになります。

もう 1 つは、要素がどこにあるかに関係なく、要素のすべての子を選択します。

たとえば、xml ドキュメントが次のような場合:

<role key='total-admin'>
    <role key='security-admin'>
        <role key='users-admin'>
            <role key='add-user'></role>
            <role key='delete-user'></role>
            <role key='deactivate-user'></role>
        </role>
    </role>
</role>
  1. キー 'add-user' を持つ要素のすべての親を選択したい.結果は次のようになります。

    [ 'users-admin' , 'security-admin' , 'total-admin' ]
    
  2. 「security-admin」のすべての子を選択したい。結果は次のようになります。

    [ 'users-admin' , 'add-user' , 'delete-user' , 'deactivate-user' ]
    
4

2 に答える 2

3

特定の属性値を持つ要素として定義するコンテキストノードが常にあります。例:"add-user"または"security-admin"

//*[@key = "string"]

これによりノードセットが得られるため、コンテキストノードの式はそのような種類の単一以外のすべての要素を除外する必要があります。

//*[@key = "string" and count(//*[@key = "string"]) = 1]

これにより、コンテキストノードのニーズが解決されます。次に、そのコンテキストノードをまたはで表すか、.逐語的に記述します。

コンテキスト要素(つまり、祖先軸)のすべての親、祖父母、祖父母などを選択します。

./ancestor::*
//*[@key = "string" and count(//*[@key = "string"]) = 1]/ancestor::*

すべての子(つまり、子孫軸)を選択します。

./descendant::*
.//*
//*[@key = "string" and count(//*[@key = "string"]) = 1]/descendant::*
//*[@key = "string" and count(//*[@key = "string"]) = 1]//*
于 2013-03-06T07:08:41.437 に答える