Наборы Umbraco и EXSLT не работают - PullRequest
2 голосов
/ 07 октября 2010

Я создаю некоторые xslt, используя Umbraco 4.5.2, и я хочу добавить функцию de set: отлично от EXSLT.org (http://www.exslt.org/set/functions/distinct/index.html) однако, когда я ссылаюсь на набор: Different, я получаю ошибку:

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, который выдает ошибку, или где-то произошла какая-то ошибка в сети (и если да, то как я могу это выяснить)?

ТИА!

Ответы [ 2 ]

1 голос
/ 07 октября 2010

EXSLT изначально не реализован двумя процессорами .NET XSLT : XslCompiledTransform и (устарел) XslTransform.

Существуют сторонние реализации EXSLT для .NET такой, который в проекте MVPXML.Вам нужно получить его из здесь и установить его в системе, которая выполняет преобразование XSLT.

Вы также всегда можете использовать чистый XSLT 1.0 мюнхенский метод группировки (в теге xslt есть много-много вопросов с ответами, которые демонстрируют мюнхенскую группировку), и это предпочтительнее в том случае, если ваш код xslt должен быть переносимым, чтобы работать с таким количествомнасколько возможно совместимые процессоры XSLT 1.0.

0 голосов
/ 26 октября 2010

Платформа Umbraco уже включает реализацию Exslt.Sets, поэтому вам не нужно добавлять дополнительную ссылку на нее, как указано выше. Вы можете увидеть ссылку на реализацию Umbraco в вашем коде выше, она выглядит так:

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

Удалить строки:

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

и используйте Exslt.ExsltSets: Different ().

...