Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QXmlName类表示一个XML节点的名称,以高效,名称空间感知的方式。More...
该QXmlName类表示一个XML节点的名称,以高效,名称空间感知的方式。
QXmlName代表的方式,是既有效又安全的比较名称的XML节点的名称。通常情况下,一个XML节点表示一个XML元素或属性,但QXmlName还可以代表其它类型的节点,例如的名称,QAbstractXmlReceiver.processingInstruction()和QAbstractXmlReceiver.namespaceBinding( ) 。
一个XML节点的名称有三个组件:namespace URI时,local name和prefix。要查看这些是指在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的每个实例都与一个相关联的name pool,必须在QXmlName施工时指定。该QXmlName的三个组成部分,即命名空间URI ,本地名称,前缀,存储在名称池映射到标识符,使他们能够共享。出于这个原因,创建QXmlName的有效实例的唯一方法是使用类的构造函数,其中name pool,本地名称,命名空间URI和前缀必须全部指定。
需要注意的是QXmlName的默认构造函数构造一个空实例。它通常用于在QXmlName集合分配未使用的条目。
QXmlName的每个实例有一个相关联的副作用name pool是QXmlName的每个实例是联系在一起的QXmlNamePool与创建它。然而, QXmlName类不跟踪名称池的,所以所有的存取功能,例如,namespaceUri( )prefix( )localName()和toClarkName( )要求的正确名称池被传递给他们。未能提供正确的名称池这些访问函数将导致不确定的行为。
请注意,一个name pool is notXML命名空间。一name pool可以代表从不同的XML命名空间QXmlName的实例, QXmlName从一个XML命名空间的实例可以被分布在多个name pools。
要确定什么是QXmlName指的是,在namespace URI和local name被使用。该prefix不使用,因为前缀只是一种替代通常更长的命名空间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 or abc123。
QXmlName表示有时被称为一个expanded QName,或者干脆一个QName 。
构造未初始化QXmlName。为了建立一个有效的QXmlName,您通常使用的其他构造函数,它接受一个name pool,命名空间URI ,本地名称和前缀作为参数。但你也可以使用这个构造函数来建立一个空QXmlName然后指定一个现有QXmlName到它。
See also isNull( ) 。
构造一个QXmlName实例插入localName,namespaceURI和prefix成namePool如果它们不存在。的访问函数namespaceUri( )prefix( )localName()和toClarkName( )必须通过namePool这里所用的,所以namePool必须保持在范围内同时访问函数可以被使用。然而,两种情况可以与被比较== or !=和复制无namePool。
用户保证该字符串组件的有效期为一个QName 。特别地,本地名称和前缀(如果有的话) ,必须有效NCNames。该功能isNCName()可以被用来测试这些名称的有效性。命名空间URI应该是一个绝对URI 。QUrl.isRelative( )可以被用来测试的命名空间URI是否是相对或绝对。最后,提供了一个前缀无效没有命名空间URI提供时。
namePool不被复制。也不是参照它保留在该实例。这个构造函数插入三个字符串成namePool。
皈依clarkName成QXmlName,插入到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( ) 。
返回True如果candidate是NCName。一个NCName是,可以作为XML中的名称和一个串XQuery,例如,在一个元素或属性,或一个变量的名称的前缀或本地名称。
See also Namespaces in XML 1.0 (Second Edition), [4] NCName。
返回True如果QXmlName不具有有效的组合进行初始化namespace URI,local name和prefix。
一个有效的本地名称始终是必需的。前缀和命名空间URI可以是空的,但如果前缀不为空,命名空间URI不能为空。本地名称和前缀必须是有效的NCNames例如abc.def or abc123。
返回的本地名称。
注意,为了提高效率,本地名称字符串没有存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给这个函数,因此它可以用于查找本地名称。
返回的命名空间URI 。
注意,为了提高效率,命名空间URI字符串没有存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给这个函数,因此它可以用于查找命名空间URI 。
返回前缀。
注意,为了提高效率,前缀字符串没有存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给该函数,因此它可用于查找的前缀。
返回此QXmlName格式化为一个克拉克名称。举例来说,如果本地名称是html,前缀是x和命名空间URI为http://www.w3.org/1999/xhtml/,那么返回的克拉克的名字是:
{http://www.w3.org/1999/xhtml/}x:html.
如果本地名称是MyWidget和命名空间为空,则返回的克拉克的名字是:
MyWidget
需要注意的是为提高效率,命名空间URI ,本地名称和前缀字符串不存储在QXmlName但在QXmlNamePool被传递给构造函数。因此,同样的namePool必须被传递给该函数,因此它可用于查找三个字符串组成。
此功能可用于调试。
See also XML Namespaces, James Clark和fromClarkName( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |