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


Вопрос № 1. Отображение XML-документов с использованием таблиц каскадных стилей CSS



Самостоятельная работа № 2

«Обработка XML-документов»

Введение

 

XML означает Extensible Markup Language – это расширяемый язык разметки, разработанный рабочей группой XML Working Group консорциума World Wide Web Consortium (W3C).

Большинство современных СУБД форматируют результаты запроса к базе данных, т.е., отображают данные в виде XML-файла (XML-страницы). Отображать XML-файлы в браузере с использованием HTML разметки позволяют программы – XML – парсеры – анализаторы кода.

 

Есть три основных способа сообщить браузеру (в частности, Microsoft Internet Explorer), как обрабатывать и отображать каждый из созданных вами XML-элементов.

1) Таблица стилей.

С помощью данного метода вы связываете таблицу стилей с XML-документом. Таблица стилей представляет собой отдельный файл, содержащий инструкции для форматирования индивидуальных XML-элементов. Вы можете использовать либо каскадную таблицу стилей (Cascading Style Sheet – CSS), которая также применяется для HTML-страниц, либо расширяемую таблицу в формате языка стилевых таблиц (Extensible Stylesheet Language – XSL), обладающую значительно более широкими возможностями, нежели CSS, и разработанную специально для XML-документов.

2) Связывание данных.

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

3) Написание сценария.

Этот метод требует создания HTML-страницы, связывания с ней XML-документа и получения доступа к индивидуальным XML-элементам с помощью специально написанного кода сценария (JavaScript или Microsoft Visual Basic Scripting Edition [VBScript]). Браузер воспринимает XML-документ как объектную модель документа (Document Object Model – DOM), состоящую из большого набора объектов, свойств и команд. Написанный код позволяет осуществлять доступ, отображение и манипулирование XML-элементами.

 

Вопрос № 1. Отображение XML-документов с использованием таблиц каскадных стилей CSS

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

 

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

 

При сцеплении HTML элемента с XML-элементом, HTML-элемент автоматически отображает содержимое XML-элемента. Например, следующий элемент <SPAN> на HTML-странице сцеплен (атрибут DATASRC) с элементом AUTHOR (атрибут DATAFLD) связанного XML-документа:

 

<SPAN DATASRC="#dsoInventory" DATAFLD="AUTHOR"> </SPAN>

 

В результате HTML-элемент <SPAN> отображает содержимое XML-элемента AUTHOR.

Тег <SPAN> предназначен для определения строчных элементов документа.  C помощью тега  <SPAN>  можно выделить часть информации внутри других тегов и установить для нее свой стиль.

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

1. Табличное сцепление.

2. Сцепление по отдельным записям.

 

Табличное сцепление

 

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

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

Пример HTML-страницы, которая содержит таблицу, сцепленную с данными документа Inventory.xml:

 

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

<HTML>

<HEAD> <TITLE> Book Description </TITLE> </HEAD>

<BODY>

<XML ID="dsoInventory" SRC="Inventory.xml"></XML>

<H2> Book Inventory </H2>

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

<THEAD>

<TH> TITLE </TH> <TH> AUTHOR </TH> <TH> BINDING </TH>

<TH> PAGES </TH> <TH> PRICE </TH>

</THEAD>

<TR ALIGN="center">

<TD>

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

</TD>

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

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

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

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

</TR>

</TABLE>

</BODY>

</HTML>

 

XML-документ Inventory.xml связан с HTML-страницей Table.htm   посредством фрагмента данных на этой странице, имеющего ID dsoInventory .

Элемент <TABLE> HTML-страницы сцеплен со всем XML-документом Inventory . xml путем присвоения атрибуту  DATASRC элемента идентификатора ID фрагмента данных, предваренного символом #.

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

Даже если в элементе TABLE определена только одна строка, то когда браузер отображает таблицу, он повторяет строковый элемент для каждой записи в XML-документе. Т.е., в первой строке, следующей за заголовком, отображены поля (TITLE, AUTHOR и т.д.), принадлежащие первой записи (элемент BOOK для книги Adventures of Huckleberry Finn). В следующей строке отображены поля для второй записи (элемент BOOK для книги Leaves of Grass) и т.д. На рисунке 3.1 показано как выглядит документ в Internet Explorer 5.

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

 

 

