在XML里的XSD和DTD以及standalone的使用
有关XML结构中的XSD和DTD以及standalone的使用
XmlDeclaration declare= document.CreateXmlDeclaration("1.0", "utf-8", "yes"); yes为standalone的值,
XML中声明中有个standalone
standalone 用来表示该文件是否呼叫其它外部的文件。若值是 ”yes” 表示没有呼叫外部文件,若值是 ”no” 则表示有呼叫外部文件。默认值是 “yes”。
这里所指的外部文件其实就是查检XML是不是有效的约束文件,或是DTD或是Schema,那这两者又有什么区别呢?
尽管XML1.0提供了一种机制,即文档类型定义(DTD)来规范XML的格式规则。但是它天生存在一些缺点,比如,它采用了非XML的语法规则、不支持更多的数据类型、扩展性
差等,为了克服这些缺点,XML Schema 出现了。W3C推荐在XML中使用XML Schema来代替DTD。
XML Schema(模式) 跟DTD一样,也用于定义 XML 文档的约束。但它与DTD明显不同的是,XML Schema遵循XML语法规则,更好地支持数据类型以及命名空间。
W3C称:XML Schema is an XML based alternative to DTD。模式在单独的文件中定义,通常扩展名为 .xsd。每个模式定义都有一个根元素 schema,该元素属于名称空
间。schema 元素可以包含可选的属性。
比如:
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema elementFormDefault="qualified" attributeFormDefault="unqualified">
这表示模式中使用的元素来自名称空间。
XML 文件使用 schema 名称空间中的 schemaLocation 属性链接到对应的模式。使用 schemaLocation 属性必须定义 schema 名称空间。
所有这些定义都出现在 XML 文档的根元素中。
语法如下:
<root_element schema_namespace_definition schema_location_definition>
下面是一个例子:
<Books xmlns:xs=" Books.xsd">
先来看看一个XML文件示例(message.xml),分别用DTD和XML Schema 描述这个文件,看看它们之间的区别:
1、使用DTD:
- <?xml version="1.0" standalone="yes"?>
- <!DOCTYPE message [
- <!ELEMENT message (to,from,body)>
- <!ELEMENT to(#PCDATA)>
- <!ELEMENT from (#PCDATA)>
- <!ELEMENT body (#PCDATA)>
- ] >
2、message的DTD结构定义:
- <message>
- <to>rose</to>
- <from>alex</from>
- <body>Hi,My Girl!</body>
- </message>
3、使用XML Schema :
message.xml:
- <?xml version="1.0" standalone="no"? >
- <message xmlns=http://www.example.com xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=" message.xsd">
- <to>Rose</to>
- <from>Alex</from>
- <body>Hi,My Girl!</body>
- </message>
4、message的xsd XML Schema结构定义:
message.xsd:
- <?xml version="1.0"?>
- <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace=http://www.example.com xmlns="" elementFormDefault="qualified">
- <xs:element name="message">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="to" type="xs:string"/>
- <xs:element name="from" type="xs:string"/>
- <xs:element name="body" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:schema>
在XML里的XSD和DTD以及standalone的使用的更多相关文章
- 在XML里的XSD和DTD以及standalone的使用2----具体使用详解
		如何定义XSD并在XML中使用XSD 同时XSD可以对XML中的格式进行约束,当约束失败时给出提示. 下面以下使用VS2010为平台进行演示. 1.新建一个项目,然后在项目中添加xml架构文件(.xs ... 
- 在XML里的XSD和DTD以及standalone的使用3----具体使用详解
		本人亲自写的一个简单的测试例子 1.xsd定义 <?xml version="1.0" encoding="utf-8"?><xs:schem ... 
- 关于xml的一些知识,DTD,XSD
		DTD 文档类型定义(Document Type Definition)是一套关于标记符的语法规则.它是标准通用标记语言和 可扩展标记语言1.0版规格的一部分,是文档的验证机制.文档类型定义是一种保证 ... 
- web.xml文件的 xsd引用(或dtd引用)学习
		1. 为什么web.xml会有不同版本的xsd引用: JDK依赖变化: 或 servlet(JAVA EE)自身API的改变: 2. 为什么会有dtd和xsd两个版本的区别 我是在这篇文章中看到的,作 ... 
- 2018.5.14 XML文档类型定义----DTD
		1.DTD概述 一个完全意义上的XML文件不仅仅是Well-fromed(格式良好的),而且还应该是使用了一些自定义的标记ValidatingXMl(有效的)文档也就是说他必须遵守文档类型的定义中已声 ... 
- pom.xml里有红叉报错的解决办法
		pom.xml里有红叉报错的解决办法一: 1.把鼠标点在报的错上发现pom.xml报如下错误: Multiple annotations found at this line: - Failure t ... 
- XML通過XSD產生CLASS
		步驟一:通過XML獲取XSD 格式:xsd "XML的完整路徑帶文件名" /O:"輸出路徑不帶文件名". C:\Windows\system32>xsd ... 
- XML(二)之DTD——XML文件约束
		前面介绍了XML的作用和基本的格式,今天我给大家分享的是关于XML的约束.废话不多说,我们直接来正题! 一.DTD简介 1.1.DTD概述 DTD(Document Type Definition,文 ... 
- CentOS磁盘用完的解决办法,以及Tomcat的server.xml里无引用,但是项目仍启动的问题
		这是我2018年的第一篇博客...人真是懒了啊...最近在写微信小程序,觉得小程序做的也... 好了不吐槽了,言归正传 前言: 由于我之前不是买了个三年的香港服务器么 , 之前广州2的服务器我就没有续 ... 
随机推荐
- 利用WeX5集成百度地图
			最近做一个地图类的app经过几天的摸索,终于完成百度地图集成的界面先看效果:1.加载完成之后,页面加载制定位置的地图2.顶部能够输入地图的关键字,地图显示符合条件的下拉列表3.用户选择了相应的选项后, ... 
- Vb.Net Xml文档格式化
			最近在处理Webservice文档的时候,因为是未格式化的,需要处理,所以有了以下代码. #Region "Xml字符串转换成格式化的XML文件" 'txt_Result.Text ... 
- Python print语句
			1. 输出字符串 >>> strHello = 'Hello World' >>> print (strHello) Hello World 2. 格式化输出整数 ... 
- zhuan:ubuntu下安装Apache2+php+Mysql
			from: http://www.cnblogs.com/lynch_world/archive/2012/01/06/2314717.html ubuntu下安装Apache+PHP+Mysql 转 ... 
- ubuntu  下配置Python wxWidgets (复制自官方网站)
			全系统英文官网操作地址:http://wxpython.org/download.php Ubuntu 英文操作地址:http://wiki.wxpython.org/InstallingOnUbun ... 
- unity3d 延迟处理方法
			Invoke("方法名", 多少秒后执行); InvokeRepeating("方法名", 多少秒后执行,开始执行后隔多长时间再次执行一次); CancelIn ... 
- (转)《深入理解java虚拟机》学习笔记7——Java虚拟机类生命周期
			C/C++等纯编译语言从源码到最终执行一般要经历:编译.连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对 ... 
- 【linQ】DataContext   入门 ,  和 hql , jpql 一样好用
			DataContext 和 LINQ结合后会有巨大的能量 public class UserDataContext : DataContext { public Table<User> U ... 
- String声明为NULL和""的区别
			代码虐我千百遍,我待代码如初恋. String 声明为 NULL 则声明了一个变量不指向任何一块地址,则 length()会出现错误. 声明为"",则是一个长度为0的字符串. 
- 使用Yeoman搭建 AngularJS 应用 (7) —— 让我们搭建一个网页应用
			原文地址:http://yeoman.io/codelab/preview-inbrowser.html 开启你的服务 运行Grunt任务,通过输入下面的命令来创建一个本地Node的http服务,地址 ... 
