Мене цікавить чи 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 не отримує чи ще щось у цьому дусі. Я вікіпедію не передруковую, до того ж у цій гілці форуму задавши запитання по темі я відповім на нього а не пошлю вас на вікіпедію. На практиці я пробував і не один раз.