2

我正在使用 Umbraco 4.5.2 创建一些 xslt,并且我想从 EXSLT.org (http://www.exslt.org/set/functions/distinct/index.html) 添加 de set:distinct 函数但是,当我参考 set:distinct 我得到错误:

System.Xml.Xsl.XslTransformException:找不到与命名空间“http://exslt.org/sets”关联的脚本或扩展对象。

我添加了文件、xslt 中的扩展名和命名空间,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxml="urn:schemas-microsoft-com:xslt" 
    xmlns:exsl="http://exslt.org/functions"
    xmlns:set="http://exslt.org/sets" 
    xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" 
    exclude-result-prefixes="exsl msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">
<xsl:import href="set.xsl" />

是我遗漏了什么,还是 Umbraco 抛出了错误,或者某处是否发生了一些底层网络错误(如果是,我该如何找出)?

蒂亚!

4

2 回答 2

1

EXSLT 不是由两个 .NET XSLT 处理器本地实现的:XslCompiledTransform 和(过时的)XslTransform。

EXSLT for .NET 有第 3 方实现,例如 MVPXML 项目中的一个。您需要从此处获取它并将其安装在执行 XSLT 转换的系统上。

您也可以始终使用纯 XSLT 1.0 Muenchian 方法进行分组(xslt 标记中有很多问题,其中包含演示 Muenchian 分组的答案),如果您的 xslt 代码应该是可移植的以便运行尽可能多的兼容 XSLT 1.0 处理器。

于 2010-10-07T12:47:42.827 回答
0

Umbraco 框架已经包含 Exslt.Sets 实现,因此您不需要像上面那样添加对它的进一步引用。您可以在上面的代码中看到对 Umbraco 实现的引用,如下所示:

xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"

删除行:

xmlns:exsl="http://exslt.org/functions"
xmlns:set="http://exslt.org/sets" 

并使用 Exslt.ExsltSets:distinct()。

于 2010-10-26T13:02:20.337 回答