Рис. 3.1 – Отображение XML - документа в Internet Explorer 5

 

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

1) Установить для атрибута DATAPAGESIZE сцепленного элемента TABLE значение, равное максимальному числу записей, которые нужно отобразить за один раз. Каждая страница записей будет содержать заданное вами число записей.

Например, следующий начальный тег для элемента TABLE присваивает число "5" атрибуту DATAPAGESIZE, в результате чего в таблице будет отображено пять записей за раз:

 

<TABLE DATASRC="# dsoInventory" DATAPAGESIZE="5">

 

Присвойте уникальный идентификатор атрибуту ID элемента TABLE, как для следующего начального тега:

 

<TABLE ID="InventoryTable" DATASRC="#dsoInventory"

DATAPAGESIZE="5">

 

2) Чтобы перемещаться между записями, нужно вызывать методы элемента TABLE, приведенные в таблице 3.1. Для приведенных в последнем столбце примеров предполагается, что таблица имеет идентификатор InventoryTable, т.е. TABLE ID="InventoryTable".

 

Таблица 3.1

 

Метод элемента TABLE Эффект Пример вызова
First Page Отображает первую страницу записей InventoryTable.firstPage()
Previous Page Отображает предыдущую страницу записей InventoryTable.previousPage()
Next Page Отображает следующую страницу записей InventoryTable.nextPage()
lastPage Отображает последнюю страницу записей InventoryTable.lastPage()

 

Если в текущий момент отображена первая страница, вызов метода previousPage игнорируется, а если отображена последняя страница, то игнорируется вызов nextPage.

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

 

<BUTTON ONCLICK="InventoryTable.nextPage()"> Next Page </BUTTON>

 

Этот элемент отображает кнопку. Когда пользователь щелкает на кнопке, вызывается метод, присвоенный атрибуту ONCLICK, а именно, InventoryTable . nextPage ().

Техника использования постраничного вывода демонстрируется в файлах Big . xml и  Big _ Table . htm. Файл Big _ Table . htm  представляет собой HTML-страницу, которая отображает XML-документ (Big . xml) в таблице, атрибуту DATAPAGESIZE которой присвоено значение "5". В верхней части страницы имеется четыре элемента BUTTON, каждый из которых выполняет действие в соответствии с методами постраничного вывода таблицы. Когда открывается HTML-страница, в таблице отображаются первые пять записей. Щелчок мышью на кнопке Next Page приводит к отображению следующих пяти записей (или, в конце таблицы, оставшегося числа записей), а щелчок на кнопке Previous приводит к отображению предыдущих пяти записей (или, в начале таблицы, первых пяти записей). Щелчок на кнопке  First Page или на кнопке  Last Page  приводит к отображению первых или последних пяти записей. На рисунке 3.2 показано как HTML-страница будет выглядеть в Internet Explorer.

 

 

Рис. 3.2. - Вид файла Big_Table.htm в Internet Explorer 

 

Содержание файла Big.xml:

 

<?xml version="1.0" encoding="windows-1251" ?>

<!-- Имя файла: Big.xml -->

<INVENTORY>

<BOOK>

<TITLE> The Adventures of Huckleberry Finn </TITLE>

<AUTHOR> Mark Twain </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 298 </PAGES>

<PRICE> $5.49 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Adventures of Tom Sawyer </TITLE>

<AUTHOR> Mark Twain </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 205 </PAGES>

<PRICE> $4.75 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Ambassadors </TITLE>

<AUTHOR> Henry James </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 305 </PAGES>

<PRICE> $5.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Awakening </TITLE>

<AUTHOR> Kate Chopin </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 195 </PAGES>

<PRICE> $4.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> Billy Budd </TITLE>

<AUTHOR> Herman Melville </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 195 </PAGES>

<PRICE> $4.49 </PRICE>

</BOOK>

<BOOK>

<TITLE> A Connecticut Yankee in King Arthur's Court  </TITLE>

<AUTHOR> Mark Twain </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 385 </PAGES>

<PRICE> $5.49 </PRICE>

</BOOK>

<BOOK>

<TITLE> Joan of Arc </TITLE>

