Разница между XPath, XQuery и XPointer - PullRequest
62 голосов
/ 29 мая 2009

В чем разница между XPath, XQuery и XPointer? Насколько я знаю, XQuery это расширенная версия XPath. У меня есть некоторые базовые знания XPath. Есть ли в XPath какая-либо функция, которой нет в XQuery? Вчера я услышал новое слово XPointer. Я сбит с толку. Какой язык используется для каких целей?

Ответы [ 4 ]

59 голосов
/ 29 мая 2009

Википедия - хорошее место для таких вопросов. Обычно XPath - это язык, используемый для краткого определения точных узлов XML в DOM. XQuery - это расширенный набор XPath, который также обеспечивает синтаксис FLWOR , подобный SQL. Наконец, XPointer включает в себя XPath, но также предоставляет более простую схему адресации на основе позиции.

Конечно, вы всегда можете прочитать спецификации W3C для получения полной информации.

51 голосов
/ 18 декабря 2013

Хотя ответ Мэтью дает хорошее первое впечатление, об упомянутых стандартах можно рассказать намного больше, и есть много других, которые связаны между собой. В Интернете появилась хорошая статья из журнала групп пользователей XML Holland, в которой много говорится об истории XQuery и рассматриваются различные из этих стандартов. Первая часть здесь весьма актуальна:

XQuery означает Язык запросов XML . Это уже говорит суть. Это язык для выбора подмножеств и подструктур из большого набора файлов XML. Результатом можно манипулировать чем-то, что подходит для использования, например, в последующем процессе или для отображения в веб-браузере. XPath часто используется в XQuery.

Все стандарты XML имеют собственную область применения. Я назову несколько. XSLT - это язык для преобразования XML в другой формат. XPointer - это расширение XPath для более точного обращения к узлам внутри фрагментов XML или даже их частей. XLink - это стандарт для определения отношений. XInclude - это стандарт для объединения нескольких фрагментов XML в один, используя, например, отношения XLink. И XProc - это стандарт, с помощью которого можно описать, как следует обрабатывать XML-документы для достижения желаемого конечного результата. Он выражается в XML и описывает шаг за шагом процесс, также называемый конвейерами XML. В XProc вы используете a.o. Языки XQuery, XSLT и XInclude (и, следовательно, косвенно XPath, XPointer и XLink) для выражения того, что необходимо сделать точно на каждом шаге.

Все эти стандарты связаны между собой. Они связаны и зависят друг от друга. Перекрытие между некоторыми из упомянутых стандартов XML довольно хорошо обобщено на следующем изображении, которое вы также можете найти по адресу W3Schools :

What is XPath

Полный текст статьи можно найти здесь: http://grtjn.blogspot.nl/2011/10/xquery-novelties-revisited.html

НТН!

17 голосов
/ 23 января 2010

Ну, я думаю, что XQuery стоит того, чтобы его отличали. XPath и XPointer практически одинаковы и используются для выбора узлов XML. XQuery, с другой стороны, является довольно большим расширением XPath. Например, это дает возможность объявления пользовательских функций. Так что это больше похоже на язык программирования, который изначально работает с XML. Вы можете проверить некоторые образцы здесь: embedding-xquery-in-java

Привет

5 голосов
/ 08 июля 2016

XPath намеренно ограничен чтением существующих узлов.

Как XSLT, XQuery может создавать узлы. Он также может обновлять узлы (с помощью XQuery Update Facility).

С моей точки зрения разработчика XQuery; -)

...