XSLT与XQuery

时间:2010-11-05 21:36:24

标签: development-environment xslt xquery

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

  1. XML数据源(数据库,RSS,...)
  2. XQuery(数据操作FLWR)
  3. XSLT(通过模板化的数据表示)
  4. 生成的XHTML文档
  5. 我想知道使用它们的技术细节,具体来说,这里是问题:

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

    你能否给我一些关于使用这些技术创建网站的开发环境的一些指示,谢谢。

    - 更新:我现在明白,XQuery和XSLT之间的区别在于观点的不同,因为两个不同的工作组正在维护它们,两者都会以不同的方式完成工作。 我只使用XSLT进行数据操作和表示,我正在实现结构化模板方法,这里可以找到XSLT Abstractions来组织工作。

1 个答案:

答案 0 :(得分:1)

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

<强>输入

  1. XML数据是纯文本文件,例如。 “data.xml中”。
  2. XSL样式表是纯文本文件,例如。 “style.xsl”。
  3. xquery是纯文本文件,例如。 “test.xq”。
  4. xquery处理器在端口2409上作为服务运行。(有关此内容的更多信息。)
  5. <强>流量

    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 = new DOMDocument();
      $doc->loadXML($xml);
      $stylesheet = new DOMDocument();
      $stylesheet->load("style.xsl");
      $processor = new XSLTProcessor();
      $processor->importStylesheet($stylesheet);
      $xhtml = $processor->transformToXML($doc);
      echo $xhtml;
      
    4. 使用标准组件无法实现的唯一部分是xquery处理器。我不得不使用Java servlet编写该位来调用Saxon xquery处理器。 Java和Saxon都是免费的,但它仍然需要大量的学习才能让它发挥作用。

      您可以看到它正常工作here

      我喜欢这种技术,因为a)它将逻辑与表现分开,b)它运行得很快。