Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

Средства работы с языками структурной разметки

Модули, описанные в этой главе, предоставляют средства для работы с различными языками структурной разметки: SGML (Standard Generalized Markup Language, стандартный язык обобщенной разметки), HTML (Hypertext Markup Language, язык разметки гипертекста) и XML (Extensible Markup Language, расширяемый язык разметки).

sgmllib

htmllib

htmlentitydefs

xml.parsers.expat

xml.sax

xml.sax.handler xml.sax.saxutils

Минимальные средства работы с SGML (то, что необходимо для обработки HTML).

Обработка HTML-документов.

Определения сущностей HTML.

Быстрая обработка XML-документов (без проверки на соответствие DTD) с помощью библиотеки Expat языка C.

SAX2 интерфейс к синтаксическим анализаторам XML-документов.

Базовые классы для обработчиков SAX-событий.

Вспомогательные средства для приложений, использующих SAX.

xml.sax.xmlreader Интерфейс объектов, реализующих преобразование XML-

документов в поток SAX-событий.

xmllib

Обработка XML-документов.

29.1 sgmllib - обработка SGML-документов

Этот модуль определяет класс SGMLParser, реализующий обработку текста в формате SGML (Standard Generalized Markup Language, стандартный язык обобщенной разметки). На самом деле он воспринимает только ту часть синтаксиса SGML, которая используется в HTML (модуль sgmllib служит базой для модуля htmllib).

SGMLParser()



reset ()

Возвращает экземпляр в исходное состояние. Все необработанные данные теряются. Этот метод неявно вызывается при инициализации.

setnomoretags()

Останавливает обработку тегов. Весь последующий текст воспринимается без обработки (CDATA). Этот метод необходим для реализации обработки тега

<PLAINTEXT> в HTML.

setliteral()

Временно приостанавливает обработку тегов. Последующий текст воспринимается без обработки (CDATA).

feed(data)

Передает экземпляру размеченный текст data для обработки. Обрабатываются только завершенные данные, остальное остается в буфере до тех пор, пока не будет передана следующая порция данных или не будет вызван метод close() .

close()

Завершает обработку всех данных в буфере. Вы можете переопределить этот метод в производном классе, добавив дополнительные действия. Переопределенный метод всегда должен вызывать исходную версию метода.

get starttag text()

Возвращает текст последнего открывающего тега. Этот метод может быть полезен для регенерации исходного размеченного текста с минимальными изменениями.

handle starttag(tag, method, attributes)

Вызывается для обработки открывающих тегов, для которых определен метод start tag() или do tag (). Аргумент tag является строкой с именем тега, приведенном к нижнему регистру, method - метод, который должен быть вызван для интерпретации открывающего тега. Атрибут attributes является списком пар ( name, value) для всех атрибутов, найденных внутри угловых скобок тега, где name - имя атрибута, приведенное к нижнему регистру, и value - его значение. Исходная реализация этого метода вызывает method( attributes) .

Возвращает объект, реализующий обработку текста в формате SGML. Воспринимаются следующие конструкции:

•Открывающие и закрывающие теги в виде <тег атрибут=" значение"... и </тег> соответственно.

•Ссылки на символы в виде &#код;.

•Ссылки на сущности (entity) в виде &имя;.

•Комментарии в виде <!--текст-->.

Экземпляры класса SGHLParser имеют следующие интерфейсные методы (переопределяя эти методы в производных классах, Вы контролируете обработку размеченного текста, то есть, определяете тип документа - DTD):



29.1. sgmllib - обработка SGML-документов 385

handle endtag( tag, method)

Вызывается для обработки закрывающих тегов, для которых определен метод end tag() . Аргумент tag является строкой с именем тега, приведенном к нижнему регистру, method - метод, который должен быть вызван для интерпретации закрывающего тега. Исходная реализация этого метода просто вызывает method() .

handle data( data)

Вызывается для обработки простого текста. Вам следует переопределить его в производном классе: исходная реализация ничего не делает.

handle charref(ref)

Вызывается для обработки ссылок на символы в виде &#ref;. Исходная реализация преобразует число в диапазоне от 0 до 255 в символ с помощью встроенной функции chr() и вызывает с ним метод handle data() . Если аргумент ref неверен или выходит за пределы указанного диапазона, вызывает unknown charref(ref) для обработки ошибки.

handle entityref( ref)

Вызывается для обработки ссылок на сущности в виде &ref;. Исходная реализация использует атрибут экземпляра (или класса) entitydefs , являющийся отображением имен сущностей к строкам. Если это отображение содержит запись с ключом ref, вызывает метод handle data() с результатом в качестве аргумента, в противном случае вызывает unknown entityref(ref). По умолчанию атрибут entitydefs содержит записи с ключами amp, apos, gt, lt и quot.

handle comment( comment )

Вызывается для обработки комментария. В качестве аргумента comment используется строка с текстом, содержащимся между <!-- и -->. Исходная реализация ничего не делает.

report unbalanced( tag)

Этот метод вызывается, если в размеченном тексте найден закрывающий тег tag, для которого не было открывающего тега.

unknown starttag( tag)

Вызывается для обработки неизвестного открывающего тега (если нет соответствующего метода start tag() или do tag() ). Вам следует переопределить этот метод в производном классе: исходная реализация ничего не делает.

unknown endtag( tag)

Вызывается для обработки неизвестного закрывающего тега (если нет соответствующего метода end tag ()). Вам следует переопределить этот метод в производном классе: исходная реализация ничего не делает.

unknown charref( ref)

Вызывается для обработки неверной ссылки на символ в виде &#ref; (см. описание метода handle charref() ). Вам следует переопределить этот метод в производном классе: исходная реализация ничего не делает.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145