我正在使用Umbraco 4.5.2创建一些xslt,我想在EXSLT.org(http://www.exslt.org/set/functions/distinct/index.html)中添加de set:distinct函数但是,当我引用集合时:distinct我得到错误:
System.Xml.Xsl.XslTransformException: 找不到脚本或扩展名 与命名空间关联的对象 'http://exslt.org/sets'。
我添加了文件,xslt中的扩展名和名称空间,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<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抛出错误或者在某处发生了一些网络错误(如果是这样,我怎么找出来的?)
TIA!
答案 0 :(得分:1)
EXSLT不是由两个.NET XSLT处理器本地实现的:XslCompiledTransform和(已废弃)XslTransform。
有EXSLT for .NET的第三方实现,这是MVPXML项目中的实现。您需要从 here 获取它并将其安装在执行XSLT转换的系统上。
您也可以始终使用纯XSLT 1.0 Muenchian method for grouping (xslt标记中有许多问题以及展示Muenchian分组的答案),如果你的话,这是优先的xslt代码应该是可移植的,以便与尽可能多的兼容XSLT 1.0处理器一起运行。
答案 1 :(得分: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()。