XSLT против XQuery

Я новичок в этих двух технологиях, я набросал их роли в создании HTML из необработанного XML-файла, как я понял в этих шагах (пожалуйста, поправьте меня, если я был неправ):

  1. Источник данных XML (база данных, RSS, ...)
  2. XQuery (обработка данных FLWR)
  3. XSLT (представление данных с помощью шаблонов)
  4. Результирующий XHTML-документ, который необходимо доставить

Меня интересуют технические детали их использования, если быть точным, вот вопросы:

  • Как реализовать XQuery на веб-сервере PHP (я использую пакет WAMP).
  • Как я могу запросить страницу .xq (могу ли я сделать это напрямую или мне следует использовать для этого CGI?)
  • Как я могу передать результирующую XML-страницу из вызова XQuery в XSLT для создания шаблонов?

Не могли бы вы дать мне несколько советов по среде разработки для создания веб-сайта с использованием этих технологий, спасибо.

-- Обновление: теперь я понимаю, что разница между XQuery и XSLT заключается в разнице во взглядах, поскольку их поддерживают две разные рабочие группы, и обе будут выполнять эту работу, хотя и по-разному. Я использую XSLT только как для операций с данными, так и для представления, я реализую структурированный подход к шаблонам, который можно найти здесь чтобы немного организовать работу.


person Y.H.    schedule 05.11.2010    source источник
comment
Это может быть полезно для вас... я добавил его в закладки, но особо не возился с ним: ibm.com/developerworks/xml/library/x-zorba/index.html   -  person prodigitalson    schedule 06.11.2010
comment
довольно неплохая библиотека, спасибо за подсказку   -  person Y.H.    schedule 06.11.2010


Ответы (1)


У меня есть система, которая работает по принципу, который вы описываете. Это работает так;

Входные данные

  1. Данные XML представляют собой обычный текстовый файл, например. "данные.xml".
  2. Таблица стилей XSL представляет собой обычный текстовый файл, например. "стиль.xsl".
  3. Xquery представляет собой обычный текстовый файл, например. "тест.xq".
  4. Процессор xquery работает как служба на порту 2409. (Подробнее об этом ниже.)

Поток

  1. PHP-скрипт, например. "index.php" запускается. Он связывается с процессором xquery следующим образом;

    $xml = file_get_contents("http://localhost:2409/test.xq");

  2. Запрос test.xq выполняется процессором xquery. Запрос test.xq использует функцию doc для загрузки данных;

    declare variable $root := doc("data.xml");

    Когда test.xq завершает работу, процессор xquery возвращает результат в index.php.

  3. В index.php $xml теперь содержит результат xquery test.xq. Процессор XSLT вызывается для преобразования XML в XHTML. Код PHP выглядит примерно так:

    $doc = new DOMDocument();
    $doc->loadXML($xml);
    $stylesheet = new DOMDocument();
    $stylesheet->load("style.xsl");
    $processor = new XSLTProcessor();
    $processor->importStylesheet($stylesheet);
    $xhtml = $processor->transformToXML($doc);
    echo $xhtml;
    

Единственная часть всего того, что не достижимо с помощью стандартных компонентов — это процессор xquery. Мне пришлось написать этот бит, используя сервлет Java для вызова процессора Saxon xquery. И Java, и Saxon бесплатны, но для того, чтобы заставить их работать, нужно много учиться.

Вы можете увидеть, как это работает здесь.

Мне нравится этот метод, потому что а) он отделяет логику от представления и б) работает быстро.

person Nigel Alderton    schedule 06.06.2011