Я пытаюсь вызвать функцию javascript в моем XSL-файле.
Мой XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:jscript="http://www.url.com" exclude-result-prefixes="msxsl jscript">
.
.
.
<html>
<head>
.
.
.
<msxsl:script language="JScript" implements-prefix="jscript">
<![CDATA[
function testFnc(){
return "test";
}
}]]>
</msxsl:script>
</head>
.
.
.
</html>
.
.
.
<xsl:value-of select="jscript:testFnc()"/>
В файле Java при попытке создать Transformer:
Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(xslUrl));
Я получаю сообщение об ошибке:
ОШИБКА: 'Не удается найти класс' www.url.com '.'>
ФАТАЛЬНАЯ ОШИБКА: 'Не удается найти внешний метод' www. url.com.testFnc '(должен быть общедоступным).'
javax.xml.transform.TransformerConfigurationException: Не удается найти внешний метод 'www.url.com.testFnc' (должен быть общедоступным).
Без этого кода
<xsl:value-of select="jscript:testFnc()"/>
все работало нормально.
В Java 7 была похожая проблема со встроенным Xalan: Расширения Xalan Java 'Не удается найти класс'ошибка на JRE 7
Мне было интересно, эта проблема все еще присутствует в Java 8.
Я также пытался что-то вроде этого: http://xml.apache.org/xalan-j/extensions.html#basic-pattern Каквключить вызов JavaScript в XSLT?
, но результаты остались прежними.
Заранее спасибо