получить JavaScript для выполнения для XML-файла - PullRequest
1 голос
/ 08 ноября 2010

У меня проблемы с добавлением Javascript в виде CDATA в файлы .xml. Это возможно? Я начинаю с:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
 <title>XHTML 5 Example</title>
 <script type="application/javascript">
 <![CDATA[
 function loadpdf() {
    document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf";
 }
 ]]>
 </script>
 </head>
 <body onload="loadpdf()">
 <p>This is an example of an
 <abbr title="Extensible HyperText Markup Language">XHTML</abbr> 1.0 Strict document.<br/>
 <img id="validation-icon"
    src="http://www.w3.org/Icons/valid-xhtml10"
    alt="Valid XHTML 1.0 Strict"/><br/>
 <object id="pdf-object"
    type="application/pdf"
    data="http://www.w3.org/TR/xhtml1/xhtml1.pdf"
    width="100"
    height="500"/>
 </p>
 </body>
</html>

пример # 2 (я изменил значение ширины, чтобы пройти проверку w3c)

может ли этот файл быть сохранен как правильно сформированный XML-файл, и должен ли он выполняться в таком случае?

1 Ответ

1 голос
/ 08 ноября 2010

При добавлении тега JavaScript script или тега CSS style в XHTML целесообразно поместить его в тег <![CDATA[ ]]>. Тем не менее, он будет рассматриваться браузером как часть вашего скрипта. Чтобы предотвратить выполнение этой части скрипта, просто закомментируйте тег <![CDATA[]]>:

<script type="text/javascript">
/* <![CDATA[ */

/* ]]> */
</script>

OR

<style type="text/css">
/* <![CDATA[ */

/* ]]> */
</style>

Это позволит вам использовать специальные символы в XML без необходимости их кодирования, а также позволит вашему сценарию правильно выполняться без ошибок. Кроме того, многострочный комментарий является хорошим выбором, если пробел когда-либо будет проанализирован.

ИЗМЕНИТЬ, чтобы добавить:

Я считаю, что элемент object должен иметь закрывающий тег (несмотря на то, что он пустой), аналогично тому, как вы должны добавить закрывающий тег к тегу script, когда указан внешний источник. Мне пока не удалось проверить это .

Что касается XHTML, рекомендуемое расширение файла по-прежнему .html, однако вы можете сохранить файл с любым расширением (даже .pdf). То, что вы пометили его как другое расширение файла, не означает, что содержимое обязательно является допустимым для этого расширения, и не означает, что приложения смогут читать файл.

Сохранение XHTML в виде .xml файла является абсолютно законным, и если он правильно сформирован, XHTML будет полностью разбираться любым приложением, которое может анализировать XML. Если веб-браузер откроет файл XML, он, скорее всего, отобразит содержимое в виде дерева XML. Если вы хотите, чтобы веб-браузер считывал его как веб-страницу, сохраните его как таковой (.html)

Предостережение : Пробелы и разрывы строк сохраняются в текстовых узлах XML. Если вы анализируете страницу, используя анализатор XML, и у вас есть отступы для удобства чтения, анализатор будет включать в выходные данные разрывы строк и символы новой строки.

<div>
  <span>
    Some text
    on multiple
    lines
  </span>
  <span>
    Some text
    on multiple
    lines
  </span>
</div>

Содержимое диапазона будет по существу: "\n Some text\n on multiple\n lines\n"

Обходной путь - расширить конечную угловую скобку до начала текстового узла:

<div
  ><span>Some text on one line</span
  ><span>Some text on one line</span
></div>

Это работает, потому что лишние пробелы внутри элемента игнорируются.

...