Опубликован: 08.08.2007 | Доступ: свободный | Студентов: 1666 / 173 | Оценка: 3.86 / 3.76 | Длительность: 11:46:00
Специальности: Программист
Лекция 7:

Объектная модель документа

< Лекция 6 || Лекция 7: 12 || Лекция 8 >

DOM и базы данных

Язык XML предоставляет идеальный механизм обмена информацией между различными базами данных. По своей природе базы данных являются закрытыми - в каждой базе используется своя структура имен элементов, свой уровень нормализации и даже свои методы описания перечисляемой информации. С помощью модели DOM можно упростить передачу информации между различными базами данных.

Применение DOM для создания комплексных документов XML

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

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

Пример использования модели DOM.

Рассмотрим простейший пример обработки XML документа с использованием DOM модели.

Рассмотрим следующий XML документ:

<example type="listing">
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type='text/xsl' href='1.xsl'?>
<book>
  <title>Языки информационного обмена </title>
  <type> Лекции </type>
  <file>Лекции.doc</file>
</book>

Для отображения данного документа можно использовать следующий простой рекурсивный цикл.

<html>
<!--  Эта программа загружает XML-документ в браузер IE5 и проходит все узлы, используя рекурсивную функцию, применяя к ним необходимый стиль оформления --> 
<!--  Загружаем XML-документ-->
	<XML ID="xdoc" SRC="documents.xml"></XML>
	<SCRIPT>
//Создаем объект документа 
var myDoc=xdoc;
//Просматриваем документ применяя к каждому тегу свой стиль оформления --> 
x=getchildren(myDoc);
//***************Начало рекурсивной функции*************
function getchildren(node)
{
   var x=node.childNodes;
   var z=x.length;
   if (z!=0)
   {
      for(var i=0;i<z;i++)
      {
         if (x(i).nodeType==3)
        {
          document.write(x(i).nodeValue);
          document.write();
          getchildren(x(i));
        }
        else if (x(i).nodeName=="title")
        {
           document.write("<DIV STYLE='font-size:20pt;color:red;'>");
           getchildren(x(i));
           document.write("</DIV>");
           document.write("</br>");
        }
        else if (x(i).nodeName=="type")
       {
           document.write("<DIV STYLE='font-size:14pt;color:black;'>");
           getchildren(x(i));
           document.write("</DIV>");
           document.write("</br>");
       }
       else if (x(i).nodeName=="file")
       {
           document.write("<DIV STYLE='font-size:16pt;'>");
           document.write("<a href=");
           getchildren(x(i));
           document.write(">");
           document.write("Файл");
           document.write("</a>");
           document.write("</DIV>");
           document.write("</br>");
       }
       else
       {
           getchildren(x(i));
       }
     }
   }
}
</SCRIPT>
</html>
Листинг 6.1.

Функция getchildren кода принимает в качестве параметра узел, создает список всех дочерних узлов, проходит по этому списку, проверяя, имеет ли каждый дочерний узел свои собственные дочерние узлы, и если имеет, то вызывает сама себя. При этом к тегам с именами title, type, file применяются соответствующие стили.

Применив эту функцию к нашему XML- документу мы получим на экране следующий результат:


< Лекция 6 || Лекция 7: 12 || Лекция 8 >