这几天刚看XML文档,对Xml schema 中xmlns与targetNamespace 之前的关系有点疑惑,网上一看,竟然也有人怀有同样的问题。可是答案却不尽人意,所以我专门理了半天,最后终于有点眉目。
首先上一段代码:
- <xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:abc="http://www.abc.org/schema"
- targetNamespace="http://www.thisxml.com/schema"
- xmlns="http://www.thisxml.com/schema"
- spanstyle="white-space:pre"></span>elementFormDefault="qualified"attributeFormDefault="unqualified">
- xs:schema>
其中有三个xmlns:xmlns:xs、xmlns:abc、xmlns,还有targetNamespace
我最头疼的是xmlns与targetNamespace的空间网址竟然一样,而悲催的文档作者却没有详细解释,百度上也无解,Google的Endlish又太深奥。
其实一旦你理解了就相当简单。
targetNamespace 相当于 java文件中最开始头文件中的package, 只不过等号后面形式不一样,不是包名 www.thisxml.com.schema 而是 "http://www.thisxml.com/schema"。
而xmlns 相当于 import。只不过这个“import”后面还要带个小名。
如: xmlns:发哥=”www.xianggang.org/周润发”
xmlns:星爷=”www.xianggang.org/周星驰”
如:<星爷:book …>
<发哥:pad …>
而xmlns后面没有小名的就牛X的,xmlns=”www.xianggang.org/成龙” 就相当如凡是在<schema>这个元素下,没有 加小名的便签都是成龙的。如<book …> <pad …>。