Ответ 1
Если вам нужно использовать javascript в преобразовании (например, он содержит набор функций расширения, которые вызывают в преобразовании), вам нужно поместить содержимое javascript (по крайней мере, это одного файла javascript) в отдельном файле стилей XSLT, используя правильный элемент расширения (например, <msxml:script>
) в качестве родителя текста node, который содержит код javascript.
Вот очень простой пример: любой процессор Microsoft XSLT (MSXML3/4/6, XslCompiledTransform или XslTransform):
файл XSL-JS.xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<msxsl:script language="JScript" implements-prefix="user">
function xml(nodelist) {
return "A B C";
}
</msxsl:script>
</xsl:stylesheet>
Файл XSL-Main.xsl, который импортирует javascript:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<xsl:import href="XSL-JS.xsl"/>
<xsl:template match="/">
<xsl:value-of select="user:xml(.)"/>
</xsl:template>
</xsl:stylesheet>
Когда преобразование, содержащееся в файле XSL-Main.xsl, применяется к любому XML-документу (не используется/игнорируется), желаемый, правильный результат получается:
A B C
Совсем другой случай, если вы просто хотите сгенерировать приложением XSLT файл HTML, который ссылается на данный файл Javascript.
Затем вы включаете это в свой XSLT-код и генерируете это буквально как часть вывода:
<script type="text/javascript" src="SomePath/SomeFileName.js"></script>