Прайс-листы.
С помощью технологии Alex возможно решение такой задачи: занесение в базу данных цен на товары определенных категорий из прайс-листов на Web-страницах. Настройка при этом заключается в создании банка шаблонов, отражающего строение типичных прайс-листов.
Вот фрагмент прайс-листа, содержащий цифровые фотоаппараты:
| Название | 
Цена | 
| Olympus C-2000zoom | 
870 | 
| Olympus C-1400XL | 
780 | 
| Agfa ePhoto CL50 | 
700 | 
| Agfa ePhoto CL30 | 
470 | 
| Agfa ePhoto 1680 | 
730 | 
| Canon PowerShot A50 | 
440 | 
На первый взгляд, прайс-лист устроен довольно просто: таблица, в одной колонке которой — название товара, в другой — цена. Какие шаблоны нужны для того, чтобы прайс-лист в формате HTML можно было опознать как прайс-лист и занести в базу данных? Прежде всего, необходимы шаблоны [Товар] и [Цена]. И если [Цена] может быть устроена довольно просто:
где «число» — это предопределенный системный шаблон,
то название товара — более сложная конструкция, которая может включать категорию товара («цифровой фотоаппарат»), название фирмы-производителя («Agfa»), марку товара («ePhoto 1680»), а часто — и некоторые характеристики товара.
Итак, определим название товара так:
|  [Товар] = | 
 |  | 
 | 
([Категория]) ([Производитель]) [Марка] ([Характеристики])
 |  | 
Круглые скобки обозначают опциональность элементов шаблона.
Строка прайс-листа может иметь следующий вид:
|  [Прайс-строка] = | 
 |  | 
 | 
[Товар] [Разделитель] [Цена] . | 
где [Разделитель] — это вспомогательный шаблон, который позволяет учитывать различные способы отделения одного поля от другого, а . — произвольный контекст.
Наконец, сам прайс-лист — это множество строк, первая строка — заголовок:
|  [Прайс-лист] = | 
 |  | 
 | 
[Первая строка] [Прайс-строка]= | 
Здесь = — это признак повторения произвольное число раз.
Первую строку можно определить так:
| [Первая строка] = | 
 |  | 
 | 
[Заголовок товара] [Разделитель] [Заголовок цены] (.) | 
Шаблоны [Производитель], [Категория] и т.д. заполняются уже названиями конкретных производителей, категорий. Определив таким образом всего 12 шаблонов, связанных со структурой прайс-листа, и наполняя шаблоны нижнего уровня, мы можем найти все традиционные прайс-листы, независимо от их стиля и способа кодирования в HTML, и занести их в базу данных уже в нормализованном виде. Такой подход аналогичен восприятию человека — человек выделяет базовые структурные элементы, абстрагируясь от способов реализации этой структуры.
Выше мы рассмотрели довольно простой случай. Однако на практике встречаются и такие строки прайса:
Compaq Armada M700 470006-459 PIII-850/20GB/128MB/14.1″ TFT/DVD/LAN/W98
Здесь в одной строке приведены все значимые характеристики товара (ноутбука). Для того, чтобы эти свойства выделить в отдельные поля, потребуется чуть больше работы (порядка 20 шаблонов). Вот пример устройства шаблона Размер экрана:
| [Размер экрана] = | 
 |  | 
 | 
[число]» | 
 | 
[число]»  | 
 | 
[число](_)tft | 
После создания таких шаблонов каждой строке в прайсе мы получим заполненной такую структуру:
| CD-привод | 
DVD | 
| Диск | 
20 | 
| Марка | 
Armada | 
| Модификация | 
M700 | 
| ОС | 
W98 | 
| Память | 
128 | 
| Производитель | 
Compaq | 
| Размер экрана | 
14.1 | 
| Сетевая карта | 
Есть | 
| Тип процессора | 
PIII | 
| Частота процессора | 
850 | 
Таким образом, прайс-лист может быть преобразован в таблицу с параметрами товаров. Создание банка шаблонов для качественного покрытия данной категории товаров (ноутбуки) занимает несколько часов в визуальной оболочке Алекс.