Мене цікавить чи Xpath впорається з протоколом HTTP чи йому потрібно допомагати, скоріше за все думаю що другий варіант.
Xpath немає відношення до протоколу http. Він працює з готовим документом, тобто із його структурою. Xpath байдуже чи ви загрузили документ по мережі чи відкрили з локального диску.
Якщо це лише мова запитів то яким чином вона формує/створює/отримує елементи DOM
З цієї фрази можу сказати що xpath може тільки повертати елементи DOM, атрибути елементів та числа. Формувати, якщо я вас правильно зрозумів, та створювати елементи у дереві xpath не може.
Як за допомогою xpath отримати елементи:
Ось кусок коду з прикладом:
# завантажуємо сторінку (html документ)
$doc = new DOMDocument();
$doc->loadHTMLFile('http://funivan.com/');
# ініціалізуємо клас і вказуємо з якого документу ми будемо отримувати інформацію
$xpath = new DOMXpath($doc);
# виконуємо запит до документу. "//*[@class='cat-item']/a" - це вираз на мові xpath
$elements = $xpath->query("//*[@class='cat-item']/a"); /
# $elements - це нода в якій існують елементи DOM Node
foreach ($elements as $element) {
# Виводим назву тегу
echo '<br>'. $element->nodeName . ' > ';
# Виводимо значення
echo $element->nodeValue . '<br>';
}
Чому тоді мова запитів css не отримує елементи DOM?
CSS призначена для іншого задач аніж xpath. Як працює css і чому я не збираюсь висвічувати у цій темі.
Парсер це окрема штука що перетворює текст XML в DOM
Я говорив про парсер який використовує мову xpath для отримання інформації із документу.
п.с. Я можу помилятись, але я вирішив поділитись знаннями про xpath. Якщо ви знаєте що я у чомусь помиляюсь, дайте посилання на офіційні джерела і тикніть пальцем. Задавайте нормальні запитання, а не чому css не отримує чи ще щось у цьому дусі. Я вікіпедію не передруковую, до того ж у цій гілці форуму задавши запитання по темі я відповім на нього а не пошлю вас на вікіпедію. На практиці я пробував і не один раз.