Соответствие неразрывному значению пробела в XPath

Допустим, у меня есть такая XML-структура:

<table>
    <tr>
        <td>&nbsp;</td>
    </tr>
</table>

Как мне указать сравнение со значением узла в предикате:

//tr/td[.="???"]

Что указывать вместо ????


person zerkms    schedule 04.01.2013    source источник


Ответы (3)


В XPath 2 вы можете использовать

//tr/td[. = codepoints-to-string((160))]

независимо от используемого вами инструмента

person BeniBela    schedule 04.01.2013

Решение

//tr/td[.="\u0160"]

где фактическое представление Unicode будет зависеть от используемого вами инструмента.

person zerkms    schedule 04.01.2013
comment
Тем, кто использует библиотеку ruby ​​nokogiri, вам понадобится \ u00a0 для шестнадцатеричного представления. - person Jacob Dalton; 07.04.2014

Используйте буквальное значение &nbsp;:

/table/tr/td[.=' ']
person Daniel Haley    schedule 04.01.2013
comment
Неа. Пространство не подходит - person zerkms; 04.01.2013
comment
@zerkms - это ненормальное пространство. это буквальный неразрывный пробел. - person Daniel Haley; 04.01.2013
comment
как читатели должны это различать? После копирования-вставки я вижу пробел 0x20. - person zerkms; 04.01.2013
comment
@zerkms Это был буквальный неразрывный пробел, когда я его вставил. На самом деле читателям не нужно различать это, потому что ответ действительно использует буквальное значение ссылки на сущность и является общим. - person Daniel Haley; 04.01.2013
comment
используйте буквальное значение ссылки на объект --- без объяснения того, как его вводить - это бесполезно. Сравните с моим собственным ответом? - person zerkms; 04.01.2013
comment
Я буду. Поскольку нет других ответов, которые пролили бы некоторый свет на вопрос. - person zerkms; 04.01.2013