所以我试图将一个XSL变量传递给一个js函数,然后用一个字符串连接它,但它不起作用。
这就是我的尝试:
<msxsl:script language="JavaScript" implements-prefix="js">
<![CDATA[
function printString1(str)
{
str2 = 'hello' + str;
return str2;
}
]]>
</msxsl:script>
这就是我称之为方法的方式:
<xsl:value-of select="js:printString1(s:somepath/@name)"/>
名称是“Jake”。
在这种情况下,输出是“hello”而没有别的。它应该不是“helloJake”吗?
但如果我尝试:
<msxsl:script language="JavaScript" implements-prefix="js">
<![CDATA[
function printString1(str)
{
return str;
}
]]>
</msxsl:script>
我把“Jake”作为输出。
我在这里缺少什么?
编辑:
这是XML文件的外观:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="MeasDataStylesheetWithScript2.xsl"?>
<measCollecFile
xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="measCollec">
<fileHeader vendorName="samplename">
</fileHeader>
</measCollecFile>
这就是XSL文件的外观:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:s="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:js="urn:custom-javascript"
exclude-result-prefixes="s msxsl js">
<msxsl:script language="javascript" implements-prefix="js">
<![CDATA[
function printString1(str)
{
var str2 = 'hello' + str;
return str2;
}
]]>
</msxsl:script>
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="js:printString1(s:measCollecFile/s:fileHeader/@vendorName)"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
尝试将var
设置为str2
:
<msxsl:script language="JScript" implements-prefix="js">
<![CDATA[
function printString1(str)
{
var str2 = 'hello' + str;
return str2;
}
]]>
</msxsl:script>
我尝试了以下模板:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
xmlns:js="js"
>
<xsl:output method="xml" indent="yes"/>
<msxsl:script language="JScript" implements-prefix="js">
<![CDATA[
function printString1(str)
{
var str2 = 'hello' + str;
return str2;
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="js:printString1('Jake')"/>
</xsl:template>
</xsl:stylesheet>
输出:helloJake
修改强>
使用XPath string
函数,例如:
<xsl:value-of select="js:printString1(string(s:measCollecFile/s:fileHeader/@vendorName))"/>