2010-11-05 30 views
1

我是新来的这两种技术,我勾勒我在这些步骤理解生成HTML出的原始XML文件的自己的角色(请纠正我,如果我错了):XSLT与XQuery的

  1. XML数据源(数据库,RSS,...)
  2. 的XQuery(数据操作FLWR)
  3. XSLT(通过模板数据表示)
  4. 所得XHTML文档被递送

我想知道如何使用它们的技术细节,具体而言,这里的问题:

  • 如何在PHP的Web服务器(我使用WAMP套件)实现的XQuery。
  • 我怎样才能请求.xq页面(我可以直接这样做,还是应该使用CGI来做到这一点?)
  • 如何将生成的XML页面从XQuery调用传递给XSLT进行模板化?

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

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

+0

这可能对你有用......我把它加入了书签,但没有真正搞砸它:http://www.ibm.com/developerworks/xml/library/x-zorba/index.html – prodigitalson 2010-11-05 21:41:57

+0

漂亮的图书馆,谢谢你的提示 – 2010-11-05 22:38:42

回答

1

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

输入

  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现在包含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; 
    

的所有未使用标准部件可实现的唯一部分是XQuery处理器。我必须使用Java servlet来编写这一点来调用Saxon xquery处理器。 Java和Saxon都是免费的,但它仍然需要大量的学习才能实现。

你可以看到它的工作here

我喜欢这种技术,因为a)它将逻辑从表示中分离出来,b)它运行得很快。