Какова цель / использование карты в XPath 3.1?

Я понимаю необходимость использования типа массива в XPath 3.1, поскольку он является фундаментальным для JSON. И да, я понимаю, что вы можете создать буквальную карту () в запросе XPath.

Но есть ли способ структурировать XML или JSON, при котором запрос естественным образом возвращал бы карту в запросе XPath для базового документа? Или он существует исключительно в том случае, если преобразование результатов в карту для последующей обработки полезно?

2 ответа

Решение

Вероятно, основные варианты использования карт, которые я видел:

(a) для захвата результата синтаксического анализа ввода JSON, когда входные данные находятся в JSON

(b) для создания структуры, которая может быть сериализована как JSON, когда требуется вывод JSON.

(c) для предоставления сложных входных параметров функциям (например, функциям fn: transform () или fn: serialize ())

(d) для захвата нескольких результатов или составных результатов от функций, например, функции, которая вычисляет как минимум, так и максимум последовательности. Если бы карты были доступны в то время, их можно было бы использовать для получения контекста пространства имен элемента гораздо более элегантно, чем механизм in-scope-prefixes/namespace-uri-for-prefix.

(e) карту, элементы которой являются функциями, можно использовать как объект в объектно-ориентированных языках для достижения полиморфизма - особенно полезно в XQuery, в котором отсутствует механизм отправки правил шаблонов XSLT. Дизайн функции fn:random-number-generator() иллюстрирует эту идею.

(f) карта может действовать как простая структура для составных значений, например комплексных чисел. (Его можно было использовать для даты / времени / продолжительности /QName, если доступно, или для информации об ошибке, доступной в предложении catch)

"есть ли способ [..] структурирования JSON, при котором запрос естественным образом возвращал бы карту?": что-либо в JSON является "объектом"

https://www.json.org/json-en.html: "Объект - это неупорядоченный набор пар имя / значение. Объект начинается с {левой фигурной скобки и заканчивается} правой фигурной скобкой")

отображает (каламбур) на карту XDM.

Таким образом, в JSON и массивы, и объекты являются фундаментальными, а в XDM вы можете представить массив JSON как массив XDM, а объект JSON как карту XDM.

Другие вопросы по тегам