<AUTHOR> Mark Twain </AUTHOR>

<BINDING> trade paperback </BINDING>

<PAGES> 465 </PAGES>

<PRICE> $6.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> Leaves of Grass </TITLE>

<AUTHOR> Walt Whitman </AUTHOR>

<BINDING> hardcover </BINDING>

<PAGES> 462 </PAGES>

<PRICE> $7.75 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Legend of Sleepy Hollow </TITLE>

<AUTHOR> Washington Irving </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 98 </PAGES>

<PRICE> $2.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Marble Faun </TITLE>

<AUTHOR> Nathaniel Hawthorne </AUTHOR>

<BINDING> trade paperback </BINDING>

<PAGES> 473 </PAGES>

<PRICE> $10.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> Moby-Dick </TITLE>

<AUTHOR> Herman Melville </AUTHOR>

<BINDING> hardcover </BINDING>

<PAGES> 724 </PAGES>

<PRICE> $9.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> Passing </TITLE>

<AUTHOR> Nella Larsen </AUTHOR>

<BINDING> trade paperback </BINDING>

<PAGES> 165 </PAGES>

<PRICE> $5.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Portrait of a Lady </TITLE>

<AUTHOR> Henry James </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 256 </PAGES>

<PRICE> $4.95 </PRICE>

</BOOK>

<BOOK>

<TITLE> Roughing It </TITLE>

<AUTHOR> Mark Twain </AUTHOR>

<BINDING> mass market paperback </BINDING>

<PAGES> 324 </PAGES>

<PRICE> $5.25 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Scarlet Letter </TITLE>

<AUTHOR> Nathaniel Hawthorne </AUTHOR>

<BINDING> trade paperback </BINDING>

<PAGES> 253 </PAGES>

<PRICE> $4.25 </PRICE>

</BOOK>

<BOOK>

<TITLE> The Turn of the Screw </TITLE>

<AUTHOR> Henry James </AUTHOR>

<BINDING> trade paperback </BINDING>

<PAGES> 384 </PAGES>

<PRICE> $3.35 </PRICE>

</BOOK>

</INVENTORY>

 

Файл Big_Table.htm:

 

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

<HTML>

<HEAD> <TITLE> Book Inventory </TITLE> </HEAD>

<BODY>

<XML ID="dsoBig " SRC="Big.xml"></XML>

<H2> Book Inventory </H2>

<BUTTON ONCLICK="InventoryTable.firstPage()">

|&lt; First Page

</BUTTON>

&nbsp;&nbsp;

<BUTTON ONCLICK="InventoryTable.previousPage()">

&lt; Previous Page

</BUTTON>

&nbsp;&nbsp;

<BUTTON ONCLICK="InventoryTable.nextPage()">

Next Page &gt;

</BUTTON>

&nbsp;&nbsp;

<BUTTON ONCLICK="InventoryTable.lastPage()">

Last Page &gt;|

</BUTTON>

<p>

<TABLE ID="InventoryTable" DATASRC="#dsoInventory"

DATAPAGESIZE="5" BORDER="1" CELLPADDING="5">

<THEAD>

    <TH> Title </TH>

    <TH> Author </TH>

    <TH> Binding </TH>

    <TH> Pages </TH>

    <TH> Price </TH>

</THEAD>    

<TR ALIGN="center">

    <TD><SPAN DATAFLD="TITLE"

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

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

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

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

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

</TR>

</TABLE>

</BODY>

</HTML>

 

Перемещение между записями

 

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

DSO (объект исходных данных), ассоциированный с XML-документом, предоставляет ряд методов (функций), которыми вы можете воспользоваться при перемещении между записями. Эти методы принадлежат объекту recordset DSO и приведены в таблице 3.2. Примеры вызовов, приведенные в последнем столбце. Предполагается, что HTML-страница содержит фрагмент данных XML с идентификатором (ID) dsoInventory.

 

Таблица 3.2

 

Метод объекта recordset DSO Переход от текущей записи к Пример вызова
moveFirst первой записи в документе dsoInventory.recordset.moveFirst()
movePrevious предыдущей записи dsoInventory.recordset.movePrevious()
moveNext следующей записи dsoInventory.recordset.moveNext()
moveLast последней записи в документе dsoInventory.recordset.moveLast()
move записи с указанным номером dsoInventory . recordset . move (5) (Переход к пятой записи. Записи нумеруются, начиная с нуля)

 

