использовать YQL с substring-before в xpath - PullRequest
1 голос
/ 04 июля 2011

Я пытаюсь получить строку перед '-' в абзаце html-страницы с помощью xpath и отправить ее yql

например, я хочу получить дату из следующей статьи:

<div>
<p>Date --- the body of the article</p>
</div>

Я пробовал этот запрос в yql:

select * from html where url="article url" and <b>xpath="//div/p/text()/[substring-before(.,'--')]"</b>

но это не работает.

как мне узнать дату статьи перед '-'

Ответы [ 2 ]

0 голосов
/ 04 июля 2011

Использовать :

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

Это выражение XPath оценивает строку, непосредственно предшествующую '--' в первом текстовом узле в документе XML, который является потомком p это дочерний элемент верхнего элемента div.

Если вы хотите получить это значение для каждого такого текстового узла , вы должны использовать выражение вроде:

substring-before((//div/p/text())[$k], '--')

и вычислите это выражение $N раз, для $k = 1,2, ..., $N

, где $N равно count(//div/p/text())

Обратите внимание : Попробуйтеизбегайте использования псевдооператора // XPath всегда, когда структура XML-документа статически известна.Использование // обычно приводит к большой неэффективности (O (N ^ 2)), которая особенно болезненна для больших XML-документов.

0 голосов
/ 04 июля 2011

Вы можете просто использовать:

  substring-before(//div/p,'--')
...