Вы должны определить, где в дереве первым, и так как у вас есть несколько <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 содержит (// тр/тд [@ класс = 'левый']/следующее-родственный :: текст() [1], 'FLAC')
Это даст вам T/F для элемента-брата, после которого будет слово «FLAC». Вы можете использовать substring() для захвата подмножества этой строки, но это только в статических случаях. Я бы предложил использовать другой метод, например XSLT, для изменения/разделения строки. Надеюсь, это поможет!
Update 2
substring('FLAC',1,4*contains(//tr/td[@class='left']/following-sibling::text()[1], 'FLAC'))
это вернет FLAC, если FLAC присутствует в узле вы проверяющий, и пустой, если не ....
Шаг за шагом разбивка:
//tr/td[@class='left']
- Это возвращает ALL<td>
узлов, имеющие атрибут «класс» установлена на «левые»
/following-sibling::text()
- Это возвращает текст всех узлов после Узла выше.
Добавление [1] возвращает первый узел из списка выше.
Обертка этого содержит (вышеValue, 'FLAC') вернет TRUE (или 1 в этом примере), если в тексте присутствует «FLAC», а False (0), если это не так.
Обертка всего этого в подстроке ('FLAC', 1,4 * aboveValue) является эквивалентом If/Then/Else в XPath 1.0, поскольку для этого нет встроенной функции: Если присутствует «FLAC», потяните подстроку 1,4 * (true = 1) = 4, которая представляет собой целую строку. Если «FLAC» нет, потяните подстроку 1,4 * (false = 0) = 0, которая не является ни строкой.
Другая вещь, которую следует отметить, содержит() чувствительна к регистру, поэтому, если это поле может иметь «flac», оно вернет false.Чтобы проверить все смешанные смеси FLAC, используйте translate(), example here.
Вы уже знаете, что текстовый узел содержит «FLAC» - почему тогда вы его извлечете? Просто используйте строку «FLAC» - я действительно не понимаю, что вы хотите сделать ... –
Я знаю, что текстовый узел содержит «FLAC», но дело в том, что я хочу извлечь только это конкретное слово из этого текста узел не весь узел. –
Но * почему * извлечь его из узла, когда у вас уже есть буквальная строка? –