私は、Altova XML Spyで実行するとうまく動作しますが、saxon9he.jarでエラーが発生するxslt変換があります。 コードスニペットとsaxonエラーメッセージについては、以下を参照してください。サクソンで実行するxslのインラインJavaScriptを指定する方法
サクソンを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
サクソン同様のメッセージとエラー次のようになります。
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()
明確な答え - saxonのdocページに記載されている "統合拡張機能"機能を使用してsaxon内ですべての作業を行うには、ここで特別な努力を払う必要があります。 – Maestro13
XSLTとXPath 2.0とECMAScript/Javascriptのパワー比較私はなぜ拡張機能に依存するのではなく 'mergeStrings'を' xsl:function'で実装できないのだろうかと思います。しかし、私たちは機能コードの詳細や明確な要件の説明を見る必要があります。すべてが最高の別の投稿で行われています。 –