跳到导航
BEA Dev2Dev Oracle and BEA
首页 资源中心 dev2dev学堂 在线技术论坛 User Group CodeShare
dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
解析XML QName

时间:2006-01-11
作者:Alexandre Alves
浏览次数:
本文关键字:XMLprefix限定名默认命名空间解析前缀
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

  XML命名空间规范将限定名定义为一个由本地部分和命名空间URI组成的名称。

  限定名,即Qname,用一个前缀和一个本地部分来指定(例如,<foo:bar xmlns:foo=&apos;urn:foo&apos;>),其中前缀(foo)被解析为一个命名空间URI (&apos;urn:foo&apos;)。这个解析前缀的过程产生了通常所说的扩展名。

  在不同的XML处理程序中,解析前缀的规则大致是一致的,只是处理默认命名空间(例如,xmlns=&apos;urn:foo&apos;)的方式有所不同。

  具体来说:

  -XML元素:如果Qname没有前缀,那么必须使用in-scope默认命名空间。

XML

&apos;foo&apos;元素解析后的命名空间

<foo xmlns=&apos;urn:foo&apos;/>

&apos;urn:foo&apos;

  -XML属性:如果Qname没有前缀,那么命名空间URI就是NULL,即,不使用默认命名空间。

XML

&apos;a&apos;属性解析后的命名空间

<foo xmlns=&apos;urn:foo&apos;a=&apos;attr1&apos;/>

NULL

<foo xmlns:ns1=&apos;urn:foo&apos; ns1:a=&apos;attr1&apos; />

&apos;urn:foo&apos;

  -W3C Schema基本类型Qname属性值:如果Qname没有前缀,那么必须使用in-scope默认命名空间。

XML

&apos;a&apos;属性的属性值解析后的命名空间

<foo xmlns=&apos;urn:foo&apos; a=&apos;myname&apos;/>

where

<xsd:attribute name=&apos;a&apos; type=&apos;xsd:QName&apos;/>

&apos;urn:foo&apos;

  -XSLT (1.0)变量或参数:如果Qname没有前缀,那么命名空间URI就是NULL,即,不使用默认命名空间。

XSLT

变量解析后的命名空间

<xsl:variable name=&apos;varA&apos; xmlns=&apos;urn:foo&apos; />

NULL

<xsl:variable name=&apos;ns1:varA&apos; xmlns=&apos;urn:foo&apos; xmlns:ns1=&apos;urn:bar&apos; />

&apos;urn:bar&apos;

  -XPath 1.0节点测试:如果Qname没有前缀,那么命名空间URI就是NULL,即,不使用默认命名空间。

XPATH

&apos;b&apos;节点测试解析后的命名空间

<a xmlns:ns1=&apos;urn:foo&apos; xmlns=&apos;urn:foo&apos;>
  <b/>
</a>

/ns1:a/b

NULL

/ns1:a/ns1:b

&apos;urn:foo&apos;

  -XPath 2.0节点(名称)测试:如果Qname没有前缀,那么必须使用in-scope默认命名空间。

XPATH

&apos;b&apos;节点测试解析后的命名空间

<a xmlns:ns1=&apos;urn:foo&apos; xmlns=&apos;urn:foo&apos;>
  <b/>
</a>

/ns1:a/b

&apos;urn:foo&apos;

原文出处:http://dev2dev.bea.com/blog/aalves/archive/2005/11/resolving_xml_q_1.html

dot dot dot

dot
  作者其它文章
您对本文的评价
您对这篇文章的看法如何?
太棒了!5分 不错啊 4分 一般般 3分 有待提高 2分 不好 1分

   
相关技术