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


Использование вложенных таблиц для отображения иерархической структуры записей



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

В иерархическом наборе записей каждая запись может содержать, в дополнение к фиксированному набору полей, переменное число вхождений (нуль или более) вложенных записей. В файле Inventory _ Hierarchy . xml представлен пример XML-документа, структурированного как иерархический набор записей. В этом документе корневой элемент INVENTORY  содержит группу записей CATEGORY. Каждаязапись CATEGORY начинается с поля CATNAME, которое содержит только символьные данные, а затем следуют нуль или несколько вложенных записей BOOK. Каждая вложенная запись BOOK имеет пять полей (TITLE , AUTHOR , BINDING , PAGES , PRICE).

 

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

 

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

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

<INVENTORY>

<CATEGORY>

<CATNAME> Middle Ages </CATNAME>

<BOOK>

    <TITLE> The Canterbury Tales </TITLE>

    <AUTHOR> Geoffrey Chaucer </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 692 </PAGES>

    <PRICE> $18.95 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Piers Plowman </TITLE>

    <AUTHOR> William Langland </AUTHOR>

    <BINDING> trade paperback </BINDING>

    <PAGES> 385 </PAGES>

    <PRICE> $10.95 </PRICE>

</BOOK>

</CATEGORY>

<CATEGORY>

<CATNAME> Renaissance </CATNAME>

<BOOK>

    <TITLE> The Blazing World </TITLE>

    <AUTHOR> Margaret Cavendish </AUTHOR>

    <BINDING> trade paperback </BINDING>

    <PAGES> 225 </PAGES>

    <PRICE> $8.79 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Oroonoko </TITLE>

    <AUTHOR> Aphra Behn </AUTHOR>

    <BINDING> mass market paperback </BINDING>

    <PAGES> 295 </PAGES>

    <PRICE> $4.95 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Doctor Faustus </TITLE>

    <AUTHOR> Christopher Marlowe </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 472 </PAGES>

    <PRICE> $15.95 </PRICE>

</BOOK>

</CATEGORY>

<CATEGORY>

<CATNAME> 18th Century </CATNAME>

<BOOK>

    <TITLE> Gulliver's Travels </TITLE>

    <AUTHOR> Jonathan Swift </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 324 </PAGES>

    <PRICE> $11.89 </PRICE>

</BOOK>

<BOOK>

    <TITLE> The History of Tom Jones: A Foundling </TITLE>

    <AUTHOR> Henry Fielding </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 438 </PAGES>

    <PRICE> $16.95 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Love in Excess </TITLE>

    <AUTHOR> Eliza Haywood </AUTHOR>

    <BINDING> trade paperback </BINDING>

    <PAGES> 429 </PAGES>

    <PRICE> $12.95 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Tristram Shandy </TITLE>

    <AUTHOR> Laurence Sterne </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 322 </PAGES>

    <PRICE> $9.49 </PRICE>

</BOOK>

</CATEGORY>

<CATEGORY>

<CATNAME> 19th Century </CATNAME>

<BOOK>

    <TITLE> Dracula </TITLE>

    <AUTHOR> Bram Stoker </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 395 </PAGES>

    <PRICE> $17.95 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Great Expectations </TITLE>

    <AUTHOR> Charles Dickens </AUTHOR>

    <BINDING> mass market paperback </BINDING>

    <PAGES> 639 </PAGES>

    <PRICE> $6.95 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Percival Keene </TITLE>

    <AUTHOR> Frederick Marryat </AUTHOR>

    <BINDING> trade paperback </BINDING>

    <PAGES> 425 </PAGES>

    <PRICE> $12.89 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Treasure Island </TITLE>

    <AUTHOR> Robert Louis Stevenson </AUTHOR>

    <BINDING> trade paperback </BINDING>

    <PAGES> 283 </PAGES>

    <PRICE> $11.85 </PRICE>

</BOOK>

<BOOK>

    <TITLE> Wuthering Heights </TITLE>

    <AUTHOR> Emily Bronte </AUTHOR>

    <BINDING> hardcover </BINDING>

    <PAGES> 424 </PAGES>

    <PRICE> $12.95 </PRICE>

</BOOK>

</CATEGORY>

</INVENTORY>

 

Файл Inventory_Hierarchy.htm содержит HTML-страницу, которая использует вложенную таблицу для отображения иерархической структуры записей XML-документа Inventory_Hierarchy.xml.

 

Содержание файла Inventory_Hierarchy.htm:

 

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

<HTML>

<HEAD>

<TITLE> Inventory of Classic English Literature </TITLE>

</HEAD>

<BODY>

<XML ID="dsoInventory" SRC="Inventory_Hierarchy.xml">

</XML>

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

<THEAD> <TH> Classic English Literature </TH> </THEAD>

<TR> <TD> <SPAN DATAFLD="CATNAME"> </SPAN> </TD> </TR>

<TR>

  <TD>

   <TABLE DATASRC="#dsoInventory" DATAFLD="BOOK"

          BORDER="0" CELLSPACING="10">

          <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>

  </TD>

</TR>

</TABLE>

</BODY>

</HTML>

 

В файле Inventory_Hierarchy.htm внешняя таблица сцеплена с XML-документом Inventory_Hierarchy.xml, что видно из описания начального тега:

 

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

 

Внешняя таблица также включает заголовок (элемент THEAD, отображающий надпись "Classic English Literature"), плюс две строки таблицы (два элемента TR). Браузер повторяет две строки для каждой записи верхнего уровня (т.е. для каждой записи CATEGORY). В первой строке отображается поле CATNAME. Это подобно рассмотренному ранее примеру таблицы, отображающей простой набор записей. Однако вторая строка не отображает поле, а содержит вложенную таблицу, которая отображает содержимое каждой вложенной записи BOOK внутри текущей категории. Вот разметка для вложенной таблицы:

 

<TABLE DATASRC="# dsoInventory"

  DATAFLD="BOOK"

  BORDER= 0

  CELLSPACING=10>

<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>

 

Обратите внимание, что вы должны сцепить вложенную таблицу не только с XML-документом (DATASRC="#dsoInventory"), но и с вложенными записями BOOK (DATAFLD="BOOK"), чтобы в таблице отображалось содержимое каждой записи BOOK, вложенной в текущую запись CATEGORY. Другими словами, строковый элемент (TR) в этой таблице будет повторен для каждого из этих элементов BOOK. Заметим, что внешняя таблица по умолчанию сцеплена с записями верхнего уровня – в данном случае, с записями CATEGORY – поэтому каждая из этих записей отображается при переходе к новой категории.

На рисунке 3.3 показано как файл Inventory _ Hierarchy . htm будет выглядеть в Internet Explorer.

 

 

Рис. 3.3 – Вид файла Inventory_Hierarchy.htm в Internet Explorer

 

Можно использовать дополнительные вложенные таблицы для отображения документа, который содержит дополнительные уровни вложенных записей. Рассмотрим в качестве примера файл Inventory _ Hierarchy . xml. Предположим, вы заменили каждое поле AUTHOR:

<AUTHOR> Geoffrey Chaucer </AUTHOR> на нуль или несколько записей   AUTHOR:

 

<AUTHOR>

<FIRSTNAME> Geoffrey </FIRSTNAME>

<LASTNAME> Chaucer </LASTNAME>

</AUTHOR>

 

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

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

 


Поделиться:



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


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