QXmlName Class Reference

[QtXmlPatterns module]

该QXmlName类表示一个XML节点的名称,以高效,名称空间感知的方式。More…

Methods

  • __init__ (self)
  • __init__ (self, QXmlNamePool namePool, QString localName, QString namespaceUri = QString(), QString prefix = QString())
  • __init__ (self, QXmlName)
  • bool isNull (self)
  • QString localName (self, QXmlNamePool query)
  • QString namespaceUri (self, QXmlNamePool query)
  • QString prefix (self, QXmlNamePool query)
  • QString toClarkName (self, QXmlNamePool query)

Static Methods

  • QXmlName fromClarkName (QString clarkName, QXmlNamePool namePool)
  • bool isNCName (QString candidate)

Special Methods

  • bool __eq__ (self, QXmlName other)
  • int __hash__ (self)
  • bool __ne__ (self, QXmlName other)

Detailed Description

该QXmlName类表示一个XML节点的名称,以高效,名称空间感知的方式。

QXmlName代表的方式,是既有效又安全的比较名称的XML节点的名称。通常情况下,一个XML节点表示一个XML元素或属性,但QXmlName还可以代表其它类型的节点,例如的名称,QAbstractXmlReceiver.processingInstruction()和QAbstractXmlReceiver.namespaceBinding( ) 。

一个XML节点的名称有三个组件:namespace URI时,local nameprefix。要查看这些是指在XML中,考虑下面的代码片断。

  1. <book xmlns:dc='http://purl.org/dc/elements/1.1'
  2. xmlns='http://example.com/MyDefault'>
  3. <dc:title>Mobey Dick</dc:title> ...
  4. </book>

对于指定的元素booklocalName()返回booknamespaceUri()返回http://example.com/MyDefaultprefix( )返回一个空字符串。对于指定的元素titlelocalName()返回titlenamespaceUri()返回http://purl.org/dc/elements/1.1prefix()返回dc

以确保与QXmlName操作是有效的,例如,复印机的名称和比较它们, QXmlName的每个实例都与一个相关联的name pool,必须在QXmlName施工时指定。该QXmlName的三个组成部分,即命名空间URI ,本地名称,前缀,存储在名称池映射到标识符,使他们能够共享。出于这个原因,创建QXmlName的有效实例的唯一方法是使用类的构造函数,其中name pool,本地名称,命名空间URI和前缀必须全部指定。

需要注意的是QXmlName的默认构造函数构造一个空实例。它通常用于在QXmlName集合分配未使用的条目。

QXmlName的每个实例有一个相关联的副作用name pool是QXmlName的每个实例是联系在一起的QXmlNamePool与创建它。然而, QXmlName类不跟踪名称池的,所以所有的存取功能,例如,namespaceUri( )prefix( )localName()和toClarkName( )要求的正确名称池被传递给他们。未能提供正确的名称池这些访问函数将导致不确定的行为。

请注意,一个name pool is _not_XML命名空间。一name pool可以代表从不同的XML命名空间QXmlName的实例, QXmlName从一个XML命名空间的实例可以被分布在多个name pools

Comparing QXmlNames

要确定什么是QXmlName指的是,在namespace URIlocal name被使用。该prefix不使用,因为前缀只是一种替代通常更长的命名空间URI的使用简写名称。也不是名字比较中使用的前缀。例如,下面的两个元素节点代表相同的元件,并比较相等。

  1. <svg xmlns="http://www.w3.org/2000/svg"/>
  1. <x:svg xmlns:x="http://www.w3.org/2000/svg"/>

虽然第二名称的前缀x,这两个名字比较相等的QXmlName的实例,因为该前缀未在比较中使用。

本地名不能为空字符串,虽然前缀和命名空间URI即可。如果前缀不为空,命名空间URI不能为空。本地名称和前缀必须是有效的NCNames例如abc.def or abc123

QXmlName表示有时被称为一个expanded QName,或者干脆一个QName 。


Method Documentation

  1. QXmlName.__init__ (self)

