我需要帮助。
我在名为file_a.xsl
的XSLT文件中定义了javascript。
我还有一个名为file_b.xslt
的第二个XSLT文件。
我一直在努力从sayHello()
调用file_a.xsl
中定义的file_b.xsl
函数。
她是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 :(得分:0)
即使我使用的xsl:import
比xsl:include
更好,您的转换也是正确且完美的。我用 MSXSL 4.0 测试了它,也许你使用的是过时的版本。
结果是:
<br xmlns:foo="http://www.cateringportal.com/">hello there
那里有什么问题?
答案 1 :(得分:0)
我摔倒了 - 我认为这就是你需要的...... 因为它显示了xmlns:cosSin是命名空间 select语句使用cosSin:prefix
调用函数也适用于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>