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

на главную

Жанры

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

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

Слово мастера

Лисина Александра
11. Гибрид
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Слово мастера

Законы Рода. Том 3

Андрей Мельник
3. Граф Берестьев
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 3

Офицер Красной Армии

Поселягин Владимир Геннадьевич
2. Командир Красной Армии
Фантастика:
попаданцы
8.51
рейтинг книги
Офицер Красной Армии

Последний Паладин. Том 5

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

Я снова князь. Книга XXIII

Дрейк Сириус
23. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова князь. Книга XXIII

Антимаг его величества

Петров Максим Николаевич
1. Модификант
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Антимаг его величества

Личный аптекарь императора. Том 2

Карелин Сергей Витальевич
2. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 2

Дважды одаренный. Том IV

Тарс Элиан
4. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
7.00
рейтинг книги
Дважды одаренный. Том IV

Мой муж – чудовище! Изгнанная жена дракона

Терин Рем
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мой муж – чудовище! Изгнанная жена дракона

Барон не играет по правилам

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

Адепт

Листратов Валерий
4. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Адепт

Неудержимый. Книга XXX

Боярский Андрей
30. Неудержимый
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXX

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Лекарь Империи 7

Карелин Сергей Витальевич
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Лекарь Империи 7