Примечание. Составной объект recordset DSO соответствует стандарту технологии доступа к данным, которую Microsoft назвала ActiveX Data Objects (ADO). Можно использовать объект общего назначения ADO recordset совместно с множеством различных источников данных, а не только с XML DSO. Более подробную информацию об ADO и объекте ADO recordset можно найти на Web-сайте Microsoft, а документацию по методам, свойствам и событиям объекта recordset - на сайте Microsoft Developer Network: http://msdn.microsoft.com/.

 

Можно обращаться к этим методам из написанного вами кода сценария. Однако самый простой способ их вызова – это присвоить имя метода атрибуту ONCLICK элемента BUTTON, как в следующем примере:

 

<BUTTON ONCLICK="dsoInventory.recordset.moveFirst()">

First Record

</BUTTON>

 

Этот элемент отображает кнопку. Когда пользователь щелкает мышью на кнопке, вызывается метод, присвоенный атрибуту ONCLICK - dsoInventory . recordset . moveFirst ().

Если текущей является первая запись, вызов метода movePrevious приводит к перемещению в зону начала файла (BOF), где нет записей, поэтому сцепленный элемент будет пуст. Аналогично, вызов метода moveNext, если текущей является последняязапись, приводит к перемещению в зону конца файла (EOF), поэтому сцепленный элемент также будет пуст.

К счастью, объект recordset поддерживает свойство BOF, которое принимает значение true (истина), если достигнуто начало файла, а также свойство EOF, которое принимает значение true (истина), если достигнут конец файла. Вы можете использовать эти свойства для определения этих состояний и внесения необходимых корректировок. Например, приведенный ниже код предписывает при щелчке на кнопке в случае, если достигнуто начало файла, быстро отобразить первую запись:

 

<BUTTON ONCLICK="dsoInventory.recordset.movePrevious();

if (dsoInventory.recordset.BOF)

   dsoInventory.recordset.moveNext()">

Back

</BUTTON>

 

Следующий код проверяет достижение конца файла:

 

<BUTTON ONCLICK="dsoInventory.recordset.moveNext();

if (dsoInventory.recordset.EOF)

dsoInventory.recordset.movePrevious()">

Forward

</BUTTON>

 

Можно присвоить атрибуту ONCLICK (либо другим атрибутам, относящимся к событиям, например, ONMOUSEOVER) целый блок кода сценария. В этих примерах код написан на языке Microsoft JScript.

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

 

Структура DOM

 

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

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

 

Таблица 4.1. Основные типы узлов, используемых для

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

 

Тип узла Компоненты XML-документа, представляемые узлом Имя узла (свойство nodeName объекта) Значение узла (свойство nodeValue объекта)
1 2 3 4
Document Корневой узел иерархии документа (т. е. он представляет весь XML-документ) #document null
Element Элемент Имя типа элемента (например, BOOK) null (любые символьные данные, содержащиеся в элементе, находятся в одном или нескольких дочерних узлах Text)
Text Текст, принадлежащий элементу, атрибуту или примитиву, которые представлены родителем этого узла #text Текст родительского XML-компонента
Attribute Атрибут (а также другие пары имя-значение, такие как имя и значение в инструкции по обработке) Имя атрибута (например, Binding) Значение атрибута (например, hardcover)
Processing-Instruction Инструкция по обработке (объявление XML или пользовательская инструкция по обработке) Предназначение инструкции по обработке  (например, xml) Полное содержимое инструкции по обработке, за исключением предназначения (например, version="1.0")
Comment Комментарий #comment Весь текст внутри ограничителей комментария

 

1 2 3 4
CDATASection Раздел CDATA #cdata-section Содержимое раздела CDATA
DocumentType Объявление типа документа Имя корневого элемента, содержащееся в объявлении DOCTYPE (например, INVENTORY) null
Entity Объявление примитива в DTD Имя примитива (например, image) null (значение примитива содержится в дочернем узле Text)
Notation Объявление нотации в DTD Имя нотации (например, BMP) null (системный литерал нотации содержится в дочернем узле Attribute с именем SYSTEM)

 

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

