【问题标题】:XSLT vs. XQueryXSLT 与 XQuery
【发布时间】:2013-05-02 22:24:08
【问题描述】:

我是这两种技术的新手,按照我在这些步骤中的理解,我概述了它们在从原始 XML 文件生成 HTML 中的作用(如果我错了,请纠正我):

  1. XML 数据源(数据库、RSS、...)
  2. XQuery(数据操作 FLWR)
  3. XSLT(通过模板表示数据)
  4. 最终要交付的 XHTML 文档

我想知道使用它们的技术细节,具体来说,这里有一些问题:

  • 如何在 PHP Web 服务器中实现 XQuery(我正在使用 WAMP 套件)。
  • 我如何请求 .xq 页面(我可以直接执行此操作,还是应该使用 CGI 执行此操作?)
  • 如何将生成的 XML 页面从 XQuery 调用传递到 XSLT 以进行模板化?

您能给我一些使用这些技术创建网站的开发环境的指点吗,谢谢。

-- 更新:我现在明白 XQuery 和 XSLT 之间的区别在于观点上的不同,因为两个不同的工作组正在维护它们,尽管它们都将以不同的方法完成工作。 我仅将 XSLT 用于数据操作和表示,我正在实现结构化模板方法,可以在此处找到 XSLT Abstractions 以便稍微组织工作。

【问题讨论】:

标签: development-environment xslt xquery


【解决方案1】:

我有一个按照您描述的方式工作的系统。它是这样运行的;

输入

  1. XML 数据是纯文本文件,例如。 “数据.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 现在包含 test.xq xquery 的结果。调用 XSLT 处理器将 XML 转换为 XHTML。 PHP 代码类似于;

    $doc = 新的 DOMDocument(); $doc->loadXML($xml); $stylesheet = new DOMDocument(); $stylesheet->load("style.xsl"); $处理器 = 新 XSLTProcessor(); $processor->importStylesheet($stylesheet); $xhtml = $processor->transformToXML($doc); 回声 $xhtml;

使用标准组件无法实现的唯一部分是 xquery 处理器。我必须使用 Java servlet 编写该位来调用 Saxon xquery 处理器。 Java 和 Saxon 都是免费的,但仍然需要大量学习才能使其正常工作。

你可以看到它在工作here

我喜欢这种技术,因为 a) 它将逻辑与表示分离,b) 运行速度很快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多