Введение в пространства имёнЧасти документации модуля Qt XML предполагают, что вы знакомы с пространствами имён XML. Здесь мы представляем краткое введение; переходите к Соглашения, используемые в Qt XML документации, если вы уже знаете этот материал. Пространства имён - концепция, введённая в XML для того, чтобы позволить создание более модульной структуры. С их помощью в процессе обработки данных программное обеспечение может легко разрешить конфликты имен в XML документах. Рассмотрим следующий пример: <document> <book> <title>Practical XML</title> <author title="Ms" name="Eris Kallisti"/> <chapter> <title>A Namespace Called fnord</title> </chapter> </book> </document> Здесь мы видим три различных использования имени title. Если вы хотите обработать этот элемент, вы столкнётесь с проблемами, потому как каждый из titles должен отображаться по-разному - не смотря на то, что они имеют одно название. Решение заключается в том, чтобы отметить первый title как название кники, то есть использовать элемент title с пространством имён и отличить его от, например, названий главы и т.д.: <book:title>Practical XML</book:title> book в этом случае является префиксом prefix, обозначающий пространство имён. До того, как мы применим пространство имён к элементу или атрибуту, мы должны его объявить. Namespaces are URIs like http://www.example.com/fnord/book/. Это не означает, что данные должны быть доступны по данному адресу; URI используется просто для обеспечения уникальности имени. Мы объявляем пространство имён подобно атрибутам; строго говоря, они и являются являются атрибутами. To make for example http://www.example.com/fnord/ the document's default XML namespace xmlns we write xmlns="http://example.com/fnord/" To distinguish the http://www.example.com/fnord/book/ namespace from the default, we must supply it with a prefix: xmlns:book="http://example.com/fnord/book/" Подобным образом объявленное пространство имён может быть к именам элементов и атрибутов с помощью префикса и разделителя ":". Мы можем увидеть это в элементе book:title. Элемент с именем без префикса относится к пространству имён по умолчанию. Это правило не применяется для атрибутов: атрибут без префикса не принадлежит ни к одному из объявленных пространств имён XML. Атрибуты всегда принадлежат к "традиционным" именем элемента, в котором они появляются. "Традиционное" пространство имён не является пространством имён XML, оно просто означает, что все имена атрибутов одного элемента должны быть различны. Позже мы увидим, как применить пространство имён к атрибуту. Именно поэтому нет противоречий между атрибутом title (принадлежащий элементу author) и, например, элементом title в теге chapter. Давайте поясним это на примере: <document xmlns:book = 'http://example.com/fnord/book/' xmlns = 'http://example.com/fnord/' > <book> <book:title>Practical XML</book:title> <book:author xmlns:fnord = 'http://example.com/fnord/' title="Ms" fnord:title="Goddess" name="Eris Kallisti"/> <chapter> <title>A Namespace Called fnord</title> </chapter> </book> </document> В элементе document мы определили два пространства имён. The default namespace http://www.example.com/fnord/ applies to the book element, the chapter element, the appropriate title element and of course to document itself. The book:author and book:title elements belong to the namespace with the URI http://www.example.com/fnord/book/. Два атрибута book:author (title и name) не имеют присвоенных пространств имён XML. Они являются частью "традиционного" пространства имён элемента book:author, это означает, что, например, использование двух атрибутов title в book:author запрещено. In the above example we circumvent the last rule by adding a title attribute from the http://www.example.com/fnord/ namespace to book:author: the fnord:title comes from the namespace with the prefix fnord that is declared in the book:author element. Очевидно, что пространство имён fnord имеет то же URI, что и пространство имён по умолчанию. Итак, почему мы просто не используем пространство имён по умолчанию, которое мы объявили? Ответ на этот вопрос довольно сложен:
Благодаря классам Qt XML элементы и атрибуты могут быть доступны двумя способами: с помощью ссылки по полному имени, содержащим префикс пространства имён и "реальное" имя (или локальное имя), или с помощью комбинации локального имени и URI пространства имён. Больше информации о пространствах имён XML вы можете найти на http://www.w3.org/TR/REC-xml-names/. Соглашения, используемые в Qt XML документацииСледующие утверждения используются для разделения частей имён в контексте пространств имён:
Элементы без ":" (например, chapter в примере) не имеют префикса пространства имён. В этом случае локальное и полное имя совпадают (т.е. равны chapter). Смотрите также Пример "DOM Bookmarks" и Пример "SAX Bookmarks". |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |