5

使用 BaseX 程序,我能够使用 XPath 和 XQuery 来查询位于我的主目录中的 XML 文档,但是在 XSLT 中执行相同操作时遇到了问题。

我要查询的文档是BookstoreQ.xml

XPath 版本,运行良好:

doc("/home/ioannis/Desktop/BookstoreQ.xml")/Bookstore/Book/Title

我要执行的 XSLT 代码:

<xsl:stylesheet version = "2.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
  <xsl:output method= "xml" indent = "yes" omit-xml-declaration = "yes" />
  <xsl:template match = "Book"></xsl:template>
</xsl:stylesheet>

我在 XSLT 上阅读了BaseX 的文档,但没有找到解决方案。如何运行给定的 XSLT?

4

1 回答 1

3

BaseX 没有对 XSLT 的直接支持,您必须使用 XQuery 函数调用它(虽然这很容易)。执行此操作有两个函数,一个用于返回 XML 节点 ( xslt:transform(...)),一个用于将文本作为字符串返回 ( xslt:transform-text(...))。你需要第二个。

xslt:transform-text(doc("/home/ioannis/Desktop/BookstoreQ.xml"),
  <xsl:stylesheet version = "2.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
    <xsl:output method= "xml" indent = "yes" omit-xml-declaration = "yes" />
    <xsl:template match = "Book"></xsl:template>
  </xsl:stylesheet>
)

两者都可以通过将 XSLT 作为节点(在此处使用)来调用,通过将其作为字符串传递或提供包含 XSLT 代码的文件的路径。

于 2013-02-19T20:05:44.687 回答