Тақырыпша өрісін талдау
Төменде келтірілген мысалда Subject өрісі email.Header.make_header() көмегімен қалыптасты. Өрісті талдау үшін басқа функция өткізуге көмектеседі: email.Header.decode_header (). Бұл функция тізім кортежін қайтарады, берілген мәтін бойынша, олардың әр қайсысында мәтін өрісінің бөлігі және кодтау көрсетілген. Келесі мысалда бұған түсініктеме келтірілген:
subj = """=?koi8-r?Q?=FC=D4=CF_=D0=D2=C9=CD=C5=D2_=CF=DE=C5=CE=D8_=C4=CC=C9?=
=?koi8-r?Q?=CE=CE=CF=C7=CF_=28164_bytes=29_=D0=CF=CC=D1_=D3_=D4?=
=?koi8-r?Q?=C5=CD=CF=CA_=D3=CF=CF=C2=DD=C5=CE=C9=D1=2E_=EF=CE=CF_?=
=?koi8-r?Q?=D2=C1=DA=C2=C9=CC=CF=D3=D8_=CE=C1_=CB=D5=D3=CB=C9_=D7?=
=?koi8-r?Q?_=D3=CF=CF=C2=DD=C5=CE=C9=C9=2C_=CE=CF_=CC=C5=C7=CB=CF?=
=?koi8-r?Q?_=D3=CF=C2=C9=D2=C1=C5=D4=D3=D1_=D7_=D4=C5=CB=D3=D4_?=
=?koi8-r?Q?=D3_=D0=CF=CD=CF=DD=D8=C0_email=2EHeader=2Edecode=5Fheader?=
=?koi8-r?Q?=28=29?="""
import email.Header
for text, enc in email.Header.decode_header(subj):
print enc, text
Нәтижесінде:
koi8-r Бұл хабарлама тақырыбымен берілген өте ұзын (164 bytes) өрістің мысалы. Ол хабарлама бөліктеріне бөлінген, бірақ email.Header.decode_header ( ) көмегімен мәтінге тез жинақталады.
Айта кететіні, көрсетпеседе болады:
>>> email.Header.decode_header("simple text")
[('simple text', None)]
>>> email.Header.decode_header("пример")
[('\xd0\xd2\xc9\xcd\xc5\xd2', None)]
>>>email.Header.decode_header("=?KOI8-R?Q?=D0=D2=CF_?=Linux")
[('\xd0\xd2\xcf ', 'koi8-r'), ('Linux', None)]
Егер бірінші жағдайда us-ascii тұспалдауға болатын болса, онда екінші жағдайда кодтау жайында аңғару керек болады: міне осыған байланысты электронды хатта жайдан жай сегіздік кодтауды қолдануға болмайды. Үшінші мысалда орысша әріптер кодталған, ал латынша – кодталмаған, сондықтан email.Header.decode_header() нәтижесінде екі жұп тізімі.
Жалпы жағдайда хабарлама өрісін тек Unicode-та ұсынуға болады. Осындай түрлендіру үшін функция құру жаттығу ретінде ұсынылады.
XML тілі
Бір дәрістің ішінде XML не екенін түсіндіру қиын және онымен қалай жұмыс істеу керек екені де. Мысалда стандартты жеткізілуіне кіретін xml пакеті қолданылады.
XML (Extensible Markup Language, Кеңейтілген Белгілеу Тілі) әр түрлі өндіруші қосымшаларының арасында өзара байланысын реттеуге, сақтауға және күрделі құрылымдық деректерді өңдеуге ұшыратуға мүмкіндік береді.
XML тілі (HTML сияқты) SGML-дің ішкі жиыны болып табылады, бірақ оның қолданылуы WWW жүйесімен шектелмеген. XML – де нақты тақырып шегі үшін өзінің тегтер жинағын құруға болады. XML – де мәліметтер қорын өңдеуді және білімді, обьекттер арасында өзара байланысты хаттамаларын, ресурстар сипаттамасын және т.б. сақтауға және таратуға болады.
Жаңа үйренушілерге әр кезде түсінікті емес: дәл сол мәліметтерді сақтау үшін өзіңнің компакті форматын құруға болатын болса, неге осындай жеткілікті көпсөзді форматты мейілінше қолдану керек. XML ерекшелігі, ол мәліметтер мен қоса контекстік ақпаратты сақтайды: тегтер және олардың атрибуттарының аттары болады. Сондай-ақ, XML бүгінде – біріңғай ортақ стандарт.
XML – құжаттары ресми-дұрыс (well-formed) жәнежарамды (valid) болады. Жарамды XML – құжат – бұл құжат түрін жарнамалау (DTD, Document Type Definition) тұратын ресми-дұрыс XML – құжаты. Құжат түрін жарнамалау XML-дегі мәтін құжаты қанағаттандыратын грамматика ұсынады. Баяндаманың қарапайымдылығы үшін мұнда DTD қарастырылмайды, мүмкіндігінше ресми-дұрыс құжатымен шектеледі.
Әріптер мен басқа да XML таңбаларын ұсыну үшін Unicode пайдаланады, ол әртүрлі әліпбилердің таңбаларын ұсына отырып мәселелерді қысқартады. Дегенмен бұл жағдайды есте сақтау керек және XML-де сегіздік кодтауды қолданбау керек.
Келесі XML-құжатының жеткілікті қарапайым мысалы бұл формат жайлы көрініс береді (expression.xml файлы):
<?xml version="1.0" encoding="iso-8859-1"?>
<expression>
<operation type="+">
<operand>2</operand>
<operand>
<operation type="*">
<operand>3</operand>
<operand>4</operand>
</operation>
</operand>
</operation>
</expression>
XML-құжаты әр кезде ағаш құрылымына ие, түбірінде өзі құжат. Оның бөліктері, салынған тегтер жұбымен сипатталған, тарамдар қалыптастырады. Осылайша, ағаш қабырғасы “тікелей тіркеме” білдіреді. Тег атрибуттарын жапырақтары деп санауға болады. Сонда шығатыны құжат ағаш құрылымына ие.
Ескерту:
Ескере кететіні, HTML-ден ерекшелігі, XML-де жалғыз (жұп емес) тегтер қиғаш сызықпен: <BR/>, ал атрибуттар – тырнақшаға алынып жазылады. XML-де тегтер атауындағы және атрибуттағы әріптер регистрі мәнге ие.