Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso icon

Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso




Скачати 257.34 Kb.
НазваЛекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso
Дата25.10.2012
Розмір257.34 Kb.
ТипЛекция
1. /XML-Лекция 1. концепция Семантического Веб.doc
2. /XML-Лекция 10. XSL.doc
3. /XML-Лекция 11. Сортировка и фильтрация.doc
4. /XML-Лекция 12. Другие способы отображения XML документов.docx
5. /XML-Лекция 13. XLINK.doc
6. /XML-Лекция 14_RDF.doc
7. /XML-Лекция 15_OWL.doc
8. /XML-Лекция 1_Презентация.docx
9. /XML-Лекция 2. Основы XML.doc
10. /XML-Лекция 3. Создание XML-документов.doc
11. /XML-Лекция 4. Обработка XML в C#.docx
12. /XML-Лекция 5. Создание XML-документов в C#.docx
13. /XML-Лекция 6. Отображение XML-документов в помощью CSS.doc
14. /XML-Лекция 7. Атрибуты и пространства имен.doc
15. /XML-Лекция 8. Определение типа документа.doc
16. /XML-Лекция 9. Схемы XSD.doc
“семантический web и языки информационного обмена”
Тема Обработка документов xml лекция 10. Способы преобразования документов xml план
Тема Обработка документов xml лекция 11. Фильтрация и сортировка данных xml план
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso
Тема Связь xml документов Лекция 12. Создание ссылок на языке xlink
Стандарты rdf пример практического применения rdf
Языки онтологий Создание онтологий в редакторе Protégé-2000
Тема концепция семантического web
Тема Язык xml лекция Введение
Тема Основы xml лекция Создание и отображение xml-документа
Лекция Работа с xml в. Net план Классы для работы с xml. Net чтение и запись потоков данных Xml Использование класса XmlReader Методы чтения данных
Лекция Создание xml-документов в. Net план Использование класса XmlWriter запись потоков данных Xml Использование dom в. Net Чтение xml-документа с помощью XmlNodeList
Тема Основы xml лекция Применение css для отображения xml-документа
Тема Основы xml лекция 7
Тема xml-схемы – описание структуры документа лекция Определение типа документа (dtd document Type Definition)
Тема xml-схемы – описание структуры документа лекция Описание схемы документа средствами xsd (xml schema Definition language)

Лекция 12. Другие способы отображения XML документов

План

1. Связывание XML данных с HTML страницей с помощью DSO

2. Отображение XML-документов с использованием сценариев объектной модели документа (DOM)

3. Проверка валидности XML-документов


1. Связывание XML данных с HTMLстраницей с помощью DSO

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

Первый метод (работает толко в IE) использует сценарии DSO (Data Source Object) и пригоден для отображения только симметрично структурированных XML-документов, например, как набор записей и полей.

Процесс связывания состоит из двух этапов:

Этап 1. Установка связи XML-документа с HTML-страницей, на которой вы хотите отобразить данные XML. Этот шаг обычно реализуется включением HTML-элемента с именем XML в HTML-страницу. Например, следующий элемент на HTML-странице связывает XML-документ Book.xml со страницей:



Этап 2. Сцепление HTML-элементов с XML-элементами. Когда вы сцепляете HTML-элементы с XML-элементом, HTML-элемент автоматически отображает содержимое XML-элемента. Например, следующий элемент SPAN на HTML-странице сцеплен с элементом AUTHOR связанного XML-документа:



Например: код html-страницы, на которой создается фрагмент XML данных:






Book Description












Тег XML здесь не является элементом языка XML.


Текст XML-документа содержится в файле Book.xml:





The Adventures of Huckleberry Finn

Mark Twain

mass market paperback


298

$5.49





Атрибут ID содержит уникальный идентификатор, который используется для доступа к XML-документу с HTML-страницы.

Атрибут SRC указывает, что файл Book.xml находится в той же папке, что и HTML-страница (можно указывать полный URL):




Этап 2. Сцепление HTML-элементов с XML-элементами


