У меня есть преобразование xslt, которое отлично работает при запуске в Altova XML Spy, но с ошибками в saxon9he.jar.Ниже приведены фрагменты кода и сообщение об ошибке saxon.
Что нужно сделать по-другому, чтобы использовать saxon в качестве процессора xslt?
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:custom="urn:schemas-microsoft-com:xslt"
xmlns:js="urn:custom-javascript"
exclude-result-prefixes="custom js">
<custom:script language="Javascript" implements-prefix="js">
<![CDATA[
function mergeStrings (string1, string2) {
... java code ...
}
]]>
</custom:script>
Пользовательский скрипт вызывается в xpathвыражения, подобные следующему:
<xsl:value-of select="js:mergeStrings(str1, str2)" disable-output-escaping="yes"/>
Используемый мной саксонский вызов похож на следующее:
java -jar C:\saxon9he.jar -s:C:\src.xml -xsl:C:\transform.xslt -o:C:\out.html
Saxon теперь выдает ошибки с сообщением, подобным следующему:
Error at xsl:value-of on line 775 column 105 of transform.xslt:
XPST0017: XPath syntax error at char 43 on line 775 in {...gs(str1, str2...}:
Cannot find a matching 2-argument function named {urn:custom-javascript}mergeStrings()