<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-документе), но нет гарантии, что комментарий имеется...  | 
 
<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 страницы  | 
 
<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"> 
<BUTTON ONCLICK="ShowElements()">Показать элемент</BUTTON>
<HR>
<DIV ID=ResultDiv></DIV>
</BODY></HTML>
Объяснение примера 3:
| 
   <INPUT
  TYPE="TEXT" ID="ElementName">   | 
  
   При нажатии на кнопку "Показать элемент" вызывается SCRIPT-функция ShowElements  | 
 
| 
   NodeList(i).xml  | 
  
   Использовать свойство xml для отображения 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 ();  | 
  
   Если значение свойства readyState узла Document равно 4 (XML-данные загружены и обработаны), то выполняется функция индикации ошибки DisplayError. В противном случае сценарий присваивает свойству onreadystatechange узла Document функцию DisplayError (это обеспечит вызов броузером функции DisplayError позднее, когда изменится значение readyState)  | 
 
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.