В таблице ниже вы можете увидеть соответствие между xpath запросом и его аналогом в css.
| CSS селектор | XPath запрос | Описание |
|---|---|---|
| * | //* | Любой элемент |
| E | //E | Элемент с тэгом E (типа E) |
| E[foo] | //E[@foo] | Элемент E, у которого есть атрибут foo |
| E[foo="bar"] | //E[@foo="bar"] | Элемент E, у которого значение атрибута foo равно bar |
| E[foo~="bar"] | //E[contains( concat(" ", @foo, " "), concat(" ", "bar", " ") )] | Элемент E, у которого значение атрибута foo представляет собой список значений, разделенных пробелами, и одно из них равно bar |
| E[foo^="bar"] | //E[starts-with(@foo, "bar")] | Элемент E, у которого значение атрибута foo начинается с bar |
| E[foo$="bar"] | //E[substring(@foo, string-length(@foo) - string-length("bar") + 1) = "bar"] | Элемент E, у которого значение атрибута foo заканчивается bar |
| E[foo*="bar"] | //E[contains(@foo, "bar")] | Элемент E, у которого значение атрибута foo содержит bar |
| E[foo|="bar"] | //E[@foo="bar" or starts-with(@foo, concat("bar", "-")] | Элемент E, у которого значение атрибута foo представляет собой разделенный дефисами список значений, который начинается с bar |
| E:nth-child(a*n+b) | a < 0: //*[position() <= b][name() = "E"] a == 0: //*[position() = b][name() = "E"] a > 0: //*[(position() + b) mod a = 0][name() = "E"] |
Элемент E, который является a*n+b ребенком своего родителя |
| E:nth-last-child(a*n+b) | a < 0: //*[position() > last() — b][name() = "E"] a == 0: //*[last() - b][name() = "E"] a > 0: //*[(last() - position() + b - 1) mod a = 0][name() = "E"] |
Элемент E, который является a*n+b ребенком с конца своего родителя |
| E:first-child | //*/*[1][name() = "E"] или //*/*[1]/self::E |
Элемент E, который является первым ребенком своего родителя |
| E:last-child | //*/*[last()][name() = "E"] или //*/*[last()]/self::E |
Элемент E, который является последним ребенком своего родителя |
| E:only-child | //*[count(*) = 1]/E | Элемент E, который является единственным ребенком своего родителя |
| E:empty | //E[count(*) = 0 and (not(text()) or text() = "")] | Элемент E, у которого нет детей, включая текстовых нод |
| E:checked | //E[@checked] | - |
| E:enabled | //E[@disabled="false"] | - |
| E:disabled | //E[@disabled="true"] | - |
| E.warning | //E[contains(concat(" ", @class, " "), concat(" ", "warning", " ")] | Элемент E, у которого есть класс warning |
| #myid | id(«myid») | Элемент c id равным myid |
| E#myid | //E[@id="myid"] | Элемент E, у которого id равен myid |
| E:not(s) | //E[not(_selector_)] | Отрицательный селектор |
| E F | //E//F | Элемент F, который является потомков E |
| E > F | //E/F | Элемент F, который является ребенком E |
| E + F | //E/following-sibling::*[1]/self::F | Элемент F, который непосредственно следует за E |
| E ~ F | //E/following-sibling::F | Элемент F, который следует за E |
psd landing templates
ОтветитьУдалить