xmlns,targetNamespace, xmlns:ss

Xml,html等标记语言一般开头都会有命名空间的定义。这里主要说明几个常见到的xmlns,targetNamespace, xmlns:ss等。 

1. XML 命名空间提供避免元素命名冲突的方法。 
当不同的xml文件里包含相同的标签但不同含义,又恰恰在同一个文件里被引用时就分辨不出这个标签的含义了,使用命名空间来区分就不会存在歧义了,w3school里有详细的举例说明,可以参考:http://www.w3school.com.cn/xml/xml_namespaces.asp 

2.xmlns, xmlns:xsi, targetNamespace 

先看一个例子: 
<?xml version="1.0"?> 

<note xmlns="http://www.w3schools.com" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3schools.com note.xsd"> 

<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 
这里的根元素里引用了几个命名空间。 

1)xmlns  (xmlns="http://www.w3schools.com") 
-- specifies the default namespace declaration. This declaration tells the schema-validator that all the elements used in this XML document are declared in the "http://www.w3schools.com" namespace. 
这个是定义了默认命名空间,所有不带前缀的元素都是使用这个默认命名空间里的元素。 


2)xmlns:xsi  (xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance") 
-- indicates that the elements and data types used in the schema come from the " http://www.w3.org/2001/XMLSchema-instance " namespace. It also specifies that the elements and data types that come from the " http://www.w3.org/2001/XMLSchema-instance " namespace should be prefixed with xsi
这个同样声明了可以使用的命名空间,但是使用时需要指明xsi前缀,比如: 
<xsi:ss>使用xsi命名空间</xsi:ss> (ss应该是xsi里真实定义的schema). 

注意:我们看到标识命名空间的一般都是一个url,而且可以访问,但其实不是必须为url的。用来标识命名空间的网络地址并不被XML解析器调用,XML解析器不需要从这个网络地址中查找信息,该网络地址的作用仅仅是给命名空间一个唯一的名字,因此这个网络地址也可以是虚拟的,然而又很多公司经常把这个网络地址值象一个真实的Web页面,这个地址包含了关于当前命名空间更详细的信息。 
xml元素校验的xsd文件才必须是真实的,而且会拿来校验xml定义的是否合法。
 

补充xsd: 
XSD是指XML结构定义 ( XML Schemas Definition ) 
XML Schema 是DTD的替代品。XML Schema语言也就是XSD。 
XML Schema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。 
  一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。 
  XSD是DTD替代者的原因,一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。 
  XSD文件的后缀名为.xsd。 
  XML Schema的优点: 
  1) XML Schema基于XML,没有专门的语法 
  2) XML可以象其他XML文件一样解析和处理 
  3) XML Schema支持一系列的数据类型(int、float、Boolean、date等) 
  4) XML Schema提供可扩充的数据模型。 
  5) XML Schema支持综合命名空间 
  6) XML Schema支持属性组。 
详细可以参考:http://wenku.baidu.com/link?url=DkLPOQNoOBybLALkh-v-6N9k-vOc4gpftKDRXYryzX0XZrduZz1Y3lh4Ejf07qFQRMxErGMT330OyxNd__U2zg9m-UoYU_0heEdcP6uwopu
 

再看一个例子: 
<?xml version="1.0"?> 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.w3schools.com" 
xmlns="http://www.w3schools.com" 
elementFormDefault="qualified"> 
... 
... 
</xs:schema> 

3) targetNamespace  (targetNamespace="http://www.w3schools.com") 
这个是把当前文档声明成一个命名空间,类似java文件中的package。但这只是声明而没有使用。如果使用xmlns:target定义跟targetNamespace一样的值,则是定义了target前缀的命名空间就是使用当前文档定义的命名空间。如: 
<schema xmlns="http://www.w3.org/2001/SchemaXML 
        targetNamespace="http://www.example.com/name" 
        xmlns:target="http://www.example.com/name"> 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值