Например, комментарий в XML-документе не обладает именем. В связи с этим DOM использует стандартное имя # comment.

Другие имена узлов получаются из имен, присвоенных соответствующим компонентам в XML-документе. Например, узел Element , представляющий элемент типа BOOK, также должен носить имя BOOK .

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

DOM организует узлы XML-документа в виде древообразной иерархической структуры, которая отражает иерархическую структуру самого документа. При этом создается единственный узел  Document, который представляет весь XML-документ и служит корневым элементом в этой иерархии. Заметим, что логическая иерархическая структура элементов XML, в которой элемент Документ является корневым, это лишь одна из ветвей иерархической структуры узлов DOM, которые представляют весь документ.

Рассмотрим XML-документ Inventory_Dom.xml. Этот документ состоит из объявления XML, комментария и корневого элемента, который включает дочерние элементы, а также атрибуты. На рисунке 4.1 показана иерархическая организация узлов, которые создает DOM для представления документа. Для каждого компонента рассматриваемого документа на рисунке указан тип узла, используемого для представления компонента (например, Document , Comment и Element), а также имя узла  (оно указано в скобках – например, # document , # comment  и  INVENTORY).

 

 

Рис. 4.1 - Иерархическая организация узлов, которые создает DOM

 

Содержание файла Inventory_Dom.xml:

 

<?xml version="1.0"?><!-- Имя файла : Inventory_Dom.xml --><INVENTORY> <BOOK Binding="mass market paperback"> <TITLE> The Adventures of Huckleberry Finn </TITLE> <AUTHOR Born="1835"> Mark Twain </AUTHOR> <PAGES>298</PAGES> <PRICE>$5.49</PRICE> </BOOK> <BOOK Binding="trade paperback"> <TITLE> The Marble Faun </TITLE> <AUTHOR Born="1804"> Nathaniel Hawthorne </AUTHOR> <PAGES> 473</PAGES> <PRICE> $10.95 </PRICE> </BOOK> <BOOK Binding="hardcover"> <TITLE> Moby-Dick </TITLE> <AUTHOR Born="1819"> Herman Melville </AUTHOR> <PAGES> 724 </PAGES> <PRICE>$9.95</PRICE> </BOOK></INVENTORY>

 

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

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

 

Таблица 4.2. Некоторые полезные свойства,

поддерживаемые всеми типами узлов

 

Свойство Описание Пример
1 2 3
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;

 

1 2 3
parentNode Узел, для которого данный узел является дочерним (не действует для узла Attribute) ParentElement = Element.parentNode;
previousSibling Предыдущий узел на том же уровне данного узла PreviousElement = Element.previousSibling;
text Все текстовое содержимое данного узла и все подчиненные узлы Element AllCharacterData = Element.text;
xml Все содержимое XML данного узла и все его подчиненные узлы XMLContent = Element.xml;

 

Подсказка. Все свойства, методы и события, принадлежащие различным типам объектов-узлов, предоставлены MSDN:

 http://msdn.microsoft.com/xml/reference/scriptref/xmldom_Objects.asp.

Обратите внимание, что на этой странице каждому имени узла, которые приведены в Таблице 4.1, предшествует префикс XMLDOM – например, XMLDOMDocument, XMLDOMElement и XMLDOMText. Это имена программных интерфейсов для каждого типа узла. Обратите внимание также, что общие свойства и методы узлов представлены под именем XMLDOMNode.

 

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

 

Подсказка. Свойство будет иметь значение null, если данное свойство не применимо к определенному узлу. Например, если узел представляет XML-компонент, который не имеет атрибутов (например, узел Document или Comment), его свойство attributes будет иметь значение null. Если узел представляет XML-компонент, который не имеет типа данных (тип данных имеют только определенные атрибуты), его свойство dataType будет иметь значение null. Если узел не имеет дочернего узла, не являющегося атрибутом, его свойство firstChild   будет иметь значение null. Если узел относится к типу, который не имеет значений (например, узел Document или Element), его свойство nodeValue также будет иметь значение null.

 

Обратите внимание в таблице 4.2, что каждый узел обладает набором свойств, которые позволяют вам перемещаться в иерархии узла – т. е. получать доступ к другим узлам от текущего узла. Например, рассмотрим документ из файла Inventory _ Dom . xml. Если переменная Document содержит корневой узел Document, следующий код приведет к отображению содержимого комментария, расположенного в начале документа (этот комментарий DOM хранит как второй дочерний узел узла Document):

 

alert (Document . childNodes (1). nodeValue);

 

Эта строка вызовет отображение сообщения, содержащего текст

 

" Имя файла: Inventory_Dom.xml ".

 

В третьем вопросе занятия вы узнали, как осуществлять доступ к корневому узлу Document через член XMLDocument DSO, который получается из фрагмента данных XML. Узел  Document  является шлюзом к XML-документу. Его можно использовать его для доступа к другим узлам.

 



Заключение

 

На занятии рассмотрены три основных метода отбражения XML-документов на HTML странице: 1) с помощью таблиц стилей CSS и XSL, 2) путём связывания данных, 3) с помощью написания сценария.

