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

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

Сфера того, что вы пытаетесь достичь, нуждается в расширении, отредактируйте вопрос, чтобы добавить больше деталей

AnthonyWJones 21.12.2008 19:50

Голосование против, потому что я считаю, что вы путаете причину и следствие: тот факт, что браузеры могут отображать XML, не означает, что они будут интерпретировать его так же, как интерпретируют HTML. И лично я считаю, что директива xml-stylesheet была плохой идеей.

kdgregory 21.12.2008 20:26

Проголосовал, потому что вопрос кажется мне довольно ясным, и @Ady дал на него хороший ответ.

Greg 21.12.2008 21:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
21
3
61 662
7

Ответы 7

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

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

Объедините эти две идеи, и вы отправитесь в путь.


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

<xml> <js script = "1"> вот какой-то javascript; вот еще javascript; </js> <js script = "2"> вот еще больше javascript; jere - это еще больше javascript; </js> </xml>

Пожалуйста, прочтите вопрос еще раз. Я не спрашивал, как разбирать javascript из javascript или xml из javascript.

snitko 21.12.2008 19:47

Разумный ответ, учитывая низкое качество исходного вопроса.

AnthonyWJones 21.12.2008 19:51

<js script = "file.js" /> не выполняется браузером.

snitko 21.12.2008 19:57

Хорошо, позвольте мне попробовать это так: я хочу, чтобы Firefox загрузил xml-файл, затем проанализировал связанный с ним файл javascript и выполнил его код.

snitko 21.12.2008 20:04

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

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

-

Обновлено: просто чтобы уточнить мой ответ.

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

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

Да, вы меня правильно поняли, я говорю о xml, а не о xhtml. И меня не волнуют стандарты, а только реальные возможности браузера. Они поддерживают <? Xml-stylesheet type = "text / css" href = "style.css"?>, Я подумал, что что-то подобное должно быть и для Javascript.

snitko 21.12.2008 20:01

Я думаю, вам нужно подумать, для чего был предназначен XML. Вы можете использовать XSLT для преобразования XML в XHTML и, прежде всего, открыть страницу как HTML-документ со всем javascript, который вы хотите запустить.

Ady 21.12.2008 20:07

xhtml - это просто частный случай xml. Что же делает xml плохим для работы с javascript? Теоретически js не имеет ничего общего с тем, для чего был разработан xml, я не вижу никакого соединения и не вижу причин ограничивать запуск js для xml-документа.

snitko 21.12.2008 20:13

@snitko - главное, чтобы ни один браузер не воспринимал это как разметку дисплея, и чтобы получить что-то базовое, например, работу событий, вам нужно было бы определить столько расширений, что вы также можете использовать xhtml, который уже легко определяет эти вещи

annakata 22.12.2008 01:06

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

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

Добавьте сценарий, указывающий пространство имен 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/

@ user4815100 Здесь сказано: «В этом теге и его потомках пространство имен xhtml означает пространство имен "http://www.w3.org/1999/xhtml"». По сути, он позволяет включать элементы XHTML в любой XML-документ.

wizzwizz4 27.10.2018 17:49
<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.

могу подтвердить, что xmlns - это решение :) отличный ответ! Работает в Chrome! Хотя мне кажется странным, что он может запускать getElementById / querySelectorAll, поскольку он не находится в правильном пространстве имен, и моя схема может использовать разные атрибуты для их обозначения.

Dmitry 24.07.2016 20:13

Я сделал это:

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>

Аналогично описанному выше, но это может привести к ошибке, потому что части <![CDATA[ и ]]> не являются допустимым кодом. Если вы помещаете его в XSL-скрипт, вы также можете поставить пометку 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>
...

Прогулка по кускам ...

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

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

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

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

Затем становится,

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

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

Другие вопросы по теме