Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

Удалить атрибут oldAttr (задан в виде объекта–узла).

Листинг

setAttribute(attname, value)

Устанавливает значение атрибута attname равным строке value.

Листинг

setAttributeNode(newAttr)

Добавляет новый узел–атрибут к элементу. Старый атрибут заменяется, если имеет то же имя.

Здесь стоит заметить, что атрибуты в рамках элемента повторяться не должны. Их порядок также не важен с точки зрения информационной модели XML.

В качестве упражнения предлагается составить функцию, которая будет вычислять значение выражения, заданного в XML–представлении.

Пространства имен

Еще одной интересной особенностью XML, о которой нельзя не упомянуть, являются пространства имен. Они позволяют составлять XML–документы из кусков различных схем. Например, таким образом в XML–документ можно включить кусок HTML, указав во всех элементах 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>

Примечание:

Пример позаимствован из пакета cwm, созданного командой разработчиков во главе с Тимом Бернерс–Ли, создателем технологии WWW. Кстати, cwm тоже написан на Python. Пакет cwm служит обработчиком данных общего назначения для семантической сети — новой идеи, продвигаемой Тимом Бернерс–Ли. Коротко суть идеи состоит в том, чтобы сделать современный «веб» много полезнее, формализовав знания в виде распределенной базы XML–документов, по аналогии с тем как WWW представляет собой распределенную базу документов. Отличие глобальной семантической сети от WWW в том, что она даст машинам возможность обрабатывать знания, делая логические выводы на основании заложенной в документах информации.

Названия пространств имен следуют в виде префиксов к названиям элементов. Эти названия — не просто имена. Они соответствуют идентификаторам, которые должны быть заданы в виде URI (Universal Resource Locator, универсальный указатель ресурса). В примере выше упоминаются пять пространств имен (xmlns, dc, rdfs, foaf и rdf), из которых только первое не требует объявления, так как является встроенным. Из них реально использованы только три: (xmlns, foaf и rdf).

Пространства имен позволяют выделять из XML–документа части, относящиеся к различным схемам, что важно для тех инструментов, которые интерпретируют 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#

Следует заметить, что указание пространства имен может быть сделано для имен не только элементов, но и атрибутов.

Подробнее узнать о работе с пространствами имен в xml–пакетах для Python можно из документации.

Заключение

В этой лекции были рассмотрены варианты обработки текстовой информации трех достаточно распространенных форматов: CSV, Unix mailbox и XML. Конечно, форматов данных, даже основанных на тексте, гораздо больше, однако то, что было представлено, поможет быстрее разобраться с любым модулем для обработки формата или построить свой модуль так, чтобы другие могли понять ваши намерения.

8. Лекция: Разработка Web–приложений.

Одна из главных сфер применения языка Python — web–приложения — представляется в этой лекции на конкретных примерах. Кроме того, делается акцент на типичных слабых местах безопасности web–приложений.

Под web–приложением будет пониматься программа, основной интерфейс пользователя которой работает в стандартном WWW–браузере под управлением HTML и XML–документов. Для улучшение качества интерфейса пользователя часто применяют JavaScript, однако это несколько снижает универсальность интерфейса. Следует заметить, что интерфейс можно построить на Java–или Flash–апплетах, однако, такие приложения сложно назвать web–приложениями, так как Java или Flash могут использовать собственные протоколы для общения с сервером, а не стандартный для WWW протокол HTTP.

При создании web–приложений стараются отделить Форму (внешний вид, стиль), Содержание и Логику обработки данных. Современные технологии построения web–сайтов дают возможность подойти достаточно близко к этому идеалу. Тем не менее, даже без применения многоуровневых приложений можно придерживаться стиля, позволяющего изменять любой из этих аспектов, не затрагивая (или почти не затрагивая) двух других. Рассуждения на эту тему будут продолжены в разделе, посвященном средам разработки.

CGI–сценарии

Поделиться:
Популярные книги

Спецоперации

Судоплатов Павел Анатольевич
Документальная литература:
биографии и мемуары
8.10
рейтинг книги
Спецоперации

Дом с призраками. Английские готические рассказы

Диккенс Чарльз
Проза:
классическая проза
7.70
рейтинг книги
Дом с призраками. Английские готические рассказы

Конфликт чести. Агент перемен. Лови день

Ли Шарон
Золотая библиотека фантастики
Фантастика:
боевая фантастика
6.25
рейтинг книги
Конфликт чести. Агент перемен. Лови день

Беспощадный. Не русские идут

Головачев Василий Васильевич
3. Большая серия русской фантастики
Фантастика:
боевая фантастика
5.00
рейтинг книги
Беспощадный. Не русские идут

Предательство Борна

ван Ластбадер Эрик
5. Джейсон Борн
Детективы:
шпионские детективы
7.57
рейтинг книги
Предательство Борна

История Древнего мира. От истоков Цивилизации до падения Рима

Бауэр Сьюзен Уайс
Страницы истории
Научно-образовательная:
история
5.00
рейтинг книги
История Древнего мира. От истоков Цивилизации до падения Рима

Сказки и истории

Андерсен Ганс Христиан
Проза:
классическая проза
6.60
рейтинг книги
Сказки и истории

Маленькая женщина Большого

Зайцева Мария
5. Наша
Любовные романы:
эро литература
современные любовные романы
5.40
рейтинг книги
Маленькая женщина Большого

Барбаросса

Пикуль Валентин Саввич
Проза:
историческая проза
8.88
рейтинг книги
Барбаросса

Ермак

Федоров Евгений Александрович
Проза:
историческая проза
6.25
рейтинг книги
Ермак

Контрольный поцелуй

Донцова Дарья
8. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
9.15
рейтинг книги
Контрольный поцелуй

Полное собрание стихотворений

Брюсов Валерий Яковлевич
Поэзия:
поэзия
7.00
рейтинг книги
Полное собрание стихотворений

Рассвет русского царства 3

Грехов Тимофей
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Рассвет русского царства 3

История Украины

Коллектив авторов
Научно-образовательная:
история
5.00
рейтинг книги
История Украины