Как сделать запрос Xpath 1.0 нечувствительным к регистру

В PHP в настоящее время я делаю запрос xpath, но мне нужно сделать его без учета регистра.
Я использую XPath 1.0, который в моем запросе означает, что я должен использовать нечто, называемое функцией перевода, но я не уверен, как это сделать.

Вот мой PHP-файл с тестовым запросом:

$html = <<<'HTML'
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta NAME="Description" content="Test Case">
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<Link Rel="Canonical" href="http://www.testsite.com/" />
<Title>My Title</Title>
</head>
<Body>
Test  Case
</Body>
</html>
HTML;

$domDoc = new DOMDocument();
$domDoc->loadHTML('<?xml encoding="utf-8" ?>' . $html);

// Canonical link
$xpath = new DOMXPath($domDoc);
$canonicalTags = $xpath->query('//link[@rel=\'canonical\']'); // Return nothing
//some use translate(WhatVariable?, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸŽŠŒ', 'abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿžšœ')

var_dump($canonicalTags);

Любая помощь будет принята с благодарностью. Благодарю.

0

Решение

По сути, translate используется для преобразования динамического значения, которое нужно сравнить, чтобы оно было строчным (или заглавным). В этом случае вы хотите подать заявку translate() в rel значение атрибута и сравните результат с литералом в нижнем регистре "canonical" (отформатирован для удобства чтения):

//link[
translate(@rel, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'canonical'
]
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]