1

我在 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?

4

1 回答 1

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

于 2013-08-12T08:29:02.190 回答