Вы можете осуществлять сцепление HTML-элементов с XML-элементами двумя основными способами.

  • Табличное сцепление, что означает сцепление HTML-элемента TABLE с данными XML, так что в таблице автоматически отображается весь набор записей, принадлежащих XML-документу.

  • Сцепление по отдельным записям, что означает сцепление не табличных элементов HTML (например, элементов SPAN ) с XML-элементами таким образом, что за один раз отображается только одна запись.


Имя файла: Inventory Table.htm -->





Book Inventory







Book Inventory

































Title Author Binding Pages Price

>







2. Отображение XML-документов с использованием сценариев объектной модели документа (DOM)


Объектная модель (DOM) XML документа состоит из группы программных объектов, представляющих различные компоненты XML-документа. Свойства и методы этих объектов позволяют вам использовать сценарии для отображения XML-документа с HTML-страницы. DOM хранит данные в иерархической, древообразной структуре, отражающей иерархическую структуру XML-документа

Для доступа к XML-документу с использованием DOM, нужно связать XML-документ с HTML-страницей, а затем с помощью сценария использовать API DOM для доступа к элементам XML.

2.1. Структура DOM

В DOM программные объекты, представляющие XML-документ, называются узлами. Когда Internet Explorer обрабатывает связанный XML-документ и сохраняет его в DOM, он создает узел для каждого из основных компонентов XML-документов, таких как элементы, атрибуты и инструкции по обработке.

DOM использует различные типы узлов для представления различных типов компонентов XML. Например, элемент хранится в узле Element, а атрибут – в узле Attribute. В таблице 1 представлены наиболее важные типы узлов.

Таблица 1. Основные типы узлов, используемых для представления различных компонентов XML-документа. Каждый тип узла представляет собой программный объект, который обеспечивает свойства и методы для доступа к соответствующему компоненту

Тип узла

Компоненты XML-документа, представляемые узлом

Имя узла (свойство nodeName объекта)

Значение узла (свойство nodeValue объекта)

Document

Корневой узел иерархии документа (т. е. он представляет весь XML-документ)

#document

null

Element

Элемент

Имя типа элемента (например, BOOK )

null (любые символьные данные, содержащиеся в элементе, находятся в одном или нескольких дочерних узлах Text)

Text

Текст, принадлежащий элементу, атрибуту или примитиву, которые представлены родителем этого узла

#text

Текст родительского XML-компонента

Attribute

Атрибут (а также другие пары имя-значение, такие как имя и значение в инструкции по обработке)

Имя атрибута (например, Binding )

Значение атрибута (например, hardcover )

Processing-Instruction

Инструкция по обработке (объявление XML или пользовательская инструкция по обработке)

Предназначение инструкции по обработке (например, xml )

Полное содержимое инструкции по обработке, за исключением предназначения (например, version="1.0" )

Comment

Комментарий

#comment

Весь текст внутри ограничителей комментария

CDATASection

Раздел CDATA

#cdata-section

Содержимое раздела CDATA

DocumentType

Объявление типа документа

Имя корневого элемента, содержащееся в объявлении DOCTYPE (например, INVENTORY )

null

Entity

Объявление примитива в DTD

Имя примитива (например, image )

null (значение примитива содержится в дочернем узле Text)

Notation

Объявление нотации в DTD

Имя нотации (например, BMP)

null (системный литерал нотации содержится в дочернем узле Attribute с именем SYSTEM )


Каждый узел, как программный объект, имеет свойства и методы, которые позволяют осуществлять доступ, отображать, обрабатывать и получать информацию о соответствующем компоненте XML. Например, свойства nodeName и nodeValue (см. таблицу 1) дают имя компонента и его значение.

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

Таблица 2. Некоторые полезные свойства, поддерживаемые всеми типами узлов

Свойство

Описание

Пример

attributes

Множество NamedNodeMap всех дочерних узлов-атрибутов данного узла

AttributeNode = Element.attributes.getNamedItem("Binding");

childNodes

Множество NodeList всех дочерних узлов, не являющихся атрибутами, данного узла

FirstNode = Element.childNodes(0);

dataType

Тип данных этого узла (применительно только к определенным типам узлов Attribute )

AttributeType = Attribute.dataType;

firstChild

Первый дочерний узел данного узла, не являющийся атрибутом

FirstChildNode = Element.firstChild;

lastChild

Последний дочерний узел данного узла, не являющийся атрибутом

