Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



Итак, вы теперь знаете, как отобразить XML-документ, имеющий известное число элементов. Если документ имеет неизвестное число элементов, использование DOM для отображения документа несколько усложняется.

Например, для XML-документа типа Inventory.xml   или Big . xml   вы обычно не знаете заранее, сколько элементов BOOK содержит документ. Если же количество элементов BOOK меняется, необходимо воспользоваться сценарием.

В файле Book . xml представлена HTML-страница, которая использует DOM для отображения документа Inventory.xml  вне зависимости от того, сколько элементов BOOK в нем содержится. На рисунке 4.3 показано как будет выглядеть страница в Internet Explorer.

 

 

Рис. 4.3 – Отображение файла Book.xml  в Internet Explorer

 

Содержание файла DomDemo _ Variable . htm:

 

<!-- Имя файла: DomDemo_Variable.htm -->

 

<HTML>

<HEAD>

<TITLE> Book Inventory </TITLE>

<SCRIPT LANGUAGE="JavaScript"

      FOR="window"

      EVENT="ONLOAD">

HTMLCode = ""; Document = dsoInventory.XMLDocument;       for (i=0; i < Document.documentElement.childNodes.length; i++) { HTMLCode += " <SPAN >Title: </SPAN> " + Document.documentElement.childNodes(i).childNodes(0).text       + "<BR>" + "<SPAN >Author: </SPAN>" + Document.documentElement.childNodes(i).childNodes(1).text       + "<BR>" + "<SPAN >Number of pages: </SPAN>" + Document.documentElement.childNodes(i).childNodes(2).text       + "<BR>" + "<SPAN >Price: </SPAN>" + Document.documentElement.childNodes(i).childNodes(3).text       + "<P>"; }

DisplayDIV.innerHTML=HTMLCode;        

</SCRIPT>

  

</HEAD>

<BODY>

<XML ID="dsoInventory" SRC="Inventory.xml"></XML> <H2> Book Inventory </H2>    <DIV ID="DisplayDIV"></DIV></BODY></HTML>

 

Сценарий в рассматриваемом примере использует свойство length  для определения количества элементов BOOK внутри корневого элемента. Свойство length является членом группового объекта NodeList, предоставляемого свойством childNodes узла корневого элемента. В сценарии имеется цикл for, который выполняется для каждого элемента BOOK и включает код для отображения каждого из этих элементов:

 

for (i=0; i < Document.documentElement.childNodes.length; i++) { /* код для отображения элемента BOOK… */ }

 

Поскольку количество элементов BOOK неизвестно, страница не может использовать фиксированный набор элементов SPAN в разделе BODY для отображения данных (как это делалось в предыдущем примере в файле Book . xml). Вместо этого для каждого элемента BOOK сценарий динамически генерирует весь блок HTML-разметки, необходимый для отображения элемента:

 

for (i=0; i &lt; Document.documentElement.childNodes.length; i++){HTMLCode += "&lt;SPAN &gt;Title: &lt;/SPAN&gt;"+ Document.documentElement.childNodes(i).childNodes(0).text+ "&lt;BR&gt;"+ "&lt;SPAN &gt;Author: &lt;/SPAN&gt;"+ Document.documentElement.childNodes(i).childNodes(1).text+ "&lt;BR&gt;"+ "&lt;SPAN &gt;Number of pages: "+ "</SPAN>"+ Document.documentElement.childNodes(i).childNodes(2).text+ "<BR>"+ "<SPAN >Price: </SPAN>"+ Document.documentElement.childNodes(i).childNodes(3).text+ "<P>";}

 

Сценарий хранит все эти блоки HTML-разметки в переменной HTMLCode. После цикла for, когда все блоки сгенерированы и загружены в HTMLCode, сценарий присваивает HTML-разметку свойству inner  HTML элемента DIV раздела BODY страницы (DIV ID="DisplayDIV"):

 

DisplayDIV.innerHTML=HTMLCode;

 

Элемент DIV затем сразу же получает HTML-разметку и отображает результаты, которые представлены на рисунке 4.3.

Чтобы убедиться, что страница работала независимо от количества элементов BOOK, которое содержится в XML-документе, вы можете отредактировать фрагмент данных на этой странице, чтобы он отображал документ Big.xml, который содержит в два раза больше элементов BOOK, чем документ Inventory.xml:

 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 247; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь