XML(1)——shema约束之命名空间

一、XML的两种约束DTD和Schema
摘自IBM官网一段话:“XML DTD(XML的文档类型定义)是近几年来XML技术领域所使用的最广泛的一种模式。但是由于XML DTD并不能完全满足XML自动化处理的要求,例如不能很好实现应用程序不同模间的相互协调,缺乏对文档结构、属性、数据类型等约束的足够描述等等,所以W3C于2001年5月正式推荐XML Schema为XML 的标准模式。显然,W3C希望以XML Schema来作为XML模式描述语言的主流,并逐渐代替XML DTD”。可见Schema使用的越来越多,本文先阐述Shema约束中非常重要的概念命名空间

二、shema文件
student.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.example.org/student"
elementFormDefault="qualified">
<element name="student">
<complexType>
<sequence>
<element name="num" type="int" />
<element name="name" type="string" />
<element name="birthday" type="date" />
</sequence>
</complexType>
</element>
</schema>
student.xsd就是一个shema文件,本身也是XML格式的,也要符合一定的约束。通过几个问题来理解xmlns和targetNamespace。

问题1如何保证shema文件唯一性:targetNamespace
因为在引用shema文件作为xml约束时,试想若有多个shema文件同名以哪一个约束为准呢?所以shema通过命名空间的概念来确保唯一性,targetNamespace属性就是指定这个xsd的命名空间的。通常使用url的形式作为targetNamespace的值来确保唯一性,而该url通常并不一定存在。

问题2如何引入shema规范:xmlns
xsd所有的标签和属性也必须符合schema规范,那element、complexType、sequence等标签的规范从何而来呢?通过xmlns属性来指定shema约束。xmlns="http://www.w3.org/2001/XMLSchema"就表示student.xsd默认不加前缀的标签和属性必须符合w3s定义的一个schema约束。若shema文件不是w3c组织定义的就需要指定shema文件的位置。下面xml引入student.xsd约束时有介绍。

问题3elementFormDefault是什么意思
该属性是一个枚举值:qualified、unqualified。默认是unqualified表示只关联根标签student,而qualified表示关联所有标签和属性如num,name,birthday。

三、XML文件引入约束
方法1
student.xml
<?xml version="1.0" encoding="UTF-8"?>
<student xmlns="http://www.example.org/student" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/student student.xsd">
<num>1000</num>
<name>xy</name>
<birthday>2000-01-01</birthday>
</student>
student.xml指定了xmlns="http://www.example.org/student"约束,就是自定义的student.xsd。但正如问题②所说shema文件不是w3c组织定义的就需要指定shema文件的位置。

问题4如何指定xsd位置:schemaLocation
通过schemaLocation指定shema文件位置。但schemaLocation属性由http://www.w3.org/2001/XMLSchema-instance约束,所以需要再通过xmlns引入这个约束。但一个标签中只允许一个不带前缀的xmlns标签,所以要给新的xmlns带一个前缀xsi,前缀名自定义。以下的例子很好的说明了前缀的用法:
<?xml version="1.0" encoding="UTF-8"?>
<xy:student
xmlns:xy="http://www.example.org/student"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/student student.xsd">
<xy:num>1000</xy:num>
<xy:name>xy</xy:name>
<xy:birthday>2000-01-01</xy:birthday>
</xy:student>

方法2
没有通过指定shema的命名空间而是xsd问位置来确定约束。
<?xml version="1.0" encoding="UTF-8"?>
<xy:student
xmlns:xy="http://www.example.org/student" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="/studnet.xsd">
<xy:num>1000</xy:num>
<xy:name>xy</xy:name>
<xy:birthday>2000-01-01</xy:birthday>
</xy:student>

首段摘自:http://www.ibm.com/developerworks/cn/xml/x-sd/

XML(1)——shema约束之命名空间,布布扣,bubuko.com

时间: 2024-11-06 23:02:58

XML(1)——shema约束之命名空间的相关文章

xml中约束和命名空间的区别

在学习xml的时候接触到了xml约束,因为xml的编写非常灵活,所以我们一般会编写一个文档来约束xml文档的书写规范,而这个约束xml文档的文档就成为xml约束,目前有两种约束方式,分别为DTD和SCHEAM,前者比较古老,且不能完全满足xml自动处理的要求(这句话不太理解),后者是w3c组织2001年正是推荐开发者使用,可以很好的对文档的属性,数据类型,结构等方面的描述,下面举例说明: 这个是很简单的描述一本书的xml,它使用的是dtd约束 book.xml <?xml version="

xml配置文件中常见的命名空间解释

1.1schema文档即xml schema document,schema文件的格式是.xsd(xml schema document的缩写xsd). 简单来说:schema就是对xml的进一步约束.一旦确定了web.xml schema的引用,就表示要参考该引用所在位置的schema定义和约束的规则,这些规则指定了该xml里: 1)只能出现约束里指定的元素和指定的属性2)某些元素的顺序的也就不可改变的3)谁有子元素,有多少个,顺序是怎样的4)元素和属性的类型,元素是否为空,是否包含文本,数据

关于XML和Schema约束的一些总结。

在学习XML约束的时候DTD约束还比较易懂(也可能是错觉),但是Schema约束的命名空间.引入,Schemalocation等比较难懂,总结一下最近自己查看其他专家的博客琢磨出来的东西 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" //这里可能有错误,该xsd文件多定义了一行默认的xmlSc

在XML序列化时去除默认命名空间xmlns:xsd和xmlns:xsi

可使用以下代码: //Create our own namespaces for the output XmlSerializerNamespaces ns = new XmlSerializerNamespaces (); //Add an empty namespace and empty value ns.Add ("", ""); //Create the serializer XmlSerializer slz = new XmlSerializer (s

XML概念,约束文档,解析

day01总结 今日内容 l XML语法 l XML约束之DTD l XML解析器介绍 l XML解析之JAXP( DOM.SAX ) l DOM4J l Schema 一.XML语法 XML概述 1 什么是XML XML全称为Extensible Markup Language, 意思是可扩展的标记语言,它是 SGML(标准通用标记语言)的一个子集. XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本: W3C

JavaEE实战——XML语法和约束技术

MyEclipse8.5 1.配置workspace ----- 建议不要采用含有空格和中文目录,所有代码保存workspace空间中 2.新建工程时,设置工程需要jre环境 MyEclipse提供多种内置layout --- 每种布局 界面不同,菜单不同 工程的属性 编码集 --- 导入其它工程时,注意编码类型一致 java build path 设置 classpath位置 ,指定当前工程引入类库 source中指定.java 文件 和.class文件 存放位置 librialies 指定当

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

XML技术-Schema约束-Dom4j-Xpath详解

这辈子没办法做太多事情所以每一件都要做到精彩绝伦 People can't do too many things in my life,so everything will be wonderful   乔布斯 本文档参考资料w3cschool.CHM  API教程文档免费下载地址http://down.51cto.com/data/2300287 XML技术 1.     什么是XML XML 指可扩展标记语言EXtensibleMarkup Language XML 是一种标记语言很类似 H

XML语法与约束

1.开发工具介绍 1.开发工具 JDK eclipse(真正开发的用的是eclipse)----IBM发布 eclipse可以添加很多的插件(添加自己需要的插件) myeclipse已经添加了很多的插件(收费) 2.myeclipse视图恢复最原始的样子(重置视图) window--> Reset Perspective 3.切换视图 4.创建工程导入自定义安装的JDK 添加 5.修改快捷键 window--> preferences--> General--> Keys-->