LastChildNode = Element.lastChild;

nextSibling

Следующий узел на том же уровне данного узла

NextElement = Element.nextSibling;

nodeName

Имя данного узла

ElementName = Element.nodeName;

nodeType

Цифровой код, указывающий на тип данного узла

NodeTupeCode = Node.nodeType;

nodeTypeString

Строка, содержащая тип данного узла, строчными буквами (например, "element" или "attribute")

NodeTypeString = Node.nodeTypeString;

nodeValue

Значение данного узла (или null, если он не содержит значения)

AttributeValue = Attribute.nodeValue;

ownerDocument

Корневой узел Document документа, содержащего данный узел

Document = Node.ownerDocument;

parentNode

Узел, для которого данный узел является дочерним (не действует для узла Attribute )

ParentElement = Element.parentNode;

previousSibling

Предыдущий узел на том же уровне данного узла

PreviousElement = Element.previousSibling;

text

Все текстовое содержимое данного узла и всех подчиненных узлов Element

AllCharacterData = Element.text;

xml

Все содержимое XML данного узла и всех его подчиненных узлов

XMLContent = Element.xml;



Помимо общих свойств и методов, каждому типу узла присущи дополнительные свойства и методы, разработанные для работы с определенным XML-компонентом, который представляет узел. Например, узел Document имеет свойство parseError, которое содержит информацию о любой ошибке, возникающей в процессе обработки документа. Данное свойство присуще только узлу Document.

Каждый узел обладает набором свойств, которые позволяют перемещаться в иерархии узла – т. е. получать доступ к другим узлам от текущего узла.

Узел Document является шлюзом к XML-документу. Вы можете использовать его для доступа к другим узлам.


Пример 1: Отобразим следующий документ, содержащий 1 элемент:




Имя файла: Book.xml -->



The Adventures of Huckleberry Finn

Mark Twain

mass market paperback


298

$5.49





XML-документ связан со страницей через следующий фрагмент данных:



Document = dsoBook.XMLDocument;

title.innerText= Document.documentElement.childNodes(0).text;

author.innerText= Document.documentElement.childNodes(1).text;

binding.innerText=Document.documentElement.childNodes(2).text;

pages.innerText= Document.documentElement.childNodes(3).text;

price.innerText=Document.documentElement.childNodes(4).text;









Book Description



Title:




Author:




Binding:




Number of pages:




Price:








Страница отображает XML-документ посредством следующего блока кода сценария, который содержится в элементе HEAD страницы:




Установки атрибутов FOR="window" и EVENT="ONLOAD" предписывают браузеру выполнять код из элемента SCRIPT при первом открытии окна страницы до того, как будет отображено содержимое страницы.

Сценарий первым делом получает узел Document, который представляет весь документ и формирует корневой элемент иерархии узлов DOM. Он делает это через член XMLDocument DSO:

Document = dsoBook.XMLDocument;


Далее сценарий получает доступ и отображает символьные данные, содержащиеся в каждом из дочерних элементов корневого элемента ( TITLE, AUTHOR, BINDING, PAGES и PRICE ). Например, он отображает содержимое первого дочернего элемента ( TITLE ) следующим образом:

title.innerText= Document.documentElement.childNodes(0).text;

Вот пояснение выражения, стоящего справа от знака равенства.

  • Document содержит узел Document в основании (корне) иерархии узлов DOM.

  • documentElement представляет собой свойство узла Document. Оно содержит узел Element, представляющий корневой элемент XML-документа – в нашем примере, BOOK.

Примечание. Свойство documentElement является одним из специфических для конкретного узла свойств, предоставляемых узлом типа Document.

  • childNodes является свойством узла Element для корневого элемента. Оно содержит множество всех дочерних узлов корневого узла Element, не являющихся атрибутами. В нашем примере оно содержит узлы Element для пяти дочерних XML-элементов: TITLE, AUTHOR, BINDING, PAGES и PRICE. Выражение childNodes(0) ссылается на первый из этих дочерних узлов (а именно, на элемент TITLE ).

  • text является свойством узла, возвращаемого выражением childNodes(0). Оно предоставляет весь текст, содержащийся в этом узле, а также текст, принадлежащий любому подчиненному узлу Element. В нашем примере TITLE не имеет подчиненных элементов, поэтому свойство text содержит только собственно текст элемента TITLE, "The Adventures of Huckleberry Finn".

