Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
104-155.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
122.82 Кб
Скачать

Атаулар кеңістігі

XML-дің тағы да бір ерекшелігі – атаулар кеңістігі болып табылады. Олар әртүрлі схемалардың кесектерінен XML-құжаттарын құрауға мүмкіндік береді. Мысалы, осылайша, барлық HTML элементтерінің ерекше кеңістік аттарына тиесілігін көрсетіп, XML-құжатна HTML кесегін қосуға болады.

XML-кодының келесі мысалы кеңістік атауының синтаксисін көрсетеді (foaf.rdf файлы):

<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF

xmlns:dc="http://http://purl.org/dc/elements/1.1/"

xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"

xmlns:foaf="http://xmlns.com/foaf/0.1/"

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

>

<rdf:Description rdf:nodeID="_:jCBxPziO1">

<foaf:nick>donna</foaf:nick>

<foaf:name>Donna Fales</foaf:name>

<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>

</rdf:Description>

</rdf:RDF>

Ескерту:

Мысал WWW технолгогиясын жасаушыларымен, Тимом Бернерс-Ли бастауындағы құрастырушылар командасымен құрылған cwm пакетінен алынған. Айтпақшы, cwm-де Python тілімен жазылған. cwm пакеті, Тимом Бернерс-Ли-дің ықпалындағы, семантикалық желідегі-жаңа идеялар үшін жалпы мақсаттағы деректерді өңдеуге қызмет етеді.

Кеңістік аттарының атауы префикстердің элементтердің атауы түрінде жүреді. Бұл атаулар жай ғана ат емес. Олар URI (Universal Resource Locator, әмбебап ресурстарын көрсетуші) түрінде берілуі керек идентификаторымен сәйкес. Жоғарыда келтірілген мысалда бес кеңістік атауы аталған (xmlns, dc, rdfs, foaf и rdf), оның ішінде тек біріншісі жарнамалау қажет етпейді, өйткені қондырылған болып табылады. Және нақты түрде үшеуі ғана қолданылған: (xmlns, foaf және rdf).

Кеңістік аты XML-құжатынан түрлі схемаларға жататын бөліктерін бөлуге мүмкіндік береді.

Xml пакетінде кеңістік аттарының механизімін түсінетін әдістер бар. Әдетте бұндай әдістер және атрибуттар өздерінің аттарында NS әріптері болады.

Осы элементтің кеңістік атымен сәйкес келетін URI-ді namespaceURI атрибутының көмегімен алуға болады.

Келесі мысалда URI элементтері жазылуда:

import xml.dom.minidom

dom = xml.dom.minidom.parse("ex.xml")

def output_ns(node):

if node.nodeType == node.ELEMENT_NODE:

print node.nodeName, node.namespaceURI

for child in node.childNodes:

output_ns(child)

output_ns(dom)

Нәтижесінде:

rdf:RDF http://www.w3.org/1999/02/22-rdf-syntax-ns#

rdf:Description http://www.w3.org/1999/02/22-rdf-syntax-ns#

foaf:nick http://xmlns.com/foaf/0.1/

foaf:name http://xmlns.com/foaf/0.1/

rdf:type http://www.w3.org/1999/02/22-rdf-syntax-ns#

Ескеретіні, кеңістік атауынның нұсқауы тек элементтер атауы үшін ғана емес, сонымен қатар атрибуттарғада жасалуы мүмкін.

Қорытынды

Бұл дәрісте үш жеткілікті таратылған мәтіндік ақпараттарды өңдеудің нұсқалары қарастырылды: CSV, Unix mailbox және XML. Әрине деректер форматы, тіпті мәтінде негізделген ойдағыдан көп, алайда ұсынылған мәліметтер, форматты өңдеу үшін немесе басқалары түсінетіндей өз модулін құрастыруын кез келген модулмен тез ұғынуға көмектеседі.

#8-дәріс: Web-қосымшаларын әзірлеу

Web-қосымшалары арқылы HTML және XML құжаттарының басқаруындағы стандартты www-браузерімен жұмыс істейтін негізгі пайдаланушы интерфейсінің бағдарламасын түсінуге болады. Қолданушы интерфейсінің сапасын жақсарту үшін көбіне JavaScript қолданылады, алайда бұл интерфейс әмбебаптылығын бірнеше төмендетеді. Ескере кететіні интерфейсті java немесе Flash-апплеттерінде құруға болады, алайда бұндай қосымшаларды web-қосымшалары деп атау қиындық тудырады, өйткені, сервермен байланысу үшін java немесе Flash өздерінің хаттамаларын қолдана алады, яғни HTTP хаттамасы WWW үшін стандартты емес байланыс қолданылады.

Web-қосымшаларын құру кезінде Пішінін (сыртқы түрін,стилін), Мазмұнын және Деректерді өңдеу логикасын бөлуге тырысады. Web-сайттарды құрудың заманауи технологиялары бұл идеалға жеткілікті түрде жетуге мүмкіндік береді. Дегенмен, тіпті көп деңгейлі қосымшаларды қолданбай-ақ басқа екеуін тиіспейтін (немесе жуық тимей(не затрагивая)), бұлардың кез келген аспектін өзгертуге мүмкіндік беретін стилін ұстануға болады. Бұл тақырыптың жалғасын бағдарламалау ортасына арналған бөлімде танысуға болады.

CGI-сценарилер

