2012-05-01 10 views
7

私は2つのXPath式を持っている...これらのxpath式はどのように組み合わせますか?

//*[@id='gutter']/p[strong[text()='Date:']]/text() 
//*[@id='gutter']/p[strong[text()='Time:']]/text() 

は、どのように私は上記の二つを組み合わせ、単一のXPath式を書くか、個別に上記の各式を実行しているのと同じ要素を返すでしょうか?多かれ少なかれ、自明である

//*[@id='gutter']/p[strong[text()='Date:' or text()='Time:']]/text() 

:どの程度

+0

あなたは「同じテキストノードを返す」意味しますか? –

答えて

14

expr1 | expr2 

expr1のによって選択されたすべてのノードとexpr2のによって選択された全てのノードの組合を選択します。

|という文字は、XPath ユニオンオペレータを示します。あなたは、いくつかのXPath式によって選択されたノードの和集合を返すことにしたいとき

あなたはどのような場合にunion演算子を使用することができます。この具体場合に

//*[@id='gutter']/p[strong[text()='Date:']]/text() 
| 
//*[@id='gutter']/p[strong[text()='Time:']]/text() 

この式を最適化することができるが、それは組合オペレータは、すべてのそのような場合には、ほとんど機械的に表現することができる「動作」という利点を有し、時間を節約しより複雑なリファクタリングによってエラーが発生する可能性を排除します。

関連する問題