Примечание. Свойства childNodes и text относятся к общим свойствам узлов (см. таблицу 2).

Таблица 3. Полезные свойства и методы, предоставляемые узлами Document. Общие свойства приведены в таблице 2

Свойство узла Document

Описание

Пример

doctype

Узел DocumentType, представляющий объявление типа документа

DocumentType = Document.doctype;

documentElement

Узел Element, представляющий корневой элемент

RootElement = Document.documentElement;

ondataavailable

Если вы присвоите этому свойству имя функции, которую вы написали, функция будет вызываться в момент доступности данных XML

Document.ondataavailable = MyDataAvailableHandler; (Функция MyDataAvailableHandler будет вызываться, когда станут доступными данные XML)

onreadystatechange

Если вы присвоите этому свойству имя функции, которую вы написали, функция будет вызываться всякий раз, когда изменяется свойство readyState узла Document. (Об этом свойстве см. далее в этой таблице)

Document.onreadystatechange = MyReadyStateHandler; (Функция MyReadyStateHandler будет вызываться всякий раз при изменении свойства readyState узла Document )

parseError

Объект, который содержит информацию о любых ошибках, которые возникают в процессе обработки документа

ErrorCode = Document.parseError.errorCode;

readyState

Текущий статус загрузки и обработки XML-документа. Может принимать одно из следующих числовых значений:

0: не инициализирован

1: загружается

2: загружен

3: интерактивный режим

4: завершение

if (Document.readyState == 4) /* обработка данных… */

url

URL XML-документа

URL = Document.url;

getElementsByTagName(type-name)

Возвращает множество NodeList всех элементов в документе, которые имеют заданное имя типа. Если указано "*", возвращает все элементы

AuthorElementCollection = Document.getElementsByTagName("AUTHOR");

nodeFromID(id-value)

Возвращает узел, представляющий элемент, чей атрибут типа ID имеет указанное значение. (Подробнее об атрибутах ID см. раздел "Задание маркерного типа" в лекции 5)

Element = Document.nodeFromID("S021");



Символьные данные элемента TITLE, которые получены из выражения справа от знака равенства ("The Adventures of Huckleberry Finn") присваиваются свойству innerText HTML-элемента SPAN, имеющему идентификатор title:

title.innerText=

Document.documentElement.childNodes(0).text;

Этот элемент SPAN определен внутри элемента BODY HTML-страницы следующим образом:



Присвоение символьных данных свойству innerText элемента SPAN приводит к тому, что элемент SPAN отображает текст с использованием формата, определенного в его начальном теге ( font-weight:bold ).

Символьные данные элемента TITLE, которые получены из выражения справа от знака равенства ("The Adventures of Huckleberry Finn") присваиваются свойству innerText HTML-элемента SPAN, имеющему идентификатор title:

title.innerText= Document.documentElement.childNodes(0).text;

Этот элемент SPAN определен внутри элемента BODY HTML-страницы следующим образом:



Присвоение символьных данных свойству innerText элемента SPAN приводит к тому, что элемент SPAN отображает текст с использованием формата, определенного в его начальном теге ( font-weight:bold ).

Свойство innerText устанавливает или получает текстовое содержимое элемента.

Использование объекта NodeList

Свойство childNodes узла содержит набор дочерних узлов текущего узла, не являющихся атрибутами. (Доступ к дочерним узлам-атрибутам осуществляется через свойство attributes узла.) Определенный тип набора, который содержит свойство childNodes, носит название объекта NodeList.

Чтобы извлечь определенный дочерний узел из объекта NodeList, вы можете обратиться к его методу item, указав при этом индекс дочернего узла, который вы хотите получить (индексы отсчитываются с нуля). Например, обращение к следующему методу позволяет получить первый дочерний узел, принадлежащий узлу Element:

FirstNode = Element.childNodes.item(0);

Однако, поскольку item является методом по умолчанию объекта NodeList, вы можете опустить его, как это делалось в предыдущих примерах в этой лекции:

FirstNode = Element.childNodes(0);

