Umbraco和EXSLT集不起作用

时间:2010-10-07 07:11:12

标签: xslt umbraco exslt

我正在使用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 "&#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抛出错误或者在某处发生了一些网络错误(如果是这样,我怎么找出来的?)

TIA!

2 个答案:

答案 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()。