Прайс-листы.
С помощью технологии 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 |
Таким образом, прайс-лист может быть преобразован в таблицу с параметрами товаров. Создание банка шаблонов для качественного покрытия данной категории товаров (ноутбуки) занимает несколько часов в визуальной оболочке Алекс.