设置XQuery的输出样式

时间:2013-08-11 20:42:33

标签: xml xslt xquery exist-db

我在eXist-db(1.4.2)中有一组xml文件。

它们的结构与此类似:

<magazine>
    <issue.number>22</issue.number>
    <article>
        <title>first article</title>
        <subject>James</subject>
    </article>
    <article>
        <title>second article</title>
        <subject>Billy</subject>
    </article>
</magazine>

我希望通过REST api查询所有文件:http://localhost:8080/exist/rest/db/folder/test.xq

结果是:

<entries>
    <entry> 
        <name>James</name>
    </entry>
    <entry>
        <name>Billy</name>
    </entry>
<entries>

我希望能够设置xquery输出的样式。我已经尝试通过在我的.xq开头引用样式表来实现这一目的。所以现在test.xq以<xml> <?xml-stylesheet type="application/xml" href="test.xsl"?>

开头

无论我改变什么,我都得到的不仅仅是一串文字,根本没有风格。

我哪里错了?

我只是写了一个写得不好的样式表吗?或者我错误地认为我可以在.xq中使用.xsl?

1 个答案:

答案 0 :(得分:4)

要使浏览器完成xslt转换,样式表处理指令应出现在文档的第一个XML元素(http://www.w3.org/TR/xml-stylesheet/)之前;

可以通过以下方式构建处理指令来添加处理指令:

processing-instruction xml-stylesheet {'type="application/xml"','href="test.xsl"'},
<myxml/>

另一种方法是使用transform()函数在服务器端进行转换:

http://exist-db.org/exist/apps/doc/xsl-transform.xml