构造未初始化QXmlName。为了建立一个有效的QXmlName,您通常使用的其他构造函数,它接受一个name pool,命名空间URI ,本地名称和前缀作为参数。但你也可以使用这个构造函数来建立一个空QXmlName然后指定一个现有QXmlName到它。

See also isNull( ) 。

  1. QXmlName.__init__ (self, QXmlNamePool namePool, QString localName, QString namespaceUri = QString(), QString prefix = QString())

构造一个QXmlName实例插入localNamenamespaceURIprefixnamePool如果它们不存在。的访问函数namespaceUri( )prefix( )localName()和toClarkName( )必须通过namePool这里所用的,所以namePool必须保持在范围内同时访问函数可以被使用。然而,两种情况可以与被比较== or !=和复制无namePool

用户保证该字符串组件的有效期为一个QName 。特别地,本地名称和前缀(如果有的话) ,必须有效NCNames。该功能isNCName()可以被用来测试这些名称的有效性。命名空间URI应该是一个绝对URI 。QUrl.isRelative( )可以被用来测试的命名空间URI是否是相对或绝对。最后,提供了一个前缀无效没有命名空间URI提供时。

namePool不被复制。也不是参照它保留在该实例。这个构造函数插入三个字符串成namePool

  1. QXmlName.__init__ (self, QXmlName)
  1. QXmlName QXmlName.fromClarkName (QString clarkName, QXmlNamePool namePool)

皈依clarkNameQXmlName,插入到namePool,并将其返回。

克拉克的名字是一个方式来呈现一个完整的QName只有一个字符串,其中的命名空间不能包含括号。下面是几个例子:

Clark Name Description
html The local name html, in no namespace
http://www.w3.org/1999/xhtmlhtml The local name html, in the XHTML namespace
http://www.w3.org/1999/xhtmlmy:html The local name html, in the XHTML namespace, with the prefix my

如果命名空间包含括号,则返回值是无效或有不确定的内容。

If clarkName是无效的名称,构造一个默认的QXmlName返回。

此功能被引入Qt的4.5 。

See also toClarkName( ) 。

  1. bool QXmlName.isNCName (QString candidate)

返回True如果candidateNCName。一个NCName是,可以作为XML中的名称和一个串XQuery,例如,在一个元素或属性,或一个变量的名称的前缀或本地名称。

See also Namespaces in XML 1.0 (Second Edition), [4] NCName

  1. bool QXmlName.isNull (self)

返回True如果QXmlName不具有有效的组合进行初始化namespace URIlocal nameprefix

一个有效的本地名称始终是必需的。前缀和命名空间URI可以是空的,但如果前缀不为空,命名空间URI不能为空。本地名称和前缀必须是有效的NCNames例如abc.def or abc123

  1. QString QXmlName.localName (self, QXmlNamePool query)

返回的本地名称。

注意,为了提高效率,本地名称字符串没有存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给这个函数,因此它可以用于查找本地名称。

  1. QString QXmlName.namespaceUri (self, QXmlNamePool query)

返回的命名空间URI 。

注意,为了提高效率,命名空间URI字符串没有存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给这个函数,因此它可以用于查找命名空间URI 。

  1. QString QXmlName.prefix (self, QXmlNamePool query)

返回前缀。

注意,为了提高效率,前缀字符串没有存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给该函数,因此它可用于查找的前缀。

  1. QString QXmlName.toClarkName (self, QXmlNamePool query)

返回此QXmlName格式化为一个克拉克名称。举例来说,如果本地名称是html,前缀是x和命名空间URI为http://www.w3.org/1999/xhtml/,那么返回的克拉克的名字是:

  1. {http://www.w3.org/1999/xhtml/}x:html.

如果本地名称是MyWidget和命名空间为空,则返回的克拉克的名字是:

  1. MyWidget

需要注意的是为提高效率,命名空间URI ,本地名称和前缀字符串不存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给该函数,因此它可用于查找三个字符串组成。

此功能可用于调试。

See also XML Namespaces, James ClarkfromClarkName( ) 。

  1. bool QXmlName.__eq__ (self, QXmlName other)
  1. int QXmlName.__hash__ (self)
  1. bool QXmlName.__ne__ (self, QXmlName other)