Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > как вставить функцию JavaScript в файл XSL ???


Автор: t77 13.11.2008, 10:04
Доброго времени сутук!
Скажите пожалуйста как вставить функцию JavaScript в файл XSL?
Вставляю в Онклик линка название функции, затем как обычно, описываю саму функцию! Компайлер ругается страшным матом, при этом не указывая на ошибку! Просто выдает номер строки, где я описываю саму функцию и типа :
Код

A Runtime Error has occurred.
Line:13
Error: Object expected

Как быть? Что я делаю не так?

Автор: _zorn_ 13.11.2008, 10:16
Код

<![CDATA[
  Тут идет яваскрипт
]]>

Автор: t77 13.11.2008, 10:27
Описание Функции находится в СДАТЕ!
Код

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    
  <html>
      <head>
                <script>          
              <![CDATA[             
          function doZ()
          {
          alert("good luck!!!");
          }
          ]]>
      </SCRIPT>
      </head>
  <body>      
    <table border="0" width="100%">      
      <xsl:for-each select="QUERY/ITEMS/ITEM">
      <tr>
        <td>
            <a href="javascript:doZ()" onclick="doZ()">
                <xsl:value-of select="@title"/>
            </a>
        </td>
      </tr>
              </xsl:for-each>
    </table>
       </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Не помогает !
Что я делаю не так?

Автор: t77 13.11.2008, 11:53
Спасибо, Разобрался!

Автор: sir_nuf_nuf 13.11.2008, 12:00
t77, напишите в чем проблема была - что бы другим тоже полезно было.

P.S. кстати XML чуствителен к регистру тегов, поэтому <script></SCRIPT> - это не well-formed

Автор: t77 20.11.2008, 19:36
Да конечно!
Попробую объяснить...
Дело в том, что я создаю линки в файле XSL и прямо здесь же в OnClick, созданого линка, хотел добавить функцию JavaScript. Так как трансформацию ХМЛ файла с ХСЛ файлом делаю динамически в коде:
Код

xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 
       xmldoc.async = false; 
       xmldoc.load(file.xml);
xsldoc = new ActiveXObject("Microsoft.XMLDOM"); 
       xsldoc.async = false; 
       xsldoc.load("file.xsl"); 

document.all['myDivID'].innerHTML = xmldoc.transformNode(xsldoc);

А результат должен отображаться в DIV-е(ВОТ ЭТО ОЧЕНЬ ВАЖНЫЙ МОМЕНТ!!!)
Код

document.all['myDivID'].innerHTML = xmldoc.transformNode(xsldoc);

Так как линки находятся в DIV-е не получается описать функцию JavaScript в файле XSL.
Пришлось вынести тело(описание) функции на страничку HTML, на которой делаю трансформацию и все заработало!!! 
Честно говоря не знаю точно почему, дошел методом тыка... 
Так, что если кто шарит почему именно так, объясните пожалуйста!!!
Надеюсь у меня получилось донести до вас то, что хотел!

Автор: sir_nuf_nuf 21.11.2008, 01:03
t77, javascript легко вставляются в XML. через CDATA. вы все правильно делали. только теги script в разном регистре были

Автор: t77 25.11.2008, 11:15
нет нет!!! Не думаю, что в этом проблема была!
При публикации вопроса здесь в форуме, часть кода было написано мною вручную, часть скопирована и вставлена.Так, что произошла опечатка, так как в коде моей программы соблюдался регистр.
Браузер или компилятор(кстати кто из них?) ругался, выбрасывая ошибку.
Тем не менее, оказалось, что из за того, что мой файл XSL должен был отображать данные в DIV-е.
Вот так вот...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)