Доступ и отображение элементов XML-документа. Отображение переменного количества элементов XML-документа

Страницы работы

Содержание работы

ПРИМЕР 1: Доступ и отображение элементов XML-документа

<HTML><HEAD><TITLE>Отображение 1 и 5 элементов XML-документа</TITLE>

</HEAD><BODY>

 <H2>1 и 5 элементы XML-документа</H2>

 <XML ID="dsoBook" SRC="book.xml"></XML>

<SCRIPT LANGUAGE="JavaScript">

var Doc = dsoBook;

document.write ("Заголовок: " + Doc.documentElement.childNodes(0).text + "<BR>");

document.write ("Цена: " + Doc.documentElement.childNodes(4).text);

</SCRIPT>

 </BODY></HTML>

Объяснение примера 1:

Doc = dsoBook;

Сценарий получает узел Document через идентификатор ID=”dsoBook” из Data Islands <XML>…</XML>

Doc

Содержит корневой узел Document в иерархии узлов DOM

documentElement

Свойство узла Document содержит узел Element, который является корневым элементом XML-документа

childNodes(4)

Свойство узла Element (для корневого элемента) содержит множество всех дочерних узлов (title, price и пр.), не являющихся атрибутами. Нумерация дочерних узлов начинается с 0.

text

Содержит текст элемента и тексты всех его дочерних элементов

document.write

Применить метод write по отношению к текущему документу

Хотя выражение Doc.childNodes(2) и обеспечивает доступ к узлу корневого документа (при наличии комментария в XML-документе), но нет гарантии, что комментарий имеется...

ПРИМЕР 2: Отображение переменного количества элементов XML-документа

<HTML><HEAD><TITLE>Список книг</TITLE>

 <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD">

 var HTMLCode = "";

 var Doc = dsoBook;     

  for (i=0; i < Doc.documentElement.childNodes.length; i++)

   {

    HTMLCode =  HTMLCode + "<SPAN STYLE='font-style:italic'>Наименование: </SPAN>"

      + Doc.documentElement.childNodes(i).childNodes(0).text + "<BR>"

      + "<SPAN STYLE='font-style:italic'>Цена: </SPAN>"

      + Doc.documentElement.childNodes(i).childNodes(4).text + "<P>";

   }

  DisplayDIV.innerHTML=HTMLCode;        

 </SCRIPT>

</HEAD>

<BODY>

 <XML ID="dsoBook" SRC="book2.xml"></XML>

 <H2>Список книг</H2>

 <DIV ID="DisplayDIV"></DIV>

</BODY></HTML> 

Объяснение примера 2:

Doc.documentElement.childNodes.length;

 Свойство length (количество элементов внутри корневого элемента) является членом группового объекта NodeList, которое предоставляется свойством childNodes узла корневого элемента

DisplayDIV.innerHTML=HTMLCode;

 Присвоить HTML-разметку (накопленную в переменной HTMLCode) свойству innerHTML элемента DIV (имеет ID="DisplayDIV") раздела BODY страницы

ПРИМЕР 3: Поиск элемента по его имени

<HTML><HEAD><TITLE>Поиск элемента</TITLE>

 <SCRIPT LANGUAGE="JavaScript">

  function ShowElements()

   {if (ElementName.value == "")

    {ResultDiv.innerText = "<Укажите имя элемента>";return;}

   Doc = dsoXML.XMLDocument;

   NodeList = Doc.getElementsByTagName (ElementName.value);

   ResultHTML = "";

   for (i=0; i < NodeList.length; ++i) ResultHTML += NodeList(i).xml + "\n\n";

   if (ResultHTML == "") ResultDiv.innerText = "<такой элемент отсутствует>";

    else ResultDiv.innerText = ResultHTML;}

 </SCRIPT></HEAD><BODY>

 <XML ID="dsoXML" SRC="book2.xml"></XML>

 <H2>Поиск элемента по его имени</H2>

 Укажите имя элемента: <INPUT TYPE="TEXT" ID="ElementName">&nbsp

 <BUTTON ONCLICK="ShowElements()">Показать элемент</BUTTON>

 <HR>

 <DIV ID=ResultDiv></DIV>

</BODY></HTML> 

 Объяснение примера 3:

<INPUT TYPE="TEXT" ID="ElementName">&nbsp
<BUTTON ONCLICK="ShowElements()">Показать элемент</BUTTON>

 При нажатии на кнопку "Показать элемент" вызывается SCRIPT-функция ShowElements

NodeList(i).xml

 Использовать свойство xml для отображения XML-разметки всех элементов документа с заданным именем

 ПРИМЕР 4: Проверка валидности (состоятельности) XML-документа

<!-- File Name: Validity Test.htm -->

<HTML><HEAD><TITLE>Тест валидности XML-документа</TITLE>

   <SCRIPT LANGUAGE="JavaScript" FOR="window" EVENT="ONLOAD">

    Doc = dsoTest.XMLDocument;

    if (Doc.readyState == 4) DisplayError ();

    else Doc.onreadystatechange = DisplayError;

    function DisplayError ()

     {

      if (Doc.readyState != 4) return;

      message = "Код ошибки: " + Doc.parseError.errorCode + "\n"

              + "Номер символа в файле: " + Doc.parseError.filepos + "\n"

              + "Номер строки: " + Doc.parseError.line + "\n"

              + "Номер символа в строке: " + Doc.parseError.linepos + "\n"

              + "Причина ошибки: " + Doc.parseError.reason + "\n"

              + "Текст строки: " + Doc.parseError.srcText + "\n"

              + "URL XML-файла: " + Doc.parseError.url;

      alert (message);

     }

  </SCRIPT>

 </HEAD><BODY>

  <!--В атрибуте SRC укажите значение URL проверяемого на валидность XML-документа:-->

  <XML ID="dsoTest" SRC="N_A_M_E__F_I_L_E.xml"></XML>

 </BODY></HTML> 

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

 HTML-страница сообщает с помощью свойств DOM о первой ошибке корректности (целостности) форм открываемого XML-документа. А если в документе включено объявление типа документа DTD, то сообщает и о ошибке валидности.

 Таким образом сценарий может узнать о завершении процесса загрузки и обработки XML-документа (целесообразно использовать при создании полноценных HTML-страниц).

if (Doc.readyState == 4) DisplayError ();
else Doc.onreadystatechange = DisplayError;

 Если значение свойства readyState узла Document равно 4 (XML-данные загружены и обработаны), то выполняется функция индикации ошибки DisplayError. В противном случае сценарий присваивает свойству onreadystatechange узла Document функцию DisplayError (это обеспечит вызов броузером функции DisplayError позднее, когда изменится значение readyState)

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
46 Kb
Скачали:
0