Наибольшие возможности предоставляют второй и, особенно, третий способы.

Метод связывания данных сводится к установке связи XML-документа с HTML-страницей, а также сцеплению элементов HTML с XML-элементами. В результате HTML-элементы автоматически отображают содержимое XML-элементов, с которыми они сцеплены. В этом случае при открытии HTML-страницы встроенный в Internet Explorer XML-процессор синтаксически анализирует XML-документ. При этом Internet Explorer создаёт программный объект, который носит название "Объект исходных данных" (Data Source Object, DSO). Объект DSO хранит данные XML и обеспечивает доступ к ним. DSO позволяет осуществлять доступ и манипулирование XML-данными посредством ряда методов, свойств и событий.

Метод написания сценариев заключатся в написании скриптов на JavaScript или Microsoft Visual Basic Scripting Edition [VBScript].

В основе этих методов лежит знание языков HTML, XSLT, JavaScript.

 

Вопросы для самоконтроля

1. Какие основные методы обработки XML-документов существуют?

2. Для чего нужен язык описания стилей XSL?

3. Что собой представляет объектная модель документа DOM?

4. Для чего нужны программы-анализаторы, так называемые парсеры (parsers)?

 

Литература

 

1. Хабибуллин И. Ш. Самоучитель XML. - СПб.: БХВ-Петербург, 2003. - 336 с: ил.

 

В.В. Котович

Самостоятельная работа № 2

«Обработка XML-документов»

Введение

 

XML означает Extensible Markup Language – это расширяемый язык разметки, разработанный рабочей группой XML Working Group консорциума World Wide Web Consortium (W3C).

Большинство современных СУБД форматируют результаты запроса к базе данных, т.е., отображают данные в виде XML-файла (XML-страницы). Отображать XML-файлы в браузере с использованием HTML разметки позволяют программы – XML – парсеры – анализаторы кода.

 

Есть три основных способа сообщить браузеру (в частности, Microsoft Internet Explorer), как обрабатывать и отображать каждый из созданных вами XML-элементов.

1) Таблица стилей.

С помощью данного метода вы связываете таблицу стилей с XML-документом. Таблица стилей представляет собой отдельный файл, содержащий инструкции для форматирования индивидуальных XML-элементов. Вы можете использовать либо каскадную таблицу стилей (Cascading Style Sheet – CSS), которая также применяется для HTML-страниц, либо расширяемую таблицу в формате языка стилевых таблиц (Extensible Stylesheet Language – XSL), обладающую значительно более широкими возможностями, нежели CSS, и разработанную специально для XML-документов.

2) Связывание данных.

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

3) Написание сценария.

Этот метод требует создания HTML-страницы, связывания с ней XML-документа и получения доступа к индивидуальным XML-элементам с помощью специально написанного кода сценария (JavaScript или Microsoft Visual Basic Scripting Edition [VBScript]). Браузер воспринимает XML-документ как объектную модель документа (Document Object Model – DOM), состоящую из большого набора объектов, свойств и команд. Написанный код позволяет осуществлять доступ, отображение и манипулирование XML-элементами.

 

Вопрос № 1. Отображение XML-документов с использованием таблиц каскадных стилей CSS


Поделиться:



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


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