当前位置: 首页 > 知识库问答 >
问题:

撒克逊人。应用程序编程接口。DynamicError,“找不到名为{exslt.org/common}node-set()的匹配1参数函数”

束新
2023-03-14

Hi专家/Michael Kay

我得到了"Saxon. Api. DynamicError-找不到名为{exslt.org/common}node-set()的匹配1参数函数。使用saxon9he-v9.4.0.2没有本地名称node-set的Saxon扩展函数。我的XSLT文件正在调用“EXSLT”。请帮助我解决问题。

public static StringWriter XSLT2(string sourceFile, string XSLT)
{
    Processor processor = new Processor();

    var setting = new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse };
    XmlReader reader2 = XmlReader.Create(sourceFile, setting);
    XdmNode input = processor.NewDocumentBuilder().Build(reader2);
    //XPathCompiler compiler = processor.NewXPathCompiler();
    //compiler.DeclareNamespace("exsl", "http://exslt.org/common");

    // Create a transformer for the stylesheet.
    //Stream XsltTransformer transformer = processor.NewXsltCompiler().Compile(XSLT).Load();
    XsltTransformer transformer = processor.NewXsltCompiler().Compile(new Uri(XSLT + @"\mekontopic.xsl")).Load();
    transformer.InputXmlResolver = new XmlUrlResolver();

    // Set the root node of the source document to be the initial context node
    transformer.InitialContextNode = input;

    // Create a serializer
    StringWriter s = new StringWriter();
    Serializer serializer = new Serializer();//serializer.SetOutputWriter(Console.Out);
    serializer.SetOutputWriter(s);

    // Transform the source XML to System.out.
    transformer.Run(serializer);
    return s;
}

提前谢谢

SARAN公司

共有2个答案

姬天宇
2023-03-14

根据http://www.saxonica.com/feature-matrix.html,HE版本不支持EXSLT函数。您需要升级到更高版本,或者(最好)重写样式表以利用不需要EXSLT扩展函数的XSLT 2.0。

或者,您也可以降级到XSLT 1.0处理器,如Saxon 6.5或Xalan。

曹普松
2023-03-14

一般来说,Saxon-HE不提供任何扩展函数;您必须升级到Saxon PE。

但是,exslt: node-set()扩展在XSLT 1.0代码中使用如此广泛,以至于我们对此有所松懈,它在Saxon-HE 9.6中可用,并且(我认为,需要检查)也在9.5中可用。

如果您需要,还有另一种解决方法:自己实现。只需将自定义模块添加到包含代码的样式表(导入以前的主模块的主模块)中

<xsl:function name="exslt:node-set" as="node()">
  <xsl:param name="n" as="node()"/>
  <xsl:sequence select="$n"/>
</xsl:function>
 类似资料:
  • 问题内容: 我曾经运行过Flask应用。如果将变量更改为,则Gunicorn给出错误。为什么会出现此错误,我该如何解决? myproject.py: wsgi.py: 问题答案: Gunicorn(和大多数WSGI服务器)默认在你指向的模块中查找可调用的名称。添加别名或将使再次发现可调用对象。 但是,wsgi.py不需要文件或别名,Gunicorn可以直接指向实际模块并可以调用。 Gunicorn

  • 我正在使用实体框架和ASP。NETMVC4来构建一个应用程序 我的解决方案分为两个项目; 包含我的数据模型(.edmx)文件和一些自定义接口的类库 引用上述类库的“容器”MVC项目 我的问题是,当我尝试使用“MyEntites”DbContext时,会出现以下错误: 在应用程序配置文件中找不到名为“MyEntities”的连接字符串。 我猜问题与连接字符串位于应用程序中这一事实有关。配置类库而不是

  • 本文翻译自The Flask Mega-Tutorial Part XXIII: Application Programming Interfaces (APIs) 我为此应用程序构建的所有功能都只适用于特定类型的客户端:Web浏览器。但其他类型的客户端呢?例如,如果我想构建Android或iOS APP,有两种主流方法可以解决这个问题。 最简单的解决方案是构建一个简单的APP,仅使用一个Web视

  • 我试图使用Saxon SQL Extension从XSL模板中获取SQL Server的数据。但我得到一个错误: xsl中的错误:复制/@选择在sqlserver_books.xsl的第36行第60列: XTDE1450:未知扩展指令 未知扩展指令 < li>Saxon版本:SaxonPE 9-7-0-11 < li>Java版本:1.8.0_60 命令: sqlserver_books.xsl

  • 我已经创建了一个全新的angular 7应用程序,并将其与SCSS一起安装。在构建应用程序之后,我会得到以下错误

  • 使用ApacheFlink版本1.3.2和Cassandra3.11,我编写了一个简单的代码,使用ApacheFlink-Cassandra连接器将数据写入Cassandra。代码如下: 尝试使用ApacheFlink 1.4.2(1.4.x)运行相同的代码时,出现错误: 在线 我认为ApacheFlink1.4.2中存在一些依赖性更改,这导致了问题。 我在代码中使用以下导入的依赖项: 如何解决A