Это для XPath 1.0. Если ваша среда поддерживает XPath 2.0, см. здесь .
Да. Возможно, но не красиво.
/html/body//text()[
contains(
translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
'test'
)
]
Если вы можете, отметьте интересующие вас части текста другими средствами, например, заключив их в <span>
, который имеет определенный класс.
Если это невозможно, у вас может быть JavaScript, который поможет вам построить соответствующее выражение XPath:
function xpathPrepare(xpath, searchString) {
return xpath.replace("$u", searchString.toUpperCase())
.replace("$l", searchString.toLowerCase())
.replace("$s", searchString.toLowerCase());
}
xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");
// -> "//text()[contains(translate(., 'TEST', 'test'), 'test')]"
(Шляпа подсказка к @ ответу Кирилла Полищука - конечно, вам нужно перевести только те символы, которые вы на самом деле ищете для)