Основное различие заключается в том, насколько стабильна целевая структура документа:
XPath - это хороший язык запросов, когда структура имеет значение и / или является стабильной.Обычно вы указываете путь, условия, точное смещение ... это также хороший язык запросов для получения набора похожих объектов, и поэтому он тесно связан с XQuery.Здесь документ имеет стабильную структуру, и вы должны получить повторяющиеся / похожие разделы
CSS-селекторы лучше подходят для стилевых таблиц CSS.Они не заботятся о структуре документа, потому что это сильно меняется.Представьте себе одну таблицу стилей CSS, применяемую ко всем HTML-страницам сайта.Содержание и структура каждой страницы различна.Здесь CSS-селекторы лучше из-за этой изменяющейся структуры.Вы заметите, что доступ основан на тегах.Большинство синтаксисов CSS определяют набор элементов, атрибутов, идентификаторов, классов ... и не столько их структуру.Здесь необходимо найти разделы, которые не имеют четкого расположения в структуре документа, но помечены определенными атрибутами.
Обновление : после более детального просмотраНа ваш вопрос я понял, что вас больше интересует текущая реализация, а не природа запросов к языкам.В этом случае я не могу дать вам ответ, который вы ищете.Я могу только предположить, что причина по-прежнему в том, что один больше зависит от структуры, чем другой.
Например, в XPath вы должны отслеживать структуру документа, над которым вы работаете.С другой стороны, селекторы CSS запускаются, когда появляется определенный тег, и обычно не имеет значения, что было до него.Я могу себе представить, что будет намного проще реализовать алгоритм выбора CSS, который будет работать при чтении документа, в то время как в XPath есть больше случаев, когда вам действительно нужен полный документ и / или строгий контроль того, что он читает (потому что история ифон того, что вы читаете, более важен)
Теперь не принимайте меня слишком серьезно в моем обновлении.Я только догадываюсь здесь, потому что у меня был некоторый опыт разбора языка, но на самом деле у меня нет опыта с теми, которые предназначены для запросов данных.