Итак, я пытаюсь передать переменную 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)"/>
Где зовут "Джейк".
В этом случае вывод "привет" и ничего больше. Разве это не должно быть "helloJake"?
Но если я попытаюсь:
<msxsl:script language="JavaScript" implements-prefix="js">
<![CDATA[
function printString1(str)
{
return str;
}
]]>
</msxsl:script>
Я получаю «Джейк» в качестве вывода.
Что мне здесь не хватает?
EDIT:
Вот как выглядит 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>