Подтвердить что ты не робот

Как включить Javascript в xml-документ?

Задача кажется довольно простой: как включить Javascript файл в xml-документ, чтобы хотя бы Opera и Firefox могли его разобрать и выполнить код?

4b9b3361

Ответ 1

Добавить script, где указано пространство имен XHTML, оно будет работать нормально.

<xhtml:script xmlns:xhtml="http://www.w3.org/1999/xhtml"
                src="file.js"
                type="application/javascript"/>

См. также http://www.ibm.com/developerworks/xml/library/x-ffox3/

Ответ 2

Если я получу вас, вы хотите, чтобы XML-документ запускал javascript при просмотре в браузере?

Это не является частью стандарта XML, и поэтому он не будет использоваться до тех пор, пока он не будет (я полагаю, это никогда не будет поддерживаться, потому что XML не предназначен для отображения, а для данных). Если вы говорите о XHTML, это другое дело.

-

Изменить: просто чтобы прояснить мой ответ.

XML никогда не предназначался для отображения разметки, такого как HTML, поэтому был разработан XHTML (HTML, который соответствует стандартам XML). Браузеры были сделаны для интерпретации XHTML определенным образом, но XML - это просто необработанные данные.

Если вы хотите, чтобы ваш XML запускал дополнения, такие как JavaScript, вам нужно будет рассмотреть возможность использования XSLT для преобразования вашего XML в XHTML и, следовательно, воспользоваться возможностями браузеров.

Ответ 3

<script xmlns="http://www.w3.org/1999/xhtml"><![CDATA[
alert('Hello');
]]></script>

Или для внешнего javascript:

<script xmlns="http://www.w3.org/1999/xhtml" src="external.js"></script>

Работает в Firefox и Opera.

Ответ 4

Я сделал это:

XSLT:

<xsl:value-of select="/label[@id='MyScript']/text()" disable-output-escaping="yes"/>

XML:

<label id="MyScript"><![CDATA[
<script type="text/javascript">
alert("Hello world");
</script>
]]></label>

Ответ 5

Вставьте XML и Javascript в документ XHTML, а затем используйте обширные и хорошо документированные возможности динамического HTML.

Вы получите что-то вверх и работает намного быстрее, чем вы, рассуждая о том, что, поскольку некоторые браузеры реализуют слабый и плохо документированный CSS-стиль XML-документов, поэтому они должны поддерживать выполнение Javascript, встроенного в XML, как если бы они были любая связь между этими двумя идеями.

Ответ 6

Как и выше, но это может быть ошибкой, поскольку части <![CDATA[ и ]]> недействительны. Если вы помещаете его в XSL script, вы можете точно так же добавить комментарий JS перед этими начальными и конечными элементами.

Я также использовал элемент xsl:text для вывода части <![CDATA[. Эта часть может быть немного обманом, но в результате получается хорошо сформированный XML. Пример из блока xsl:choose может быть...

...
<xsl:when test='name()="script"'>
  <script>
    <xsl:for-each select='@*'><xsl:copy-of select='.' /></xsl:for-each>
    <xsl:text disable-output-escaping='yes'>
// &lt;![CDATA[
  </xsl:text>
  <xsl:copy-of select='./text()' />
  <xsl:text disable-output-escaping='yes'>
//]]&gt;
  </xsl:text>
  </script>
</xsl:when>
...

Прогуливаясь по частям...

  • Обнаружить элемент <script>.
  • Репликация тега <script> для вывода.
  • Обязательно сохраните атрибуты тега на выходе с быстрой строкой xsl:for-each.
  • Вывести неэкранированный текст: // <![CDATA[. // отображает остальную часть строки как комментарий и, таким образом, предотвращает ошибку JS.
  • Скопировать содержимое текста тега <script>. ПРИМЕЧАНИЕ. Вы должны перенести новую строку (либо выше, либо как-то иначе), чтобы прокомментированная строка до этого не заканчивалась на той же строке, что и эта. Очевидно, что если это произойдет, он также прокомментирует эту строку. Сохранение одного из них не является существенным, но сохраняет эстетику двух соответствующих меток CDATA.
  • Вывести неэкранированный текст: // ]]>. Это завершает блок CDATA, и, опять же, маркировка CDATA игнорируется браузером при чтении JS.
  • Закройте блок тегом </script>, конечно.
  • И если вы используете его в блоке xsl:choose, закройте его xsl:when.

Только шаги 2, 3, 5 и 7 фактически копируют блок script. Остальное занято, чтобы заставить его работать.

Преобразование блока, такого как...

...
<script type='javascript'>alert('Hello World!');</script>
...

Тогда будет,

...
<script type='javascript'>
// <![CDATA[
alert('Hello World!');
// ]]>
</script>

Эффективно сохраняется и читается как XML, так и браузером.

Ответ 7

Функция, которая должна вам помочь, это функция eval(). Эта функция будет оценивать любую строку, которую вы передаете ей как Javascript.

Кроме того, возможно разбирать XML в Javascript. Просто google "javascript xml parser".

Объедините эти две идеи, и вы будете в пути.


Если вы просто хотите поместить javascript в файл XML:

<XML> < js script= "1" > вот несколько javascript; здесь больше javascript; < &/JS GT; < js script= "2" > здесь еще больше javascript; jere - еще больше javascript; < &/JS GT; </XML>