最初にツリーのどこを指定する必要があります。複数の<td>
要素があるため、最初にテキストを含むノードを検索します。
substring(//tr/td[contains(@class, 'left')]/following-sibling::text()[1], startIndex, length)
また
substring(//tr/td[@class='left']/following-sibling::text()[1], startIndex, length)
コメントに従って更新します。
T / F contains(// tr / td [@ class ='left'] / follow-sibling :: text()[1]、'FLAC')
これにより、兄弟要素のT / Fが得られ、その後に「FLAC」という単語が表示されます。substring()を使用してその文字列のサブセットを取得できますが、これは静的な場合のみです。XSLTなどの別の方法を使用して、文字列を変更/分離することをお勧めします。お役に立てれば!
アップデート2
substring('FLAC',1,4*contains(//tr/td[@class='left']/following-sibling::text()[1], 'FLAC'))
検査しているノードにFLACが存在する場合はFLACが返され、存在しない場合は空白になります。
ステップバイステップの内訳:
//tr/td[@class='left']
-これは、属性「class」が「left」に設定されているすべて のノードを返します。<td>
/following-sibling::text()
-これは、上のノードの後のすべてのノードのテキストを返します。
[1]を追加すると、上記のリストから最初のノードが返されます。
これをcontains(aboveValue、'FLAC')でラップすると、テキストに'FLAC'が存在する場合はTRUE(またはこの例では1)が返され、存在しない場合はFalse(0)が返されます。
これらすべてをsubstring('FLAC'、1,4 * aboveValue)でラップすることは、XPath1.0のIf/ Then / Elseと同等です。これは、そうするための組み込み関数がないためです。現在、文字列全体である部分文字列1,4 *(true = 1)=4をプルします。'FLAC'が存在しない場合は、サブストリング1,4 *(false = 0)= 0をプルします。これは、ストリングのいずれでもありません。
もう1つの注意点として、contains()では大文字と小文字が区別されるため、このフィールドに「flac」を含めることができる場合は、falseが返されます。FLACのすべてのケースミックスを確認するには、ここに示す例のtranslate()を使用します。