Как включить файл javaScript в xslt - PullRequest
20 голосов
/ 16 сентября 2011

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

Ответы [ 3 ]

21 голосов
/ 16 сентября 2011

Если вам нужно использовать javascript в преобразовании (например, он содержит набор функций расширения, которые вызываются в преобразовании), вам нужно поместить содержимое javascript (по крайней мере, изодин файл javascript) в отдельном файле таблицы стилей XSLT, используя соответствующий элемент расширения (например, <msxml:script>) в качестве родителя текстового узла, содержащего код 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> 
10 голосов
/ 08 февраля 2013

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

<script type="text/javascript" src="SomePath/SomeFileName.js">&#160;</script> 
7 голосов
/ 19 мая 2015

Это то, что я сделал, и это сработало для меня.

<script>
<![CDATA[
   //ADD SCRIPT HERE.
]]>
</script>

Ссылка: https://www.w3schools.com/xml/dom_nodes_traverse.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...