WWW үшін қосымшаларды құрудың классикалық жолы – CGI-сценарилерін жазу болып табылады (кейде – скриптер деп те аталады). CGI (Common Gateway Interface, жалпы шлюзді интерфейс) – бұл сыртқы қосымшалармен сервердің өзара әрекеттесуін реттейтін стандарт. WWW жағдайда, веб-сервер нақты сценариге генерациялық бетті жасау үшін сұрау жіберуі мүмкін. Бұл сценарий веб-серверден мәліметтердің кірісін алып (ол өз кезегінде оны қолданушыдан алуы мүмкін), дайын обьектіні жинақтайды (сурет, аудио мәліметтер, стилдер кестелері және тағы басқа)

Сценарийді шақырған кезде веб-сервер стандартты енгізу арқылы оған ақпаратты тасымалдайды, айнымалылар ортасы және, ISINDEX үшін пәрмен жолы аргументтері арқылы (олар sys.argv арқылы қол жетімді.).

Толтырылған браузердегі веб-сервер формасының (және CGI-сценарий) екі негізгі мәліметтерді жіберудің әдістері – GET және POST. Әдіске байланысты мәліметтер әр түрлі жіберіледі. Бірінші жағдайда олар тікелей URL-ге кодталады және орналастырылады, мысалы http://host/cgibin/a.cgi?a=1&b=3. Сценарий оларды QUERY_STRING айнымалы ортасының атымен алады. POST әдісі жағдайында олар стандартты енгізуге жіберіледі.

Сценарийлер дұрыс жұмыс істеуі үшін осы каталог үшін арналған веб-серверде (әдетте ол cgi-bin деп аталады) немесе, егер бұл сервер конфигурациясымен рұқсат етілген болса, HTML құжатының кез келген жерінде орналасады. Сценарийдің орындалатын белгісі болуы тиіс. Unix жүйесінде оны chmod a+x командасы арқылы орнатуға болады.

Келесі қарапайым сценарий os.environ сөздігінен мәнін шығарады және оған не жіберілгенін көруге мүмкіндік береді.

#!/usr/bin/python

import os

print """Content-Type: text/plain

%s""" % os.environ

Оның көмегімен веб-сервермен орнатылған айнымалылар ортасын көруге болады. web-серверге CGI-сценарий берілген файл тақырыпша бөлімін қамтиды, мұнда мета-ақпаратпен берілген өріс көрсетілген (мазмұн түрі, құжаттың соңғы жаңартылған уақыты, кодтау және т.б.).

Негізгі айнымалылар ортасы сценарийлер жасау үшін жеткілікті:

QUERY_STRING

Сұрау жолы.

REMOTE_ADDR

Клиент IP-адресі.

REMOTE_USER

Клиент аты (егер ол табылған болса).

SCRIPT_NAME

Сценарий аты.

SCRIPT_FILENAME

Сценариймен берілген файл аты.

SERVER_NAME

Сервер аты.

HTTP_USER_AGENT

Браузер клиентінің атауы.

REQUEST_URI

(URI) жолдар сұрауы.

HTTP_USER_AGENT

Сервер аты.

HTTP_ACCEPT_LANGUAGE

Қажетті құжат тілі.

CGI-сценарийіндегі os.environ сөздігі қамтиды:

{

'DOCUMENT_ROOT': '/var/www/html',

'SERVER_ADDR': '127.0.0.1',

'SERVER_PORT': '80',

'GATEWAY_INTERFACE': 'CGI/1.1',

'HTTP_ACCEPT_LANGUAGE': 'en-us, en;q=0.50',

'REMOTE_ADDR': '127.0.0.1',

'SERVER_NAME': 'rnd.onego.ru',

'HTTP_CONNECTION': 'close',

'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; U; Linux i586; en-US;

rv:1.0.1) Gecko/20021003',

'HTTP_ACCEPT_CHARSET': 'ISO-8859-1, utf-8;q=0.66, *;q=0.66',

'HTTP_ACCEPT': 'text/xml,application/xml,application/xhtml+xml,

text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,

image/gif;q=0.2,text/css,*/*;q=0.1',

'REQUEST_URI': '/cgi-bin/test.py?a=1',

'PATH': '/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin',

'QUERY_STRING': 'a=1&b=2',

'SCRIPT_FILENAME': '/var/www/cgi-bin/test.py',

'HTTP_KEEP_ALIVE': '300',

'HTTP_HOST': 'localhost',

'REQUEST_METHOD': 'GET',

'SERVER_SIGNATURE': 'Apache/1.3.23 Server at rnd.onego.ru Port 80',

'SCRIPT_NAME': '/cgi-bin/test.py',

'SERVER_ADMIN': 'root@localhost',

'SERVER_SOFTWARE': 'Apache/1.3.23 (Unix) (Red-Hat/Linux)

mod_python/2.7.8 Python/1.5.2 PHP/4.1.2',

'SERVER_PROTOCOL': 'HTTP/1.0',

'REMOTE_PORT': '39251'

}

Келесі CGI-сценарийі қара шаршыны береді (суреттерді өңдеу үшін онда Image модулі қолданылады):

#!/usr/bin/python

import sys

print """Content-Type: image/jpeg

"""

import Image

i = Image.new("RGB", (10,10))

i.im.draw_rectangle((0,0,10,10), 1)

i.save(sys.stdout, "jpeg")

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]