Самоучитель по SQL-сервер в Linux



Включение файлов XML, RSS и RDF

Процедура включения внешнего правильно оформленного (well-formed) документа XML очень похожа на метод parsed. Режим обработки XML активизируется присваиванием атрибуту method значения XML, RSS или RDF. Кроме того, он автоматически выбирается при передаче атрибута src с расширениями .xml, .rss и .rdf.

Атрибут del imiter в этом контексте задает имя элемента (тега), в котором производится поиск полей. В общем случае значения полей выводятся в порядке их следования в файле XML, если в теге <field> не указано имя выводимого элемента. Например, атрибут name="title" описывает символьные данные, заключенные между тегами <title> и </title> исходного документа XML.

В качестве примера рассмотрим документ XML languages.xml, в котором перечисляются языки взаимодействия с PostgreSQL. Документ имеет следующую структуру:

<?xml version="1.0" encoding="utf-8"?>

<languages>

<language>

<name>C</name>

<notes>Bui11-i n 1anguage.</notes>

</language>

<language>

<name>LXP</name>

<notes>Web-based content language.</notes>

</language>

<language>

<name>PL/pgSQL</name>

<notes>PostgreSQL procedural language.</notes>

</language>

</languages>

Обратите внимание: каждый язык описывается отдельным элементом <1 anguage>. Чтобы произвести лексический разбор этого файла XML по аналогии с рассмотренным выше примером файла с разделителями, присвойте атрибуту del i mi ter тега <include> значение language, а атрибуту src — значение languages.xml. Пример приведен в листинге 13.24.

Листинг 13.24. Включение файла XML

<1хр>

<include src="languages.xml" delimiter="language" method="xml">

Language Name: <field name="name" /><br />

Language Notes: <field name="notes" /><br />

<hr />

</include>

</lxp>

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

Language Name: C<br />

Language Notes: Built-in language.<br />

<hr />

Language Name: LXP<br />

Language Notes: Web-based content language.<br />

<hr /> >

Language Name: PL/pgSQL<br />

Language Notes: PostgreSQL procedural language.<br />

<hr />

В листинге 13.25 приведен пример отображения простого документа RDF XML. Он отличается от примера из листинга 13.24 тем, что относится именно к документу RDF. В результате атрибут del imiter можно не указывать, поскольку значение по умолчанию item подходит для структуры данных RDF.

Листинг 13.25. Включение файла RDF

<1хр>

<include src=»/home/web/ports/headlines/slashdot.rdf» lastblock=»5">

<table Dorder=»0" cellspacing=»l"><tr>

<td bgcolor=»#ffffff» width=»100%>

<div class=»content»>- <field name=»title»></div>

</td>

</tr><tr>

<td bgcolor=»#e0e0e8" width=»100%>

<strong>

<field name=»link» type=»url» link=»Read More...» target=»_blank»>

</strong><br />

</td>

</tr></table>

</include>

</lxp>

Обратите внимание на атрибут lastblock в листинге 13.25. Этот атрибут уже упоминался в подразделе «Включение файлов с разделителями» этого раздела. Атрибуты fi rstblock и lastblock также используются при включении файлов XML, RDF и RSS и определяют размер и смещение выводимых блоков.

ВНИМАНИЕ

Учтите, что все документы XML, включаемые средствами LXP, должны быть правильно оформлены, иначе модуль лексического разбора выдаст ошибку. Ошибки разбора XML сохраняются в журнале ошибок Apache с префиксом [Ixp] XML Parse Error.