
- •Предназначение xml
- •Язык xml решает проблемы
- •Создание xml-документов
- •Отображение xml-документов
- •Некоторые базовые правила xml
- •Отображение xml-документа
- •Отобразите xml-документ без таблицы стиля
- •Основной критерий для валидного документа
- •Форма записи dtd
- •Создание dtd
- •Объявление типов элементов
- •Форма записи объявления типа элемента
- •Описание содержимого элемента
- •Задание дочернего содержимого элемента
- •Форма записи объявления списка атрибутов
- •Тип атрибута
- •Задание маркерного типа
- •Лабораторная работа 2 Пространства имен xml
- •Теоретическая часть Анатомия элемента
- •Вставка элементов html в xml-документы и использование пространства имен
- •Подготовка:
- •Ситуация:
- •Задание:
- •Примечание:
- •Решение:
- •Теория Вставка элементов html в xml-документы и использование пространства имен
- •Использование одного шаблона xsl
- •Предназначение xml
- •Язык xml решает проблемы
- •Создание xml-документов
- •Отображение xml-документов
- •Некоторые базовые правила xml
- •Отображение xml-документа
- •Отобразите xml-документ без таблицы стиля
- •Основной критерий для валидного документа
- •Форма записи dtd
- •Создание dtd
- •Объявление типов элементов
- •Форма записи объявления типа элемента
- •Описание содержимого элемента
- •Задание дочернего содержимого элемента
- •Форма записи объявления списка атрибутов
- •Тип атрибута
- •Задание маркерного типа
- •Лабораторная работа 2 Пространства имен xml
- •Теоретическая часть Анатомия элемента
- •Вставка элементов html в xml-документы и использование пространства имен
- •Подготовка:
- •Ситуация:
- •Задание:
- •Примечание:
- •Решение:
- •Теория Вставка элементов html в xml-документы и использование пространства имен
- •Использование одного шаблона xsl
- •Предназначение xml
- •Язык xml решает проблемы
- •Создание xml-документов
- •Отображение xml-документов
- •Некоторые базовые правила xml
- •Отображение xml-документа
- •Отобразите xml-документ без таблицы стиля
- •Основной критерий для валидного документа
- •Форма записи dtd
- •Создание dtd
- •Объявление типов элементов
- •Форма записи объявления типа элемента
- •Описание содержимого элемента
- •Задание дочернего содержимого элемента
- •Форма записи объявления списка атрибутов
- •Тип атрибута
- •Задание маркерного типа
- •Лабораторная работа 2 Пространства имен xml
- •Теоретическая часть Анатомия элемента
- •Вставка элементов html в xml-документы и использование пространства имен
- •Подготовка:
- •Ситуация:
- •Задание:
- •Примечание:
- •Решение:
- •Теория Вставка элементов html в xml-документы и использование пространства имен
- •Использование одного шаблона xsl
- •Лабораторная работа 5 Вывод документа xml в Internet Explorer с использованием dom xml
- •3.2. Реализация dom xml в Internet Explorer
- •3.3. Фундаментальные типы узлов dom для xml
- •3.3.1. Узлы NodeList и NamedNodeMap
- •3.3.2. Узел Node
- •3.3.3. Узел Document
- •3.3.4. Узел DocumentFragment
- •3.3.5. Узел Element
- •3.3.6. Узел Attr
- •3.3.7. Узел Comment
- •3.3.8. Узел Text
- •4. Порядок выполнения работы
- •Вариант 2-01
- •Вариант 2-02
- •Вариант 2-03
- •Вариант 2-04
- •Вариант 2-05
- •Вариант 2-06
- •Вариант 2-07
- •Вариант 2-08
- •Вариант 2-09
- •Вариант 2-10
- •Вариант 2-11
- •Вариант 2-12
- •Вариант 2-13
- •Вариант 2-14
- •Вариант 2-15
- •Вариант 2-16
- •Вариант 2-17
- •Вариант 2-18
- •Вариант 2-19
- •Вариант 2-20
- •Вариант 2-21
- •Вариант 2-22
- •Вариант 2-23
- •Вариант 2-24
- •Вариант 2-25
- •Вариант 2-26
- •Вариант 2-27
- •Вариант 2-28
- •Вариант 2-29
- •Вариант 2-30
- •5. Содержание отчета
- •6. Вопросы для самоконтроля
3.2. Реализация dom xml в Internet Explorer
Существует несколько реализаций DOM для XML. Так, в программе XML Spy реализована своя версия DOM. В то же время, в Internet Explorer, начиная с версии 5.0, включен встроенный анализатор XML. Анализатор доступен внутри сценариев на языках JavaScript и VBScript в документах HTML и поддерживает, помимо свойств и методов, определенных в спецификации DOM Level 2 Core Specification, некоторые собственные свойства и методы. Для того, чтобы в сценарии JavaScript документа HTML применить к элементам документа HTML свойства и методы DOM, необходимо загрузить документ XML из файла с помощью следующей последовательности операторов:
<script type="text/javascript">
…
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("имя-файла.xml");
// Операторы обработки документа
</script>
Анализируемый текст может быть загружен не только из текстового файла, но и из строки, например:
<script type="text/javascript">
…
var stringXML="содержимое документа XML";
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(stringXML);
// Операторы обработки документа
</script>
Вывести содержимое документа XML на экран Web-браузера можно с помощью оператора
document.write("<xmp>" + xmlDoc.xml + "</xmp>");
При попытке открыть документ XML или неправильном документе XML анализатор генерирует объект parseError.
Этот объект имеет следующие свойства:
errorCode – код ошибки в виде длинного целого числа (при нормальной завершении операции значение кода ошибки равно нулю);
reason – сообщение, поясняющее причину ошибки;
line – номер строки для ошибки в виде длинного целого числа;
linePos – позиция строки для ошибки в виде длинного целого числа;
srcText – содержимое строки, вызвавшей ошибку;
url – URL загруженного документа.
filePos – позиция файла ошибки.
Следует отметить, что объект parseError не является частью спецификации W3C DOM.
Пример вывода сообщения об ошибке при загрузке файла:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false";
xmlDoc.load("message1.xml");
var fileErrorCode = xmlDoc.parseError.errorCode;
if (fileErrorCode != 0)
{
document.write("<br />Error Code: ");
document.write(fileErrorCode);
document.write("<br />Error Reason: ");
document.write(xmlDoc.parseError.reason);
document.write("<br />Error Line: ");
document.write(xmlDoc.parseError.line);
}
3.3. Фундаментальные типы узлов dom для xml
3.3.1. Узлы NodeList и NamedNodeMap
В DOM определен узел типа NodeList для обработки упорядоченных списков узлов (например, дочерних узлов какого-либо узла). Для этого интерфейса определены свойство length (только для чтения), значением которого является количество узлов в списке и метод item(индекс), возвращающий объект типа Node с заданным индексом (индексация узлов начинается с нуля).
Для неупорядоченных списков узлов (например, атрибутов элемента) определен узел типа NamedNodeMap, также содержащий свойство length и следующие методы:
getNamedItem(имя) – возвращает атрибут с указанным именем (объект типа Node);
item(индекс) – возвращает атрибут с указанным индексом (объект типа Node);
removeNamedItem(имя) – удаляет атрибут с указанным именем (возвращает удаляемый объект типа Node);
setNamedItem(узел) – добавляет атрибут с объектом типа Node (возвращает добавляемый объект типа Node).