旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

XML和Schema定名空间的细致引见【XML教程】,XML,Schema,命名空间

作者:搜教程发布时间:2019-12-01分类:XML教程浏览:93评论:0


导读:XML和Schema具有无关平台,手艺厂商,简朴,范例一致等特性,极具开放性,所以运用极为普遍,而且运用简朴,在XML和Schema和,个人认为比较不好明白的一点是其定名空间题目...
XML和Schema具有无关平台,手艺厂商,简朴,范例一致等特性,极具开放性,所以运用极为普遍,而且运用简朴,在XML和Schema和,个人认为比较不好明白的一点是其定名空间题目,在这篇博客里细致举行明白。

称号空间是W3C引荐规范供应的一种一致定名XML文档中的元素和属性的机制。运用称号空间能够明白标识和组合XML文档中来自差别标记词汇表的元素和属性,避免了称号之间的争执。

运用过DTD的人应当晓得,定名争执是DTD的一大题目,而Schema里引入了定名空间的观点,就很好的处理了这个题目。详细来看:

1、声明称号空间

称号空间声明的平常情势为:第一部份是一个关键字xmlns:,第二部份是称号空间的前缀,第三部份是一个等号,第四部份是双引号,将第五部份的称号空间标识URI包括起来。须要注重的是,称号空间的前缀不能为xml,由于在XML中这个字符串是保留作特别用处的。例:

xmlns:tns="http://www.whtest.com/"    
//个中tns为前缀。

还能够隐式声明称号空间,即省略掉冒号和称号空间前缀。例:

xmlns="http://www.whtest.com/"   //注重在一个文档中只能有一个隐式声明的定名空间


2、Schema中的定名空间:

(1)Schema中的全局身分

全局身分指的是元素xsd:schema的直接子节点,包括元素声明、属性声明、庞杂/简朴范例定义、组定义、属性组定义。

<?xml version=”1.0”>
<xsd:schema xmlns:xsd=”http://www.w3.org/XML_Schema”
targetNamespace=“http://www.test.com/ns/ns_test“>
   // Schema的目的称号空间用属性targetNamespace在根元素上定义。
   //Schema的全局身分被放在称号空间http://www.test.com/ns/ns_test里。

(2)Schema中的非全局身分

偶然愿望将非全局身分定义在目的空间中去,可运用下面要领。

<?xml version=”1.0”>
<xsd:schema xmlns:xsd=”http://www.w3.org/XML_Schema”
targetNamespace=“http://www.test.com/ns/ns_test“
elementFormDefault=“qualified“>

属性elementFormDefault的默认值是unqualified,也就是划定了只要全局身分才被定义在目的称号空间中。将elementFormDefault的值赋为qualified,使得目的称号空间包括非全局的元素定义。一样,使属性attributeFormDefault的值赋为qualified,可使得目的称号空间包括非全局属性定义。以下:

<?xml version=”1.0”>
<xsd:schema xmlns:xsd=”http://www.w3.org/XML_Schema”
targetNamespace=“http://www.test.com/ns/ns_test“
attributeFormDefault=“qualified“>

也能够修正属性form的值,使得某些非全局身分不包括在称号空间中。以下:

<xsd:element name=”name” type=”xsd:string” form=”unqualified”/>

(3)targetNamespace

xsd文件中定义了一个targetNameSpace后,其内部定义的元素,属性,范例等都属于该targetNameSpace,其本身或外部xsd文件运用这些元素,属性等都必须从定义的targetNameSpace中找。

targetNamespace定义了Schema定义的新元素与属性的称号空间。而"www.w3.org/2001/XMLSchema"称号空间则定义了element, attribute, complexType, group, simpleType等元素。

若本身并不运用重用组件,仅供外部运用的话,则只定义targetNameSpace就能够,不必指定别号。

3、XML文档中定名空间

在XML中,称号空间的运用触及领域的观点,领域即称号空间的掩盖局限,它指的是哪些元素和属性在该称号空间中,哪些不在该称号空间中。称号空间既能够限制全部XML文档,也能够只针对XML文档中的一部份。

(1).称号空间限制全部XML文档

