解析XML QName

  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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值