2016-06-06 7 views
-1

나는 이상한 효과가 있습니다. 나는 xalanj와 xsltproc를 사용하며, 대부분의 스크립트는 양쪽 모두에서 작동했다고 생각한다. 그러나 잠시 후 {http://exslt.org/functions} 기능이있는 xslt 스크립트는 더 이상 xsltproc에서 작동하지 않습니다. 이것은 데비안 7.9입니다. xsltproc --dumpextensions를 호출 할 때, 또한xsltproc가 fx : function (더 이상)을 인식하지 못합니다

:

코드 (함수 FX에서 PARAM되는 라인 67)

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 

을 불평 할 것이다 xalanj하지만 xsltproc와 잘 작동합니다

<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> 
... 

스 니펫 표시됩니다

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 

은 exslt 함수에 속하는 fx : result에 대해 알고 있지만 fx에 대해서는 알지 못함을 나타냅니다. function : 어떤 의미입니까? 누구든지 fx : function (back?)을 작동시키는 방법을 찾았습니까? - 감사

+1

XSLT 루트 요소가'extension-element-prefixes = "fx"'를 선언해야한다고 생각하십니까? 그것이 유일한 해결책인지 나는'xsltproc'을 많이 사용하지 않기 때문에 확신 할 수 없다. –

+0

내가해야 할 걸! - 대답을하고 충분한 보상을 받으십시오. 나는 그것을 시도했지만 다시 생각했다. 이제 xsltproc에서 함수로 작동한다. .. 고마워! –

답변

1

fx:function 같은 확장 요소를 사용하려면 스타일 시트의 xsl:stylesheet 각각 xsl:transform 루트 요소에 extension-element-prefixes="fx"를 선언 같은 스타일 시트뿐만 아니라 확장 요소의 네임 스페이스를 선언해야합니다.

+0

@MartinHonnen, 정말 고마워요. –