<?xml version=”1.0”?>
<member_details xmlns=”http://www.testns.com/ns.xsd”>
   <name>Tom</name>
   <age>12</age>
   <sex>male</sex>
</member_details>

(2)称号空间只针对XML文档中的一部份

<?xml version=”1.0”?>
<member_details>
   <name xmlns=”http://www.testns.com/ns.xsd”>Tom</name>
   <age>12</age>
   <sex>male</sex>
</member_details>

(3)嵌套的定名空间

<?xml version=”1.0”?>
<member_details xmlns=”http://www.testns.com/ns.xsd”
xmlns:newns=”http://www.testns/newns.xsd”>
   <name>Tom</name>
   <age>12</age>
   <newns:sex>male</sex>
</member_details>
// 此例中,除了元素sex被定义在新的称号空间中外,其他的元素依然运用本来的称号空间。

(4)schemaLocation

schemaLocation 属性援用具有目的称号空间的 XML 架构文档(.xsd)。该xml文件中用到的一切新创的元素、属性等的.xsd文件都必须在这里声明。

<xsi:schemaLocation="list of anyURI" >

个中的anyURI是一个架构位置,该架构包括限制的(具有称号空间的架构)架构组织。每一对中的第一个 URI 援用是称号空间称号,第二个则是形貌称号空间的架构的位置。

将具有目的称号空间的架构文档与实例文档相干联。能够列出多对 URI 援用,每一对都有差别的称号空间称号部份。
依据万维网联合会 (W3C) XML 架构发起,XML 实例文档能够同时指定 xsi:schemaLocation 和 xsi:noNamespaceSchemaLocation 属性。另外,还能够屡次列出同一个定名空间。

以下示例显现怎样运用 xsi:schemaLocation 属性为多个 XML 架构文档供应位置信息。

<p:Person
   xmlns:p="http://contoso.com/People"
   xmlns:v="http://contoso.com /Vehicles"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation=
     "http://contoso.com/People 
      http://contoso.com/schemas/people.xsd 
      http://contoso.com/schemas/Vehicles
      http://contoso.com/schemas/vehicles.xsd
      http://contoso.com/schemas/People
      http://contoso.com/schemas/people.xsd">
   <name>John</name>
   <age>28</age>
   <height>59</height>
   ....
</p:Person>

(5)noNamespaceSchemaLocation

noNamespaceSchemaLocation 属性援用没有目的称号空间的 XML 架构文档。

    <xsi:noNamespaceSchemaLocation="anyURI" >

与SchemaLocation雷同anyURI是一个架构位置,该架构包括非限制的(没有称号空间的架构)架构组织。

不请求 XML 架构有称号空间。若要为没有目的称号空间的 XML 架构指定位置,请运用 noNamespaceSchemaLocation 属性。此属性中援用的 XML 架构不能有目的称号空间。由于此属性不接受 URL 列表,所以只能指定一个架构位置。
依据万维网联合会 (W3C) XML 架构发起,XML 实例文档能够同时指定 xsi:schemaLocation 和 xsi:noNamespaceSchemaLocation 属性。

以下示例显现怎样对包括非限制元素的实例文档运用 xsi:noNamespaceSchemaLocation 属性。

<?xml version="1.0" encoding="UTF-8"?>
<book:books xmlns:book="http://www.example.org/02"
	  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	  xsi:noNamespaceSchemaLocation="02.xsd">
	<book:book id="1">
		<book:title>Java in action</book:title>
		<book:content>Java is good</book:content>
		<book:author>Bruce</book:author>
	</book:book>
</book:books>


经由过程上边的剖析,我们能够看到,XML和Schema的定名空间标签运用花样是雷同的(这也是Schema相对与DTD的上风),但XML和Schema都有各自的奇特的属性,这也是由他们差别的功用决议的,Schema主要给XML供应效劳,所以会划定好targetNameSpace来声明定名空间的名字,而XML须要运用schema的效劳,所以须要SchemaLocation来声明运用的定名空间。

以上就是XML和Schema定名空间的细致引见的细致内容,更多请关注ki4网别的相干文章!

标签:XMLSchema命名空间


欢迎 发表评论: