2

XPath を使用して、text() 関数を介して変更された文字列のリストを取得したい

コード例:

 <div>
        <p>
        Monday 2/4/13
        </p>
        <p>
        Tuesday 2/5/13
        </p>
 </div>

この例では、

.//div/p/text()のような式を書きます。ただし、日付のみを取得したい場合は、substring-after 関数を使用できますが、コードsubstring-after(.//div/p/text(), ' ')は 1 つの要素しか取得しません。すべてのテキスト要素を取得するには、この式をどのように記述すればよいでしょうか?

4

1 に答える 1

2

XPath 2.0 では、次の関数を直接使用できますtext()

//div/p/substring-after(text(), ' ')


XPath 1.0では、次の理由により、式を 1 つだけ使用してこれを実現することはできません。

  • substring-after()関数は最初stringのパラメーターとして ではなく を受け取りますnode-set
  • 関数をロケーション ステップとして指定することはできません (上記の 2.0 の例のように)。

したがって、1.0 では、最善の策は次のようなものです (ノードごとに繰り返す必要があります。文字列だけが返されることにも注意してください)。

concat(substring-after(//div/p[1]/text(), ' '),
       ' ',
       substring-after(//div/p[2]/text(), ' '))
于 2013-08-03T02:54:03.363 に答える