Как включить javaScript файл в xslt

Как включить/импортировать файл javaScript/libary в файл xslt.

Ответы

Ответ 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> 

Ответ 2

Если вы пытаетесь включить источник Javascript в сгенерированный HTML файл, это тег script. Но многие XSLT-процессоры будут дросселировать, если тег пуст. Если все выглядит нормально, но вы получаете пустой вывод при добавлении тегов script, попробуйте вставить неразрывное пространство в теге, как в:

<script type="text/javascript" src="SomePath/SomeFileName.js">&#160;</script>