Как включить тег сценария в XSL-файл? - PullRequest
10 голосов
/ 23 декабря 2011

Я работаю над старым сайтом, который использует java и xsl.Как я могу внедрить файл сценария в файл xsl?Начало файла:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:include href="shipmentPackageInfo.xsl"/>

<script src="/fs/scripts/shipment/shipment.js"></script>

разрывает приложение

- ОБНОВЛЕНИЕ -

Есть еще один файл с именем pageHeader.xsl, в котором есть все теги сценария внутри

<xsl:output method="html"/>
  <xsl:template match="PageHeaderData">

Ответы [ 7 ]

9 голосов
/ 25 декабря 2011

Посмотрите на мой ответ на XSLT не позволит мне использовать самозакрывающиеся теги img и br

Самозакрывающиеся теги скрипта (<script src="code.js"/>) могут привести к тому, что файлы JavaScript не будут загружаться, поэтому внутри вашего XSLT вам может потребоваться текст внутри тега скрипта, чтобы он не закрывался сам и заставлял его работать .

<script src="code.js>//</script>
9 голосов
/ 23 декабря 2011

Кажется, здесь есть решение:

http://www.webdeveloper.com/forum/archive/index.php/t-20815.html

Поместите код javascript между <xsl:text> тегом что-то вроде ниже

<script type="text/javascript">

<xsl:text>

javascript here

</xsl:text>

</script>
5 голосов
/ 13 апреля 2014

О, мне это нравится:

... ...
        </body>
<script language="javascript"><![CDATA[
var a_patch = function(){
    var links = document.getElementsByTagName("a");
    for (var i=0; i<links.length; i++){
        var link = links[i];
        var text = link.innerHTML;
        ... ...
    }
};
a_patch();
]]></script>
</html>
2 голосов
/ 23 декабря 2011

Вы должны вставить тег скрипта в блок шаблона, или он сломается ...

т.е.

<xsl:template match="/">
    <script src="/fs/scripts/shipment/shipment.js"></script>
</xsl:template>
1 голос
/ 23 декабря 2011

EDITED

Вот решение, которое работает

Предполагая, что это ваш xsl, и вы включаете xsl, как вы упомянули. В этом случае я назвал это include.xsl. Я просто вызываю шаблон с названием headers, который передает ссылку на javascript.

Основной XSLT-файл:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 version="1.0">
    <xsl:include href="include.xsl"/>

    <xsl:template match="/">
        <xsl:call-template name="headers"/>
        <bar>
           <xsl:value-of select="root"/>
        </bar>
    </xsl:template>
</xsl:stylesheet>

include.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
   <xsl:template name="headers">
        <script src="/fs/scripts/shipment/shipment.js"></script>
   </xsl:template>
</xsl:stylesheet>

Выход:

<?xml version="1.0" encoding="utf-8"?>
<script src="/fs/scripts/shipment/shipment.js"/>
<bar>foo</bar>
0 голосов
/ 01 июня 2018

Решение, которое работает для:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding='utf-8' />
    <xsl:output method="xml" omit-xml-declaration="yes" standalone="no" indent="yes" media-type="text/xhtml" />

:

<script type="text/javascript">
    <xsl:text disable-output-escaping="yes">

         <![CDATA[

               /* Your Javascript code comes here  */

         ]]>
    </xsl:text>
    <xsl:comment>_</xsl:comment>
 </script>
0 голосов
/ 21 марта 2014
 <script type="text/javascript" src="/Scripts/script.js">
     <xsl:comment>script</xsl:comment>
 </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...