Мегаобучалка Главная | О нас | Обратная связь


Принцип работы HTML- конвертора



2020-02-03 221 Обсуждений (0)
Принцип работы HTML- конвертора 0.00 из 5.00 0 оценок




 

Рассмотрим в качестве примера следующее подмножество HTML-языка, которое может быть задано следующими определениями:

 

HTML-text :: = <HTML> HEAD BODY </HTML>

HEAD :: = TITLE{HEAD}| META{HEAD}| LINK{HEAD}…

TITLE :: = <TITLE> строка </TITLE>

META :: = <META name="KEYWORDS" content="строка">

KEYWORDS :: = …

BODY :: = <BODY> HTML-BODY </BODY>

HTML-BODY :: = PARAGRAPH{HTML-BODY} | TABLE {HTML-BODY} | LIST{HTML-BODY} | ANCHOR{HTML-BODY} | …

PARAGRAPH :: = <P> текст </P>

TABLE :: = <TABLE> TABLE-CELLS </TABLE>

TABLE-CELLS :: = STROKA{TABLE-CELLS} | …

STROKA :: = <TR> CELL </TR>

CELL :: = <TD> текст </TD>

LIST :: = <UL> LIST-ATOM </UL>

LIST-ATOM :: = …

ANCHOR :: = <A HREF=LINK> TEXT </A>

TEXT :: = …

LINK: = …

 

Синтаксическая диаграмма, соответствующая этим правилам выглядит следующим образом:

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

Для начала необходимо задать регулярное отображение каждого правила спецификации HTML-конструкций в соответствующий объект базы знаний на уровне фрейма-прототипа. Система таких прототипов даст нам описание языка, а множество фреймов-экземпляров – спецификацию конкретных и синтаксически правильных HTML-текстов. Основные правила такого отображения таковы:

- каждому концепту из левой части BNF-определения ставим в соответствие имя фрейма-прототипа;

- альтернативам из правой части BNF-определения при этом должны соответствовать имена слотов этого фрейма;

- для концептов-нетерминалов соответствующий слот должен иметь тип frame;

- для концептов-терминалов соответствующие слоты будут, как правило, иметь тип numb или string;

- рекурсия в BNF-определениях заменяется итерацией, а соответствующие слоты становятся множественными.

После применения данных правил к BNF-определениям языка HTML получим следующее множество фреймов-прототипов:

 

[html is_aprototype, if_added HTML();

HEADframe, restr_by head;

BODYframe, restr_by body ];

[head is_aprototype, if_added HEAD();

BODY{frame}, restr_by one_of {title, meta, …}];

[title is_aprototype, if_added TITLE();

BODYstring ];

[meta is_aprototype, if_added META();

BODYstring ];

………………….

[body is_aprototype, if_added BODY();

SENT{frame}, restr_by one_of {header, paragraph, table, …}];

[paragraph is_aprototype, if_added PARAGRAPH();

 [LIST is_aprototype; ATOM{frame}, if_added LI() ];

BODYframe, restr_by text];

[table is_aprototype; if_added TABLE();

TAB{frame}, restr_by one_of {stroka,…};]

[stroka is_aprototype, if_added TR();

CELLS{frame}, restr_by one_of{cell,…}];

[cell is_aprototype, if_added TD();];

……………………

[anchor is_aprototype;

BODYframe, restr_by text];

……………………

[link is_aprototype;

  URLframe, restr_by one_of {http,ftp,…}];

  MAILframe, restr_by mail];

[url is_alink; without_slot MAIL];

[http is_aurl, if_added HTTP();

SERVERstring;

DIR{string};

FILEstring];

[ftp is_aurl, if_added FTP();

SERVERstring;

DIR{string};

FILEstring];

…………………………

 

В соответствии с приведенными фреймами-прототипами и синтаксическими диаграммами, можно специфицировать процедурную часть конвертора как систему демонов, присоединенных к фреймам или к их слотам.

Спецификация одного из таких демонов представлена ниже на языке Java:

 

public class HTML extends FramePrototype {

HEAD head=null;

BODY body-null;

………….

String keyword;

 

Public void HTML (String name) {

Super (name);

keyword=getToken();

if (keyword.compareTo (“<HTML>”) = =0 {

  head = new HEAD (getNewName());

  body = new BODY (getNewName());

};

keyword = getToken ();

if (keyword.compareTo (“</HTML>”)= =0) return;

}

…………………

Public void (String nam) {

Super (name);

Keword=getToken();

If (keyword compareTo (“<BODY>”) = = 0 {

paragraph = new PARAGRAPH (getNewName());

header = new HEADER (getNewName());

table = new TABLE (getNewName());

};

keyword = getToken ();

if (keyword compareTo (“</BODY>”) = = 0) return;

}

…………………………..

}

 

По существу, такой демон является конструктором класса HTML, а запуск конвертора осуществляется с помощью оператора создания нового объекта этого класса:

HTML currPage = new HTML (get_new_name());

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

Получение полезной в дальнейшем базы знаний предполагает дальнейшую семантическую интерпретацию фреймового представления и построение в конечном счете семантической сети, отражающей смысл исходного Интернет – документа.


Список использованных источников:

 

1) Т.А. Гаврилова, В.Ф. Хорошевский «Базы знаний интеллектуальных систем», учебник, Санкт-Петербург, «Питер», 2001

2) www.citforum.ru

3) www.bur.oivta.ru

4) www.analyst.ru



2020-02-03 221 Обсуждений (0)
Принцип работы HTML- конвертора 0.00 из 5.00 0 оценок









Обсуждение в статье: Принцип работы HTML- конвертора

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (221)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)