В таблице 4 представлены свойства и методы, предоставляемые объектом NodeList.

Таблица 4. Свойство и методы, поддерживаемые групповым объектом NodeList. Доступ к объекту NodeList осуществляется через свойство childNodes узла

Свойство NodeList

Описание

Пример

length

Количество узлов, содержащихся в наборе

NodeCount = Element.childNodes.length;

Метод NodeList

Описание

Пример

item (индекс, отсчитываемый с 0) (метод по умолчанию)

Возвращает узел в соответствии с заданным вами индексом, при этом 0 соответствует первому узлу

SecondChild = Element.childNodes.item(1); или SecondChild = Element.childNodes(1);

reset()

Устанавливает внутренний указатель на позицию перед первым узлом в наборе, чтобы последующий вызов nextNode возвращал первый узел

Element.childNodes.reset();

nextNode()

Возвращает следующий узел в наборе в соответствии с позицией внутреннего указателя

Element.childNodes.reset(); FirstNode = Element.childNodes.nextNode();




http://www.intuit.ru/img/empty.gif


2.3. Извлечение символьных данных элемента

В сценарии, представленном в Листинге 1, свойство text каждого из дочерних элементов ( TITLE, AUTHOR, BINDING, PAGES и PRICE ) используется для получения символьных данных элемента. Например, следующий оператор используется для извлечения символьных данных элемента TITLE:

title.innerText= Document.documentElement.childNodes(0).text;

Свойство text показывает содержимое элемента в текущем узле, плюс текстовое содержимое любого подчиненного элемента. Оно хорошо подходит для извлечения символьных данных элемента в том случае, если элемент не имеет дочерних элементов (например, элемент TITLE ). Однако если элемент содержит один или более дочерних элементов помимо символьных данных, как в приведенном ниже примере, свойство text возвращает весь текст (в данном случае, "Moby-Dick Or, the Whale").

Moby-Dick<br /> <br /> <subtitle>Or, the Whale</subtitle><br /> <br />

Чтобы получить только символьные данные элемента TITLE, вам потребуется осуществить доступ к дочернему узлу Text.

Если символьные данные элемента смешаны с дочерними элементами, комментариями или инструкциями по обработке, каждый отдельный блок символьных данных представляется собственным дочерним узлом Text. Например, приведенный ниже элемент ITEM имеет три дочерних узла, расположенных в следующем порядке: узел Text, представляющий первый блок символьных данных; узел ELEMENT, представляющий дочерний элемент SUB-ITEM ; еще один узел Text, представляющий второй блок символьных данных:



блок символьных данных № 1 /* узел Text */

текст подчиненного элемента

блок символьных данных № 2 /* узел Text */






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

Если документ имеет неизвестное число элементов, использование DOM для отображения документа усложняется.

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


В Листинге 2 представлена HTML-страница, которая использует DOM для отображения документа Inventory.xml вне зависимости от того, сколько элементов BOOK в нем содержится.








Book Inventory









Book Inventory









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

for (i=0;

i < Document.documentElement.childNodes.length;

i++)

{

/* код для отображения элемента BOOK… */

}

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

for (i=0;

i < Document.documentElement.childNodes.length;

i++)

{

HTMLCode +=

"Title: "

+ Document.documentElement.childNodes(i).childNodes(0).text

+ "
"

+ "Author: "

+ Document.documentElement.childNodes(i).childNodes(1).text

+ "
"

+ "Binding: "

+ Document.documentElement.childNodes(i).childNodes(2).text

+ "
"

+ "Number of pages: "

+ "
"

+ Document.documentElement.childNodes(i).childNodes(3).text

+ "
"

+ "Price: "

+ Document.documentElement.childNodes(i).childNodes(4).text

+ "
";

}


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

DisplayDIV.innerHTML=HTMLCode;

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

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




2.5. Использование других способов доступа к элементам

В рассмотренных примерах сценариев доступ к узлам Element в иерархической структуре осуществлялся с использованием свойств childNodes или firstChild узла. При этом происходил переход от одного узла к другому. Аналогичным образом вы можете применять свойства узла lastChild, previousSibling, nextSibling и parentNode.

