Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пономарев В. А..docx
Скачиваний:
18
Добавлен:
01.04.2015
Размер:
561.06 Кб
Скачать

Проверка на наличие ошибок xml

Когда открывается XML-документ (автономный или с таблицей стилей) непосредственно в Internet Explorer, браузер проверяет, является ли документ корректно сформированным. Если он обнаруживает ошибки, то приостанавливает отображение документа и выводит сообщение о фатальной ошибке, которое помогает выявить ошибку и устранить ее.

Если XML-документ открывается через фрагмент данных на HTML-странице, Internet Explorer проверяет, является ли документ корректно сформированным, а также – если документ включает объявление типа документа – является ли он валидным. Однако в том случае, если документ содержит ошибку, Internet Explorer просто не будет отображать данные XML, не выводя сообщение об ошибке.

Cцепление html-элементов с xml-элементами

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

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

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

§ 2.3. Использование табличного сцепления данных

Самый простой способ отобразить XML-документ, который состоит из группы записей, – это сцепить HTML-элемент TABLE с данными XML таким образом, чтобы в таблице автоматически отображались сразу все записи (или одна страница записей за раз, если установлен режим постраничного отображения). При таком подходе Internet Explorer берет на себя большую часть работы; не нужно писать сценарии или вызывать методы (функции). (Одно исключение состоит в том, что если выбран режим пролистывания, потребуется включить несколько вызовов простых функций, о чем пойдет речь далее в этой работе.)

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

Использование одной html-таблицы для отображения простого набора записей

Можно использовать один HTML-элемент TABLE для отображения XML-документа, в котором данные организованы в виде простого набора записей – т.е. XML-документа, составленного следующим образом:

  • корневой элемент содержит множество элементов типа запись (record);

  • каждый элемент типа запись содержит одинаковый набор элементов типа поле (field);

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

Примером такого типа XML-документов является документ game.xml, который использовался в предыдущих главах. В этом документе корневой элемент (GAMES) содержит набор из восьми элементов-записей (элементы GAME), и каждый из элементов-записей имеет одинаковый набор элементов-полей, которые содержат только символьные данные (NAME, AUTHOR, GENRE, YEAR, PLATFORM).

<?xml version="1.0"?>

<GAMES>

<GAME>

<NAME>Max Payne</NAME>

<AUTHOR>Remedy</AUTHOR>

<GENRE>TPS</GENRE>

<YEAR>2001</YEAR>

<PLATFORM>PC, PS2, XBox</PLATFORM>

</GAME>

<GAME>

<NAME>GTA Vice City</NAME>

<AUTHOR>Rockstar</AUTHOR>

<GENRE>TPS</GENRE>

<YEAR>2003</YEAR>

<PLATFORM>PC, PS2</PLATFORM>

</GAME>

<GAME>

<NAME>Splinter Cell</NAME>

<AUTHOR>Ubisoft</AUTHOR>

<GENRE>Stealth</GENRE>

<YEAR>2003</YEAR>

<PLATFORM>PC, XBox</PLATFORM>

</GAME>

<GAME>

<NAME>Far Cry</NAME>

<AUTHOR>Crytek</AUTHOR>

<GENRE>FPS</GENRE>

<YEAR>2004</YEAR>

<PLATFORM>PC</PLATFORM>

</GAME>

<GAME>

<NAME>Half-Life 2</NAME>

<AUTHOR>Valve</AUTHOR>

<GENRE>FPS</GENRE>

<YEAR>2004</YEAR>

<PLATFORM>PC</PLATFORM>

</GAME>

<GAME>

<NAME>World of Warcraft</NAME>

<AUTHOR>Blizzard</AUTHOR>

<GENRE>MMORPG</GENRE>

<YEAR>2004</YEAR>

<PLATFORM>PC</PLATFORM>

</GAME>

<GAME>

<NAME>Gears of War</NAME>

<AUTHOR>Epic Games</AUTHOR>

<GENRE>TPS</GENRE>

<YEAR>2007</YEAR>

<PLATFORM>PC, XBox 360</PLATFORM>

</GAME>

<GAME>

<NAME>Assassin's creed</NAME>

<AUTHOR>Ubisoft</AUTHOR>

<GENRE>Action</GENRE>

<YEAR>2008</YEAR>

<PLATFORM>PC, XBox 360, PS3</PLATFORM>

</GAME>

</GAMES>

XML 3. games table.xml

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

<HTML>

<HEAD>

<TITLE>Сортировка игр</TITLE>

</HEAD>

<BODY>

<XML ID="dsogames" SRC="games table.xml"></XML>

<H2>Игры</H2>

<TABLE ID="gamestable" DATASRC="#dsogames" BORDER="1" CELLPADDING="5">

<THEAD>

<TH>Игра</TH>

<TH>Разработчик</TH>

<TH>Жанр</TH>

<TH>Год</TH>

<TH>Платформа</TH>

</THEAD>

<TR ALIGN="center">

<TD><SPAN DATAFLD="NAME"

STYLE="font-style:italic"></SPAN></TD>

<TD><SPAN DATAFLD="AUTHOR"></SPAN></TD>

<TD><SPAN DATAFLD="GENRE"></SPAN></TD>

<TD><SPAN DATAFLD="YEAR"></SPAN></TD>

<TD><SPAN DATAFLD="PLATFORM"></SPAN></TD>

</TR>

</TABLE>

</BODY>

</HTML>

HTML 3. games table.html

XML-документ из XML 1 связан с HTML-страницей из документа HTML 2 посредством фрагмента данных на этой странице, имеющего ID dsogames:

<XML ID="dsogames" SRC="games table.xml"></XML>

Элемент TABLE страницы сцеплен со всем XML-документом путем присвоения атрибуту DATASRC элемента идентификатора (ID) фрагмента данных, предваренного символом #:

<TABLE DATASRC="#dsogames" BORDER="1" CELLPADDING="5">

Таблица определена со стандартным заголовком (элемент THEAD) и с одной строкой (элемент TR). Каждая ячейка в этой строке (т.е., каждый элемент TD) состоит из элемента SPAN, который сцеплен с одним из полей XML-документа таким образом, что этот элемент отображает содержимое поля. Например, первая ячейка содержит элемент SPAN, сцепленный с полем NAME:

<TD><SPAN DATAFLD="NAME"

STYLE="font-style:italic"></SPAN></TD>

Элемент SPAN связывается с полем XML путем присвоения имени поля (в данном примере NAME) атрибуту DATAFLD элемента.

Вот как работает связывание данных: даже если в элементе TABLE определена только одна строка, когда браузер отображает таблицу, он повторяет строковый элемент для каждой записи в XML-документе. Т.е., в первой строке, следующей за заголовком, отображены поля (NAME, AUTHOR и т.д.), принадлежащие первой записи (элемент GAME для игры Max Payne). В следующей строке отображены поля для второй записи (элемент GAME для игры GTA Vice City) и т.д. На рисунке 3 показано как выглядит документ в Internet Explorer.

Рис. 3

Может возникнуть вопрос, почему ячейки (элементы TD) не сцеплены непосредственно с полями XML. Ответ заключается в том, что элемент TD не является связываемым HTML-элементом. (Связываемые элементы перечислены в таблице 2 в параграфе "Другие способы связывания данных".) Следовательно, должен включаться внутрь каждого элемента TD связываемый элемент (обычно SPAN).