首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >exslt.org扩展

exslt.org扩展
EN

Stack Overflow用户
提问于 2010-01-27 01:34:08
回答 3查看 3.1K关注 0票数 1

我正在尝试在我的一个转换中使用exslt扩展。我从这个网站上得到了一个关于如何将xml文件连接成一个文件的例子。

我已经正确地实现了名称空间和元素前缀,但每次尝试从命令行运行它时,我都会收到以下错误...

在变量step-concat中找不到名为{http://exslt.org/common}节点集()的匹配的单参数函数(文件名和行号在此处胡说八道)

我不知道哪里出了问题,因为我对这些东西还很陌生。我的xsl文件是

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">

<!-- STEP Files -->
<xsl:variable name="step-output">
    <xsl:for-each select="/index/file">
        <xsl:copy-of select="document(.)" />
    </xsl:for-each>
</xsl:variable>

<!-- STEP Files as one -->
<xsl:variable name="step-concat" select="exsl:node-set($step-output)" />

<!-- Root Template -->
<xsl:template match="/">
    <xsl:element name="foo">
        <xsl:apply-templates select="$step-concat/foo"/>
    </xsl:element>
</xsl:template>

<xsl:template match="foo">
    <xsl:element name="text">
        <xsl:value-of select="bar"/>
    </xsl:element>
</xsl:template>

我做错了什么?我试着从exslt.org下载这个模块,但对我来说没有任何意义……

EN

回答 3

Stack Overflow用户

发布于 2010-01-28 02:07:32

与Saxon PE不同,Saxon HE不提供任何内置的扩展函数。

但是,您可以在Processor中编写和注册自己的扩展函数,这样就可以轻松地实现exsl:node-sethttp://www.saxonica.com/documentation/extensibility/integratedfunctions/

另一种替代方法是使用Saxon B 9.1

票数 3
EN

Stack Overflow用户

发布于 2010-03-01 05:05:31

这是一个XSLT 1.0样式表。XSLT2.0使得许多EXSLT扩展函数变得不必要,比如"exsl:node-set()“。您可以将其转换为XSLT2.0样式表,该样式表执行相同的操作,将第一行中的"version“更改为2.0,并将"exsl:node-set($step-output)”替换为"$step-output“。当然,XSLT 2.0需要使用Saxon。

票数 2
EN

Stack Overflow用户

发布于 2010-01-27 01:41:13

只有在向exslt.org引擎注册/添加扩展时,XSLT才会起作用。由于您没有提到任何关于您的平台的内容,所以很难帮助您解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2141278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档