Действительно ли возможно применяться, нормализовать-пространство ко всему выражению XPath узлов находит?

Рассмотрите простой XML-документ:

<html><body>
<table>
<tr><td>   Item 1</td></tr>
<tr><td>  Item 2</td></tr>
</table>
</body></html>

Использование XPath /html/body/table/tr/td/text() мы доберемся

["   Item 1", "  Item 2"]. 

Действительно ли возможно обрезать пробел, например, с помощью normalize-space() функция для получения этого?

["Item 1", "Item 2"]

normalize-space(/html/body/table/tr/td/text()) урожаи обрезали содержание только первого тега TD ["Item 1"]

10
задан Shiplu Mokaddim 15 March 2017 в 20:55
поделиться

2 ответа

Использование XPath "/ html / body / table / tr / td / text ()" мы получит [«Предмет 1», «Предмет 2»].

Можно ли обрезать пустое пространство для пример использования normalize-space () функция для получения ["Item 1", "Item 2"]?

Нет в XPath 1.0 .

В Xpath 2.0 это просто :

/html/body/table/tr/td/text()/normalize-space(.) 

В XPath 2.0 шаг местоположения выражения XPath может быть ссылкой на функцию. Это используется в приведенном выше выражении для создания последовательности из xs: string элементов, каждый из которых является результатом применения normalize-space () к контекстному узлу (любой выбранный узел подвыражением, которое предшествует последнему шагу местоположения).

10
ответ дан 4 December 2019 в 00:22
поделиться

Если вы используете XPath 2.0, вы можете просто использовать /html/body/table/tr/td/normalize-space(.)

Если вы застряли с XPath 1.0, я не верю, что это возможно. Вам просто придется перебирать результирующие строки и нормализовать их.

2
ответ дан 4 December 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: