2016-06-06 2 views
-1

У меня странный эффект. Я использую xalanj и xsltproc, и я думаю, что большинство скриптов работало на обоих (время назад). Однако через некоторое время скрипты xslt с функцией {http://exslt.org/functions} больше не работают в xsltproc. Это debian 7.9.xsltproc не распознает fx: function (не более)

Фрагмент кода

<xsl:transform version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:yz="http://www.hegny.de/xxyy" 
    xmlns:fx="http://exslt.org/functions"> 

... 
<fx:function name="yz:format3"> 
    <xsl:param name="x"/> 
    <xsl:choose> 
... 

будет нормально работать с xalanj но xsltproc пожалуется

compilation error: file /home/hegny/prog/syno_recording/xmltv_text.xsl line 67 element param 
element param only allowed within a template, variable or param 

(строка 67 является парам под Fx: функция)

Кроме того, при вызове xsltproc --dumpextensions будет показан

Registered XSLT Extensions 
-------------------------- 
Registered Extension Functions: 
...(nothing containing exslt.org/functions)... 

Registered Extension Elements: 
{http://exslt.org/functions}result 
{http://xmlsoft.org/XSLT/}test 
{http://exslt.org/common}document 

Registered Extension Modules: 
http://icl.com/saxon 
http://xmlsoft.org/XSLT/ 
http://exslt.org/functions 

будет указывать, что он знает о fx: result, который принадлежит к функциям функций exslt, но не о функции fx: function - какой смысл это сделать? Кто-нибудь узнал, как получить функцию fx: (назад?) Для работы? - Благодаря

+1

Я думаю, что ваш корневой элемент XSLT должен объявить 'extension-element-prefixes =" fx "', no? Является ли это единственным решением, я не уверен, поскольку я не использую 'xsltproc' много. –

+0

Держу пари, я должен! - сделайте ответ и получите полную награду. Я думал, что попробовал это тоже, но потом снова, теперь он работает в xsltproc с функциями .. спасибо! –

ответ

1

Чтобы использовать удлинительные элементы, такие как fx:function, убедитесь, что ваша таблица стилей объявляет пространство имен элемента расширения, а также объявляет extension-element-prefixes="fx" на корневом элементе таблицы стилей xsl:stylesheet соответственно xsl:transform.

+0

Большое спасибо @MartinHonnen, действительно должен был это увидеть сам –

Смежные вопросы