XSLT против XQuery - PullRequest
       13

XSLT против XQuery

1 голос
/ 06 ноября 2010

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

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

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

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

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

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

1 Ответ

1 голос
/ 06 июня 2011

У меня есть система, которая работает так, как вы описываете.Он работает так:

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

  1. Данные XML представляют собой простой текстовый файл, например."data.xml".
  2. Таблица стилей XSL представляет собой простой текстовый файл, например."style.xsl".
  3. xquery - это простой текстовый файл, например."test.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-сервлет, чтобы вызвать саксонский процессор xquery.И Java, и Saxon бесплатны, но все же потребовалось много знаний, чтобы заставить его работать.

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

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

...