1 Xml命名空间
1.1 XML命名空间XML Namespaces
XML 命名空间提供避免元素命名冲突的方法。XML命名空间属性被放置于元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
举例
<f:table xmlns:f="www.w3school/furniture">
<h:table xmlns:h="/TR/html4/">
当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
注释:标示命名空间的地址不会被解析器用于查信息。其惟一的作用是赋予命名空间一个惟
一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。
1.2 默认的命名空间(Default Namespaces)
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
xmlns="namespaceURI"
举例
<table xmlns="/TR/html4/">
2 Xml Schema命名空间
2.1 常用命名空间
schema元素引用了三个最常使用的命名空间:
xmlns="/2001/XMLSchema"
xmlns:xsd="/2001/XMLSchema-datatypes"
xsd是XML Schema datatypes的意思
xmlns:xsi="/2001/XMLSchema-instances"
xsi是XML Schema Instances的意思
第二和第三个属性用XML命名空间来标识W3C中的两个XML schema规范。第二个xmlns属性定义了标准的XML schema属性类型例如string, float, integer等。第三个 xmlns属性包含基本的XML schema元素,如element, attribute, complexType, group,simpleType等。
2.2 默认命名空间(default namespaces)
每一个Schema可以有且只有一个默认命名空间
xmlns="/2001/XMLSchema"
xmlns=”www.w3school”
在文档中所有的名字前面如果没有前缀的,就是由默认命名空间进行定义和解析的。使用默认命名空间,可以不加空间前缀。
2.3 <schema> 元素
该元素是每一个 XML Schema 的根元素。对于任何一个XML Schema定义文档(XSD)都有一个最顶层的schema (XSD)元素。而且该schema (XSD)元素定义必须包含标准命名空间作为命名空间的标识符(在声明中作为元素或属性的前缀),你也可以不使用xsd或xsi。
一个有命名空间 schema 声明往往看上去类似这样:
<?xml version="1.0"?>
<xs:schema xmlns:xs="/2001/XMLSchema"
targetNamespace="www.w3school"
xmlns="www.w3school"
elementFormDefault="qualified">
...
</xs:schema>
无命名空间schema 声明
<xs:schema xmlns:xs=”/2001/XMLSchema”
elementFormDefault="qualified">
引入其他
对于标准名字空间和目标名字空间,我们不需要指定它的SchemaLocation。因为对于目标名字空间来讲,SchemaLocation就是文档自己。对于标准名字空间来讲,它是众所周知的,也不需要指定。而对于源目标空间来讲,就需要指定它的SchemaLocation。
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="www.SampleStore/Account"
xmlns="/1999/xmlSchema"
xmlns:ACC="www.SampleStore/Account"
xmlns:PART="www.PartnerStore/PartsCatalog">
<import namespace="www.PartnerStore/PartsCatalog"
schemaLocation="/repository/alpha.xsd"/>
</schema>
2.4 <schema> 元素属性说明:
2.4.1 源命名空间(source namespaces):带前缀名的
在Schema中的定义和声明也可以引用其他的命名空间,我们可以把这种命名空间取名为源命名空间(source namespaces)。每一个Schema可以有多个源命名空间。
xmlns:xs=/2001/XMLSchema
xmlns:xsi=/2001/XMLSchema-instance
2.4.2 目标命名空间(target namespace)
每一个Schema可以有且只有一个目标命名空间。Xml Schema定义文档中(XSD)定义的一系列元素名称,类型名称,属性名称和属性组名称等的有效作用范围就是在他们的目标名字空间(target namespace)中。实际上,在一个给定的Schema中,每一个名称都是属于一个特定的名字空间的。
argetNamespace属性表示了该shemaspringframework作用对应的命名空间的URI。也就是说在引用该Schema的其它文档中要声明命名空间的URI应该是targetNamespace的属性值。
2.4.3 elementFormDefault
有效值是 qualified 和unqualified,如果该值是 qualified,实例xml根元素及其下所有子元素都必须通过命名空间前缀限定目标命名空间。这个命名空间必须是schema中定义的targetNameSpace。可以看到引用了Product.xsd的XML文件l中声明了 xmlns="urn:MyNamespace",声明中没有使用前缀,元素前也就不用添加前缀;如果该值是 unqualified,实例xml的根元素必须有命名空间的的限定,这个命名空间必须是schema中定义的targetNameSpace。但是其下子元素无须也不允许用命名空间前缀限定目标命名空间。 子元素的命名空间为空命名空间。
3 Xml使用xsd
XML文件和XSD文件没有直接的联系,他们之间通过namespace关联,即
add element use element
XSD文件-------------------------->namepsae--------------------------->XML文件
3.1 Xsd指定目标命名空间
Xsd文件node.xsd:
<xs:schema xmlns:xs=”/2001/XMLSchema”
targetNamespace=”www.w3school”
xmlns=”www.w3school” elementFormDefault="qualified">
xml引用
<note xmlns=”www.w3school” xmlns:xsi=”/2001/XMLSchema-instance” xsi:schemaLocation="www.w3school note.xsd">
xml缺省命名空间声明xmlns="值"就是和声明的XML Schema的命名空间相结合来规定该XML文档。
xmlns:xsi=”/2001/XMLSchema-instance”定义一个Schema的实例命名空间。只有作了这个定义才能使用schemaLocation属性。
使用小结
Product.xsd文件中targetNamespace="urn:MyNamespace"
Xml引用
xmlns:xsi=”/2001/XMLSchema-instance” xmlns="urn:MyNamespace" xsi:schemaLocation="urn:MyNamespace空格Product.xsd">
3.2 Xsd没指定目标命名空间
Xsd文件node.xsd:
< schema xmlns =”/2001/XMLSchema”
elementFormDefault="qualified">
xml引用
<note xmlns:xsi=”/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation="note.xsd">
note.xsd与xml在同一目录或者相对路径目录。
3.3 Xml引用xsd实例
此文件包含对 XML Schema 的引用:
<?xml version="1.0"?>
<note xmlns="www.w3school"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="www.w3school note.xsd">
…
</note>
下面代码片段
xmlns="www.w3school"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论