Как исключить текстовые узлы только для разрыва строки из запроса XPath text ()? - PullRequest
2 голосов
/ 15 декабря 2011

Я хочу запросить все текстовые узлы из моего DOM.Однако я не хочу иметь эти «разметки-разрывы строк», где между HTML-тегами есть разрыв строки.

Поэтому я пытаюсь перевести все пробелы в соответствии с здесь ипроверить, не осталось ли символов:

/html/body//text()[not(translate(., '	

', '') = '')]

Это не работает, так как невозможно проверить пустые строки (что имеет смысл, так как это не текстовый узелзатем).

Любой другой подход для фильтрации этих узлов?

1 Ответ

3 голосов
/ 15 декабря 2011

Используйте

/html/body//text()[normalize-space()]

При этом выбираются все потомки текстового узла /html/body, каждый из которых после нормализации имеет непустое строковое значение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...