Примечание. Свойства childNodes, firstChild и lastChild дают возможность доступа только к дочерним узлам, которые не являются атрибутами, в то время как свойства previousSibling и nextSibling могут быть использованы для доступа к вершинному узлу любого типа.


Другим способом доступа к XML-элементам является использование свойства getElementsByTagName, которое позволяет извлечь все элементы, имеющие определенное имя типа (например, TITLE ). Этот метод может использоваться для узла Document, а также для узла Element. Если вы обращаетесь к методу для узла Document, он возвращает набор узлов Element для всех элементов в документе, обладающих заданным именем типа. Например, следующий оператор позволяет получить группу узлов для всех элементов в документе, обладающих именем BOOK:

NodeList = Document.getElementsByTagName("BOOK");

Если вы обращаетесь к методу getElementsByTagName для узла Element, как в следующем примере, он возвращает набор узлов для всех соответствующих элементов, которые являются подчиненными для узла Element:

NodeList = Element.getElementsByTagName("AUTHOR");

Подсказка. Если в качестве параметра метода getElementsByTagName вы укажете "*", то метод вернет набор узлов для всех элементов (всех элементов в документе, если вы вызываете метод для объекта Document, и всех подчиненных элементов, если вы вызываете метод для объекта Element ).



Таблица 6. Полезные методы, поддерживаемые узлами Element. Для узлов Element вы также можете применять общие свойства узлов, приведенные в таблице 2

Метод узла Element

Описание

Пример

getAttribute(имя-атр)

Возвращает значение атрибута элемента с заданным именем

AttValue = Element.getAttribute("InStock");

getAttributeNode(имя-атр)

Возвращает узел Attribute, представляющий атрибут элемента с заданным именем

Attribute = Element.getAttributeNode("InStock");

getElementsByTagName(имя-типа)

Возвращает набор NodeList узлов Element для всех подчиненных элементов элемента с заданным именем. Если указано "*", возвращает узлы для всех подчиненных элементов

AuthorElementCollection = Element.getElementsByTagName("AUTHOR");



Метод getElementsByTagName предоставляет узлы Element в виде группового объекта NodeList.

Например, следующий код отображает (в окне предупреждения) текстовое содержимое всех узлов Element в объекте NodeList, возвращенное методом getElementsByTagName:

for (i=0; i < NodeList.length; ++i)

alert(NodeList(i).text);

HTML-страница из листинга 3 демонстрирует использование метода getElementsByTagName для узла Document. Страница отображает поле ввода INPUT типа Text, которое дает вам возможность ввести имя элемента. Когда вы щелкаете мышью на кнопке Show Elements, вызывается функция ShowElements сценария, которая использует метод getElementsByTagName для узла Document, чтобы найти и отобразить XML-разметку для всех элементов в документе, которые носят введенное вами имя элемента (если они имеются). Заметим, что сценарий использует свойство xml каждого из узлов Element для отображения содержимого XML-разметки элемента. Страница изначально связана с документом Inventory.xml, хотя вы можете отредактировать фрагмент данных, чтобы отобразить элементы из другого XML-документа.

Листинг 3. GetElements.htm

GetElements.htm -->





Element Finder










Find Elements by Element Name



Element name:  












Ниже показано как Internet Explorer отобразит страницу после того, как вы ввели в поле ввода INPUT имя AUTHOR и щелкнули мышью на кнопке Show Elements.

http://www.intuit.ru/department/internet/xml/9/09_04.gif


3. Проверка валидности XML-документа

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

Как использовать страницу проверки на валидность?

В качестве примера проверим на валидность файл Inventoty.xml.

  1. В вашем текстовом редакторе откройте страницу проверки на валидность Validity Test.htm. (См. Листинг 4 далее.)

  2. Отредактируйте фрагмент данных в разделе BODY страницы, чтобы атрибуту SRC было присвоено URL XML-документа, который вы хотите подвергнуть тестированию. Например, чтобы протестировать документ Inventory.xml, вы должны отредактировать фрагмент данных следующим образом:



  1. Воспользуйтесь командой Save (Сохранить) текстового редактора, чтобы сохранить модифицированную страницу.

  2. Откройте страницу в Internet Explorer.







Validity Tester














Страница отобразит окно сообщения, содержащее информацию о первой ошибке, обнаруженной XML-процессором Internet Explorer.

