XML - статьи


/A>Обзор SXPath


SXPath – это реализация XPath на языке функционального программирования Scheme, предоставляющая язык запросов к документам на SXML. Реализация SXPath трактует путь доступа как составной запрос к дереву документа или его ветви. Отдельный шаг доступа представляет собой комбинацию проекции, выборки или транзитивного замыкания [12]. Несколько шагов доступа комбинируются с помощью операций последовательного применения или объединения.

Библиотека SXPath состоит из набора низкоуровневых предикатов, фильтров, операций выборки и комбинаторов; и функций высокого уровня, реализованных в терминах низкоуровневых функций. На высоком уровне предоставляется возможность записи запросов в двух различных нотациях:

  • Запрос может быть записан в виде списка, состоящего из шагов доступа. В качестве шага доступа может использоваться произвольный преобразователь – в том числе и произвольная пользовательская функция с заданной сигнатурой. Список шагов доступа транслируется в комбинацию примитивов SXPath с помощью набора правил перезаписи.
  • Запрос может представлять собой выражение XPath, записанное в виде текстового синтаксиса, полностью совместимого со Спецификацией XPath Консорциума Всемирной Сети.
  • Для каждой из описанных выше нотаций в библиотеке SXPath существует собственная функция высокого уровня, конструирующая по запросу в данной нотации его реализацию на языке программирования Scheme. Конструируемая реализация запроса затем может быть применена к SXML-документу и вычисляет данный запрос над данным документом. В силу описанного дизайна SXPath обе высокоуровневые функции, конструирующие по запросу его реализацию, могут рассматриваться в качестве компиляторов из пользовательской нотации запросов в комбинацию примитивов, в роли которых служат низкоуровневые функции SXPath [12].

    Следует заметить, что обе нотации могут комбинироваться внутри одного запроса, что позволяет комбинировать синтаксис, совместимый со Спецификацией XPath Консорциума Всемирной Сети, и возможности языка программирования общего назначения Scheme [3].



    Содержание раздела