Включение файлов 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.
|