На следующем рисунке выведены сообщения об отсутствии ошибок.

http://www.intuit.ru/department/internet/xml/9/09_09.gif


А на рисунке ниже – при наличии ошибки.

http://www.intuit.ru/department/internet/xml/9/09_10.gif




Как работает страница проверки на валидность

Для HTML-страниц, с которыми вы работали в этой лекции, были приняты два допущения:

  • связанный XML-документ не имеет ошибок. Если это не так, XML-данные не будут доступны;

  • браузер закончил загрузку и обработку XML-документа к тому времени, когда сценарий предпринимает попытку обратиться к данным. Если это предположение не соответствует действительности, часть данных XML будет недоступна.

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

HTML-страница содержит сценарий, который выполняется, когда браузер первый раз открывает окно страницы:



Сначала сценарий получает узел Document:

Document = dsoTest.XMLDocument;

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

if (Document.readyState == 4)

DisplayError();

else

Document.onreadystatechange = DisplayError;

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

function DisplayError()

{

if (Document.readyState != 4)

return;

message = "parseError.errorCode: "

+ Document.parseError.errorCode + "\n"

+ "parseError.filepos: "

+ Document.parseError.filepos + "\n"

+ "parseError.line: " + Document.parseError.line

+ "\n"

+ "parseError.linepos: "

+ Document.parseError.linepos + "\n"

+ "parseError.reason: "

+ Document.parseError.reason + "\n"

+ "parseError.srcText: "

+ Document.parseError.srcText + "\n"

+ "parseError.url: " + Document.parseError.url;

alert(message);

}

Если документ не содержит ошибок, значение parseError.errorCode устанавливается в нуль, а другие свойства также имеют нулевые или пустые значения. Если же в документе имеется ошибка, свойство parseError.errorCode содержит числовой код ошибки, а другие свойства описывают эту ошибку.


Литература к лекции 12.

Основы XML http://www.intuit.ru/department/internet/xml/9

Схожі:

Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconІнформації про предметну область. Вивчаються основні технології, пов’язані з аналізом І трансформацією xml-документів (xslt та xpath, sax, dom та TrAX), описом структури документів (dtd та xmlschema). Розглядаються також специфікації xlink та xpointer
Вивчення курсу передбачає виконання практичного Інтернет-проекту, основними цілями якого є розробка інформаційної системи з підтримкою...
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconПрактическая работа №11. Тема: Автоматизация создания однотипных документов с разными реквизитами. Слияние документов Word и Excel
Цель: Научиться создавать и редактировать сложные связанные документы, получить практические навыки в формировании комплектов однотипных...
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconІнформаційна картка про інноваційну розробку
Назва розробки. Інтегрована система підтримки процесу дистанційного навчання xml education system framework (xesf)
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconСемантичний Веб І мови інформаційного обміну
Підготувати документ xml для опису свого завдання. Документ повинен мати не менше трьох рівнів вкладеності І атрибути
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconДокументи
1. /Лекция 1. Основы РС.docx
2. /Лекция...

Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconРазработка Web-сервиса на основе php и Mysql
На платформе Microsoft. Net или J2ee web-сервис представляет собой развитый сервер на основе wsdl (Web Service Definition Language),...
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconЛекція 3 "Економічна інформатика" Тема 3-а. Системне забезпечення інформаційних процесів Системное обеспечение информационных процессов, это программно-аппаратные комплексы, с помощью которых автоматизируется процесс сбора, передачи и обработки данных
Специализированные компьютеры, например – серверы, машины баз данных, коммуникаторы
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconЛекція 3 "Економічна інформатика" Тема Системне забезпечення інформаційних процесів Системное обеспечение информационных процессов, это программно-аппаратные комплексы, с помощью которых автоматизируется процесс сбора, передачи и обработки данных
Специализированные компьютеры, например – серверы, машины баз данных, коммуникаторы
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconУправление отчетностью предприятий с помощью программных средств, основанных на различных типах реляционных баз данных прядко Е. В
Управление отчетностью предприятий с помощью программных средств, основанных на различных типах реляционных баз данных
Лекция 12. Другие способы отображения xml документов План Связывание xml данных с html страницей с помощью dso iconВведение
...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи