как написать этот запрос xpath?


Я cosuming более RSS с нескольких сайтов и моя реальная проблема находится в поле их случае, если он опубликован потому, что большинство их значения случае, если он опубликован не действует почему-то мне удастся извлечь значение Из случае, если он опубликован полей с помощью XPath-выражения. вот что я написал:

//item/title | 
//item/description | 
//item/link | 
//item/pubDate | 
//item/category

И я хочу ограничить свой результат 10 последними новостями, которые я знаю, в xpath у нас есть функция под названием postion() , и я должен использовать ее следующим образом:

[postion() <= 10]

Но когда я смешиваю эти два запроса xpath вместе, я не получит должного результата:

 //item/title | 
 //item/description | 
 //item/link | 
 //item/pubDate | 
 //item/category [position() <= 10]

Как я могу написать этот конкретный запрос xpath в правильном формате. и есть ли какая-нибудь ускоренная книга для xpath?

Регады.

3 3

3 ответа:

Я предполагаю, что последние новости находятся на самом верху.

Используйте :

(//item)[not(position() > 10)]/*
           [self::title or self::description 
           or self::link or self::pubDate or self::category
           ]

Пояснение :

Это выражение выбирает все title, description, link, pubDate и category элементы, являющиеся потомками одного из первых 10 item элементов в XML-документе.

Это часто задаваемый вопрос и часто совершаемая ошибка, чтобы попытаться выбрать первый (или любой элемент позиции, скажем item):

//item[1]

При этом выбираются все item элементы документа, которые являются первый ребенок их родителя - и таких элементов может быть много item.

Выражение XPath, которое выбирает только первый элемент item в документе:

(//item)[1]

Правило запоминания : оператор [] имеет более высокий приоритет (связывает сильнее), чем аббревиатура //.

Я хочу ограничить свой результат до 10 последних новость

/descendant::item[
   10 > last()-position()
]/*[
   self::title|self::description|self::link|self::pubDate|self::category  
]

Вы должны попробовать

//item[position() <= 10]/pubDate

Как вы хотите 10-й пункт!