`

什么是QName

    博客分类:
  • XML
 
阅读更多

看代码时经常碰到QName,当时对这个东东具体什么意思也是不太明白;今天在看SOAP消息的时候,想到这个东东,就去仔细看了下。QName其实就是Qualified Name的简称,在“NameSpaces in XML1.0(Third Edition)”(http://www.w3.org/TR/REC-xml-names/#ns-qualnames)中有如下这段话:

URI references can contain characters not allowed in names, and are often inconveniently long, so expanded names are not used directly to name elements and attributes in XML documents. Instead qualified names are used. [Definition: A qualified name is a name subject to namespace interpretation. ] In documents conforming to this specification, element and attribute names appear as qualified names. Syntactically, they are either prefixed names or unprefixed names.

同时文中对QName的定义如下:

In XML documents conforming to this specification, some names (constructs corresponding to the nonterminal Name) MUST be given as qualified names,defined as follows:

Qualified Name

 

[7]    QName    ::=    PrefixedName
      UnprefixedName
[8]    PrefixedName    ::=    Prefix ':' LocalPart
[9]    UnprefixedName    ::=    LocalPart
[10]    Prefix    ::=    NCName
[11]    LocalPart    ::=    NCName

 

The Prefix provides the namespace prefix part of the qualified name, and MUST be associated with a namespace URI reference in a namespace declaration. [Definition: The LocalPart provides the local part of the qualified name.]

Note that the prefix functions only as a placeholder for a namespace name. Applications SHOULD use the namespace name, not the prefix, in constructing names whose scope extends beyond the containing document.

 

In XML documents conforming to this specification, element names are given as qualified names;

Attributes are either namespace declarations or their names are given as qualified names.

 

也就是说QName分为两种,一种是带前缀的名字,另一种是不带前缀的。若是带前缀,则前缀必须和命名空间的URI引用相关联,如

<namespace-prefix:envelope xmlns:namespace-prefix="namespaceURI"> ... </namespace-prefix:envelope>,其中<namespace-prefix:envelope>就是QName;不带前缀,也就是说xml文件使用的默认命名空间,如<rootElement xmlns="namespaceURI"> ... </rootElement>,这里<rootElement>就是QName;在xml文件中,元素和属性都是用QName表示的;

 

如果应用程序在构造QName的时候,同时这个QName的范围超过了其被包含的xml文档,比如应用程序是Java或C#程序,那么在构造QName的时候就需要使用命名空间,而不是前缀,QName可以看做是一个包含了命名空间和local part的二元组,如(namespace, local name).

分享到:
评论

相关推荐

    qname.jar 包 下载

    qname.jar qname.jar

    prefix cannot be "null" when creating a QName

    QName qname = new QName(namespaceURI, localPart, prefix); ``` #### 4. **库版本与兼容性问题** - **Bea WebLogic Server**: - 问题可能与使用的库版本有关,例如`com.bea.xml.stream.MXParser`。 - 如果...

    qname.jar 包

    1. Add the QName JAR file (qname.jar) into the WEB-INF/lib folder in your WAR file 2. Add a file weblogic.xml into the WEB-INF folder in your WAR file Below is an example weblogic.xml file: &lt;!DOCTYPE ...

    xmlbeans-qname.jar

    xmlbeans-qname.jar

    js-qname:简单的QName(命名空间URI +本地名称)JavaScript的对象实现

    JavaScript中的QName(全称限定名)是一种在XML和相关技术中广泛使用的概念,它用于唯一地标识元素、属性和命名空间中的其他项。QName由两部分组成:命名空间URI(Uniform Resource Identifier)和本地名称。js-...

    jsr173_1.0_api.jar rasolver.jar xbean.jar xbean_xpath.jar xmlbeans-qname.jar

    xmlbeans-qname.jar包含了对QName(XML命名空间限定名称)的支持,这对于处理XML Schema中的命名空间非常重要。 5. **jaxen-1.1-beta-2.jar**: Jaxen是一个独立于XML解析器的XPath库,它提供了在各种XML API(如...

    weblogic javax/xml/namespace/QName报错-附件资源

    weblogic javax/xml/namespace/QName报错-附件资源

    CXF动态webservice客户端demo

    你需要传递WSDL URL和服务QName(命名空间+服务名)来实例化服务对象。 ```java URL wsdlLocation = new URL("http://example.com/service?wsdl"); QName serviceName = new QName(...

    使用axis1.3构建自己的SOAP应用程序源码

    在本文中,我们将深入探讨如何使用Apache Axis1.3框架构建自定义的SOAP(Simple Object Access Protocol)应用程序。SOAP是一种基于XML的协议,用于在Web服务中交换结构化信息。Apache Axis是Apache软件基金会开发的...

    oracle调用webservice接口地址demo

    call_sys := sys.utl_dbws.create_call(service_sys, port_qname, operation_qname); -- 设置目标地址 sys.utl_dbws.set_target_endpoint_address(call_sys, '...

    MQ常用命令大全

    - 定义一个名为QNAME的本地队列作为死信队列,持久化设置为开启。 5. **设定队列管理器的死信队列** - `runmqsc "ALTER QMGR DEADQ(QNAME)"` - 设置队列管理器的死信队列为QNAME。 6. **定义队列** - `runmqsc...

    IBM MQ使用指南

    使用命令 `DEFINE QLOCAL(QNAME) REPLACE` 创建队列,其中 `QNAME` 是队列的名称。 (2)删除队列 使用命令 `DELETE QLOCAL(QNAME)` 删除队列。 (3)往队列中放消息 使用命令 `amqsput QName QmgrName` 往队列...

    WebSphere MQ应用之常用命令大盘点.doc

    - `amqsput QName QmgrName` 将消息写入队列`QName`,队列属于队列管理器`QmgrName`。 - `amqsget QName QmgrName` 从队列`QName`中读取消息,队列同样属于`QmgrName`。 7. 启动通道/停止侦听: - `runmqchl –c...

    IBM websphere MQ 命令大全

    - **示例**:`DEFINE Q MODEL TestModel QNAME DEFTYPE TEMP DYN` 定义一个名为 TestModel 的临时动态队列。 - **`DEFINE Q LOCAL &lt;QTNAME&gt; USAGE(XMITQ) DEFPSIST(YES) + INIT QSYSTEM.CHANNEL.INITQ + PROCESS...

    bpel repository

    ### BPEL Repository详解 #### 一、BPEL简介 **业务流程执行语言(Business Process Execution Language,简称BPEL)**是一种用于定义服务之间的交互流程的标准编程语言。它主要用于构建复杂的业务流程,这些流程...

    oracle调用webService

    为什么要在 Oracle 中访问 WebService? 在系统实现中,有时会有直接在数据库端利用触发器、存储过程等方式进行数据传递、分发的业务,而其中可能会涉及一些业务逻辑,为了处理这些业务逻辑,并简单起见,可以直接...

    JMS获取与发送MQ信息 MQ命令

    4. **死信队列**:死信队列处理无法投递的消息,可以通过`DEFINE QLOCAL (QNAME) DEFPSIST (YES) REPLACE`定义本地死信队列,并使用`ALTER QMGR DEADQ (QNAME)`设定队列管理器的死信队列。 5. **远程队列和模型队列...

    我学习mq的一些总结

    - 定义别名队列:`DEFINE QALIAS(QALIASNAME) TARGQ(QNAME) REPLACE` - 定义远程队列:`DEFINE QREMOTE(QRNAME) RNAME(Q_NAME) RQMNAME(QMGRNAME) XMITQ(QTNAME)` #### 通道 通道用于连接不同的队列管理器,实现...

    Websphere MQ常用命令

    - `amqsput QName QmgrName`:向QMgrName队列管理器中的QName队列发送消息。 - `amqsget QName QmgrName`:从QMgrName队列管理器中的QName队列获取消息。 6. 启动和停止通道: - `runmqchl –c ChlName –m ...

Global site tag (gtag.js) - Google Analytics