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

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

Жанры

Язык программирования 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–сценарии

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

Гранит науки. Том 2

Зот Бакалавр
2. Героями не становятся, ими умирают
Фантастика:
фэнтези
5.00
рейтинг книги
Гранит науки. Том 2

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Эволюционер из трущоб. Том 6

Панарин Антон
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 6

Звездная Кровь. Экзарх I

Рокотов Алексей
1. Экзарх
Фантастика:
боевая фантастика
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Звездная Кровь. Экзарх I

Архонт росский

Мазин Александр Владимирович
17. Варяг
Фантастика:
попаданцы
5.00
рейтинг книги
Архонт росский

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Наследник с Меткой Охотника

Тарс Элиан
1. Десять Принцев Российской Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Наследник с Меткой Охотника

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

Кодекс Охотника. Книга XXV

Винокуров Юрий
25. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга XXV

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Играть... в тебя

Японский городовой

Зот Бакалавр
7. Героями не становятся, ими умирают
Фантастика:
фэнтези
попаданцы
5.80
рейтинг книги
Японский городовой

Эргоном: Восхождение берсерка

Глебов Виктор
2. Эргоном
Фантастика:
фэнтези
попаданцы
аниме
5.20
рейтинг книги
Эргоном: Восхождение берсерка