Описание класса QXmlName
|
QXmlName () | |
QXmlName ( QXmlNamePool & namePool, const QString & localName, const QString & namespaceURI = QString(), const QString & prefix = QString() ) | |
bool | isNull () const |
QString | localName ( const QXmlNamePool & namePool ) const |
QString | namespaceUri ( const QXmlNamePool & namePool ) const |
QString | prefix ( const QXmlNamePool & namePool ) const |
QString | toClarkName ( const QXmlNamePool & namePool ) const |
bool | operator!= ( const QXmlName & other ) const |
QXmlName & | operator= ( const QXmlName & other ) |
bool | operator== ( const QXmlName & other ) const |
QXmlName | fromClarkName ( const QString & clarkName, const QXmlNamePool & namePool ) |
bool | isNCName ( const QString & candidate ) |
uint | qHash ( const QXmlName & name ) |
Класс QXmlName представляет имя XML узла, действительное при применении пространств имён.
QXmlName представляет имя XML узла таким образом, чтобы это было наиболее эффективно и безопасно в плане сопоставления имён. Обычно XML узел представляет XML элемент или атрибут, но QXmlName может также представлять имена других типов узлов, таких как QAbstractXmlReceiver::processingInstruction() и QAbstractXmlReceiver::namespaceBinding().
Имя XML узла включает в себя три компонента: URI пространства имён, локальное имя и префикс. Чтобы посмотреть, как это выглядит в XML, рассмотрим следующий пример.
<book xmlns:dc='http://purl.org/dc/elements/1.1' xmlns='http://example.com/MyDefault'> <dc:title>Mobey Dick</dc:title> ... </book>
Для элемента с именем book, localName() вернёт book, namespaceUri() вернёт http://example.com/MyDefault, а prefix() вернёт пустую строку. Для элемента с именем title, localName() вернёт title, namespaceUri() вернёт http://purl.org/dc/elements/1.1, а prefix() вернёт dc.
Для уверенности в том, что операции с QXmlName, т.е. копирование и сравнение имён, являются эффективными, каждое представление QXmlName ассоциировано с пулом имён, который должен быть определён во время создания QXmlName. Три компонента QXmlName, т.е. URI пространства имён, локальное имя и префикс, хранятся в пуле имён со связанными с ними идентификаторами, потому могут быть использованы совместно несколькими объектами. Поэтому единственным способом создания правильного объекта QXmlName является использование конструктора класса, где должны быть определены пул имён, локальное имя, URI пространства имён и префикс.
Помните, что конструктор по умолчанию QXmlName создаёт пустую сущность. Он обычно используется для заполнения неиспользованных мест в коллекциях QXmlName.
Побочный эффект создания ассоциации каждого объекта QXmlName с пулом имён состоит в том, что каждый объект QXmlName связан с QXmlNamePool, который при этом создаётся. Вместе с тем, класс QXmlName не отслеживает имя пула имён, потому все функции доступа, т.е. namespaceUri(), prefix(), localName() и toClarkName(), требуют, чтобы им было передано правильное имя пула. Ошибка при получении правильного имени из пула функциями доступа вызывает неопределённое поведение.
Помните, что пул имён не является пространством имён XML. Один пул имён может представлять сущности QXmlName различных пространств имён XML, а объекты QXmlName из одного пространства имён XML могут быть распределены по разным пулам имён.
Для определения, на что ссылается QXmlName, используются URI пространства имён и локальное имя. Префикс не используется, так как является просто коротким именем обычно длинного URI пространства имён. Префикс также не используется для сравнения имён. Например, следующие два элемента представляют один узел и при сравнении будут равны.
<svg xmlns="http://www.w3.org/2000/svg"/>
<x:svg xmlns:x="http://www.w3.org/2000/svg"/>
Несмотря на то, что второе имя имеет префикс x, два имени при сравнении в качестве объектов QXmlName будут равны, так как префикс при этом не учитывается.
Локальное имя никогда не может быть пустой строкой, в отличие от префикса и URI пространства имён. Если префикс не пустой, то и URI пространства имён не может быть пустым. Локальные имена и префиксы должны быть правильными NCNames, т.е. abc.def или abc123.
QXmlName представляет то, что иногда называют расшиненное QName или просто QName.
Смотрите также Пространства имён в XML 1.0 (Вторая редакция), [4] NCName.
Создаёт неинициализированный QXmlName. Для создания валидного QXmlName, вы обычно используете другой конструктор, который принимает name pool, URI пространства имён, локальное имя и префикс в качестве параметров. Но вы также можете использовать и этот конструктор для создания нулевого QXmlName, а затем ассоциировать уже созданных QXmlName с текущим.
Смотрите также isNull().
Создаёт объект QXmlName, который вставляет localName, namespaceURI и prefix в namePool, если их ещё там нет. Функции доступа namespaceUri(), prefix(), localName() и toClarkName() используются в namePool, потому namePool должен оставаться в той области видимости, где эти функции доступа могут быть использованы. Однако две сущности могут быть сравнены с == или != и копированы без namePool.
Пользователь гарантирует, что компоненты строки валидны для QName. В частности, локальное имя и префикс (если есть) должны быть валидными NCNames. Функция isNCName() может быть использована для проверки этих имён. URI пространства имён должен быть абсолютным URI. QUrl::isRelative() может быть использована для проверки, является ли URI абсолютным или относительным. В итоге, если URI не предоставляется, префикс не является валидным.
namePool не копируется. И не является ссылкой для хранения в этой сущности. Текущий конструктор вставляет три строки в namePool.
Конвертирует clarkName в QXmlName, вставляет в namePool и возвращает его.
Clark name - это способ представления полного имени QName с помощью только в одной строки, где пространство имён не может содержать скобок. Вот пара примеров:
Clark Name | Описание |
---|---|
html | Локальное имя html вне пространства имён |
http://www.w3.org/1999/xhtmlhtml | Локальное имя html в пространстве имён XHTML |
http://www.w3.org/1999/xhtmlmy:html | Локальное имя html в пространстве имён XHTML с префиксом my |
Если пространство имён содержит скобки, то возвращаемое значение является либо недопустимым, либо имеет неопределённое содержимое.
Если clarkName является недопустимым именем, то возвращается созданный по умолчанию QXmlName.
Эта функция была введена в Qt 4.5.
Смотрите также toClarkName().
Возвращает true, если candidate является NCName. NCName - это строка, которая может быть использована как имя XML и XQuery, т.е. префикс или локальное имя в элементе или атрибуте или имя переменной.
Смотрите также Пространства имён в XML 1.0 (Вторая редакция), [4] NCName.
Возвращает true, если текущий QXmlName не инициализирован валидной комбинацией namespace URI, local name и prefix.
Всегда требуется валидное локальное имя. Префикс и URI пространства имён могут быть пустыми, но префикс не может быть пустым, если URI таковым не является. Локальные имена и префиксы должны быть правильными NCNames, т.е. abc.def или abc123.
Возвращает локальное имя.
Для повышения эффективности помните, что строка локального имени хранится не в QXmlName, а в QXmlNamePool, куда она была передана при создании. Таким образом, тот же namePool должен быть использован этой функцией, потому может быть использован для поиска локального имени.
Возвращает URI пространства имён.
Для повышения эффективности помните, что строка URI пространства имён хранится не в QXmlName, а в QXmlNamePool, куда она была передана при создании. Таким образом, тот же namePool должен быть использован этой функцией, потому может быть использован для поиска URI пространства имён.
Возвращает префикс.
Для повышения эффективности помните, что строка префикса хранится не в QXmlName, а в QXmlNamePool, куда она была передана при создании. Таким образом, тот же namePool должен быть использован этой функцией, потому может быть использован для поиска префикса.
Возвращает текущий QXmlName в формате Clark Name. Например, если локальное имя html, префикс x и URI пространства имён http://www.w3.org/1999/xhtml/, Clark Name будет выглядеть так:
{http://www.w3.org/1999/xhtml/}x:html.
Если локальное имя равно MyWidget и пространство имён пустое, Clark Name возвращает:
MyWidget
Для повышения эффективности помните, что URI пространства имён, локальное имя и префикс хранятся не в QXmlName, а в QXmlNamePool, в который они были переданы при создании. Таким образом, тот же namePool должен быть использован в этой функции, потому он может быть использован для поиска трёх строк компонентов.
Эта функция будет полезна при отладке.
Смотрите также XML Namespaces, James Clark и fromClarkName().
Возвращает true, если текущее QXmlName не равен other; в противном случае возвращает false. Два QXmlNames равны, если совпадают их URI пространства имён and локальное имя. Они не равны, если отличаются или URI пространства имён, или локальные имена. Префиксы игнорируются.
Помните, что не имеет смысла сравнивать два объекта QXmlName, созданные с разнымиname pools, попытка сделать это приведёт к неопределённому поведению.
Смотрите также operator==().
Ассоциирует other с this и возвращает this.
Возвращает true, если текущее QXmlName равен переданному other; в противном случае возвращает false. Два QXmlNames равны, если совпадают их URI пространства имён и локальное имя. Префиксы игнорируются.
Помните, что не имеет смысла сравнивать два объекта QXmlName, созданные с разнымиname pools, попытка сделать это приведёт к неопределённому поведению.
Смотрите также operator!=().
Вычисляет хэш-ключ из локального имени и URI пространства имён переданного name. Префикс у name не используется при данной процедуре.
Эта функция была введена в Qt 4.4.
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |