2011-06-10 99 views
0

我需要帮助。 我在一个名为file_a.xsl的XSLT文件中定义了javascript。 我还有另一个名为file_b.xslt的XSLT文件。 我一直在努力致电file_a.xsl中定义的sayHello()功能。从包含在主xslt文件中的外部xslt文件调用javascript函数

她是file_a.xsl

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
       xmlns:foo="http://www.cateringportal.com/" 
        extension-element-prefixes="msxsl"> 



<msxsl:script language="javascript" implements-prefix="foo"> 
     <![CDATA[ 
     function sayHello() 
     { 
       return "hello there"; 
     } 
     ]]> 
     </msxsl:script> 

</xsl:stylesheet> 

她是file_b.xsl

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:foo="http://www.cateringportal.com/" > 
    <xsl:include href="helloXSL.xsl" /> 

<xsl:output method="html"/> 
    <xsl:template match="/"> 
    <br/> 


<xsl:value-of select="foo:sayHello()”/> 

    </xsl:template> 
</xsl:stylesheet> 

我将竭诚为解决此问题的帮助。

回答

0

即使我会更好地使用xsl:import而不是xsl:include,您的trasnforms是正确和完美的工作。我用MSXSL 4.0进行了测试,可能您使用的是过时版本。

结果是:

<br xmlns:foo="http://www.cateringportal.com/">hello there 

什么问题呢?

0

我摔倒了这一点 - 我想这是你所需要的...
,因为它显示的xmlns:cosSin是命名空间 select语句调用使用cosSin功能:

工程在MS版本4前缀也....

...

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:cosSin="urn:cosSin"> 
... 
<text fill="white" stroke="none" font-size="48" text-anchor="middle">  
     <xsl:attribute name="x"><xsl:value-of select="(cosSin:returnX($offSet + ($slicePercentage div 2)) * 600) + 1000" /></xsl:attribute> 
     <xsl:attribute name="y"><xsl:value-of select="(cosSin:returnY($offSet + ($slicePercentage div 2)) * 600) + 1000" /></xsl:attribute> 
     <xsl:value-of select="$slicePercentage" /> % 
    </text> 
    ... 
<msxsl:script language="JScript" implements-prefix="cosSin"> 
function returnX(percent) { 
    var degree = percent * 3.6; 
    return Math.cos(degree*Math.PI/180); 
} 
function returnY(percent) { 
    var degree = percent * 3.6; 
    return Math.sin(degree*Math.PI/180); 
} 
</msxsl:script> 
相关问题