2
特定の番号、タイプ、および子の順序を持つノードを検出するXPath式が必要です。例えば。この作品XPath:最初の子(特定のタグのみの場合)
//expr[count(child::*)=3]
[*[1][name()='expr']
[*[2][name()='LEFT_ASSIGN']
[*[3][name()='expr']
が、多くの場合、私はお互いに同様の条件を埋め込む必要が特にあるため、書き込みするのは非常に面倒です:私たちは、この順に、3種類のexpr
の子供、LEFT_ASSIGN
とexpr
でexpr
を必要としています。例えば。短い、簡単な方法があります
//expr[count(child::*)=3]
[*[1][name()='expr'][count(child::*)=1][SYMBOL[count(child::*)=0]]]
[*[2][name()='LEFT_ASSIGN']]
[*[3][name()='expr']]
:私はまた、上記の最初のexpr
子供は子供、などの特定のセットを持っていることを指定する必要がありますか?ここで
は、いくつかのサンプルデータです:*[1][name()='expr']
を書くためのXPathで
<?xml version="1.0" encoding="UTF-8"standalone="yes" ?>
<exprlist>
<expr>
<expr>
<SYMBOL>X</SYMBOL>
</expr>
<LEFT_ASSIGN><-</LEFT_ASSIGN>
<expr>
<expr>
<NUM_CONST>42</NUM_CONST>
</expr>
<OP-STAR>*</OP-STAR>
<expr>
<NUM_CONST>42</NUM_CONST>
</expr>
</expr>
</expr>
<OP-SEMICOLON>;</OP-SEMICOLON>
<expr>
<expr>
<SYMBOL>Y</SYMBOL>
</expr>
<LEFT_ASSIGN><-</LEFT_ASSIGN>
<expr>
<NUM_CONST>42</NUM_CONST>
</expr>
</expr>
</exprlist>
ありがとう、これらは役に立ちます! Btw。私は、単にXPathに指定されているように子ノードの順序を考え、 '* [1] [self :: expr]'を書く必要があることを単に伝える方法はないと思います。 –