【发布时间】:2010-09-18 19:51:44
【问题描述】:
我希望您在样式表中使用 EXSLT - DYN:EVALUATE。我已经添加了名称速度,但我不知道我需要导入的 .xsl 文件在哪里。我不相信我安装了 XALAN 来指向导入。我将如何安装它?安装后,我将其指向 .xsl,它会获取该功能并应用它吗?我正在运行 Windows。 XSLT 文件包含在 XML 文档的顶部。
谢谢
皮特
【问题讨论】:
标签: xml xslt xalan exslt xslt-extension
我希望您在样式表中使用 EXSLT - DYN:EVALUATE。我已经添加了名称速度,但我不知道我需要导入的 .xsl 文件在哪里。我不相信我安装了 XALAN 来指向导入。我将如何安装它?安装后,我将其指向 .xsl,它会获取该功能并应用它吗?我正在运行 Windows。 XSLT 文件包含在 XML 文档的顶部。
谢谢
皮特
【问题讨论】:
标签: xml xslt xalan exslt xslt-extension
你不能,因为如果你要为客户提供带有附加样式表的 XML 页面,这是行不通的。浏览器不支持 exslt。
但是,如果您在服务器(使用 xalan)上进行 XSLT 处理,您可以让它工作,但我不明白您如何将 xslt 与 jsp 结合起来。
【讨论】:
如何从 JSP 页面调用它? JSP 提供 XML,当前将样式表附加到 XML 页面并提供结果。
【讨论】:
Xalan 具有内置的 EXSL dyn:evaluate 函数,您无需导入任何内容即可使用它。您只需要声明命名空间。我举个小例子:
input.xml:
<root>
<foo>I am foo</foo>
<bar>I am bar</bar>
</root>
dyn_evaluate.xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dyn="http://exslt.org/dynamic"
extension-element-prefixes="dyn">
<xsl:param name="path"/>
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="dyn:evaluate($path)"/>
</xsl:template>
</xsl:stylesheet>
跑步
xalan.exe -p path '/root/foo' input.xml dyn_evaluate.xsl
给予
I am foo
跑步
xalan.exe -p path '/root/bar' input.xml dyn_evaluate.xsl
给予
I am bar
希望这会有所帮助。
【讨论】:
javax.xml.transform.TransformerFactory 抽象出您的 XSLT 处理器,dyn:evaluate 将失败,默认的 TransformerFactory 实现随JDK。这是因为JDK实现的是Xalan XSLTC编译器,而不是解释器,虽然dyn:evaluate被识别,但无法处理。