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支持属性组。
对xml文件的操作:http://www.cnblogs.com/jhtchina/archive/2007/06/05/691610.html
<!-- booksSchema.xml -->
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore xmlns = "schema.xsd">
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<first-name>Sidas</first-name>
<last-name>Plato</last-name>
</author>
<price>9.99</price>
</book>
</bookstore>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <!-- schema.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="schema.xsd" elementFormDefault="qualified" targetNamespace="schema.xsd"> <xsd:element name="bookstore" type="bookstoreType"/> <xsd:complexType name="bookstoreType"> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="book" type="bookType"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="bookType"> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="authorName"/> <xsd:element name="price" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="genre" type="xsd:string"/> <xsd:attribute name="publicationdate" type="xsd:string"/> <xsd:attribute name="ISBN" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="authorName"> <xsd:sequence> <xsd:element name="first-name" type="xsd:string"/> <xsd:element name="last-name" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><!-- bookSchemaFail.xml --> <?xml version='1.0'?> <bookstore xmlns="schema.xsd"> <book> <author> <first-name>Benjamin</first-name> <last-name>Franklin</last-name> </author> </book> <book genre="novel"> <title>The Confidence Man</title> <author> <first-name>Herman</first-name> <last-name>Melville</last-name> </author> <price>11.99</price> </book> <book genre="philosophy"> <title>The Gorgias</title> <author> <name>Plato</name> </author> <price>9.99</price> </book> </bookstore>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> using System; using System.Xml; using System.Xml.Schema; using System.IO; namespace SchemaData { /// <summary> /// Validator 的摘要说明。 /// </summary> public class Validator { private const String document3 = " booksSchema.xml " ; private const String document4 = " booksSchemaFail.xml " ; private const String document5 = " schema.xsd " ; private XmlValidatingReader myXmlValidatingReader = null ; private XmlTextReader myXmlTextReader = null ; private Boolean Success = true ; private String[] args = {document3, document4, document5}; public Validator() { // // TODO: 在此处添加构造函数逻辑 // } public void Run() { try { XmlSchemaCollection myXmlSchemaCollection = new XmlSchemaCollection(); myXmlSchemaCollection.Add( " schema.xsd " , new XmlTextReader(args[ 2 ])); // 用架构验证 XML 文件 Success = true ; Console.WriteLine(); Console.WriteLine( " 正在用架构文件 schema.xsd 验证 XML 文件 booksSchema.xml ... " ); myXmlTextReader = new XmlTextReader (args[ 0 ]); myXmlValidatingReader = new XmlValidatingReader(myXmlTextReader); myXmlValidatingReader.Schemas.Add(myXmlSchemaCollection); myXmlValidatingReader.ValidationType = ValidationType.Schema; Validate(); // 架构验证失败 Success = true ; Console.WriteLine(); Console.WriteLine( " 正在用架构文件 schema.xsd 验证 XML 文件 booksSchemaFail.xml ... " ); myXmlTextReader = new XmlTextReader (args[ 1 ]); myXmlValidatingReader = new XmlValidatingReader(myXmlTextReader); myXmlValidatingReader.Schemas.Add(myXmlSchemaCollection); myXmlValidatingReader.ValidationType = ValidationType.Schema; Validate(); } catch (Exception e) { Console.WriteLine( " 异常: " + e.ToString()); } finally { // 通过 XmlTextReader 完成 if (myXmlValidatingReader != null ) myXmlValidatingReader.Close(); } } private void Validate() { try { // 设置验证事件处理程序 myXmlValidatingReader.ValidationEventHandler += new ValidationEventHandler ( this .ValidationEventHandle); // 读取 XML 数据 while (myXmlValidatingReader.Read()){} Console.WriteLine ( " 验证已完成。验证 {0} " , (Success == true ? " 成功 " : " 失败 " )); } catch (XmlException e) { Console.WriteLine ( " Xml 异常: " + e.ToString()); } catch (Exception e) { Console.WriteLine ( " 异常: " + e.ToString()); } } public void ValidationEventHandle ( object sender, ValidationEventArgs args) { Success = false ; Console.WriteLine( " \t验证错误: " + args.Message); if (args.Severity == XmlSeverityType.Warning) { Console.WriteLine( " 未找到要强制验证的架构。 " ); } else if (args.Severity == XmlSeverityType.Error) { Console.WriteLine( " 验证实例文档时发生验证错误。 " ); } if (args.Exception != null ) // XSD 架构验证错误 { Console.WriteLine(args.Exception.SourceUri + " , " + args.Exception.LinePosition + " , " + args.Exception.LineNumber); } // if (myXmlValidatingReader.Reader.LineNumber > 0) // { // Console.WriteLine("Line: "+ myXmlValidatingReader.Reader.LineNumber + " Position: " + myXmlValidatingReader.Reader.LinePosition); // } } } }
XSD文件与xml 文件相关推荐
- java文件和xml文件_用Java分割大型XML文件
java文件和xml文件 上周,我被要求用Java编写一些东西,该东西能够将一个30GB的XML文件拆分为可配置文件大小的较小部分. 文件的使用者将是一个中间件应用程序,该应用程序在XML的大尺寸方面 ...
- sumo路由文件(.rou.xml文件)的生成以及关于生成交通流的一些方法
1. 首先准备好一个构建的路网(.net.xml)文件 这里我所利用的一个路网构造如下: 2. 路由文件(.rou.xml)文件 可以在netedit里边对路网个各个道路边缘id长度以及相关参数进行配 ...
- GDCM:将DICOM文件和XML文件相互转换的测试程序
GDCM:将DICOM文件和XML文件相互转换 GDCM:将DICOM文件和XML文件相互转换 GDCM:将DICOM文件和XML文件相互转换 #include "gdcmFilename. ...
- 比赛中学习(2)-voc数据集制作中将.txt文件变为.xml文件
描述 和voc数据集制作有一点不同的是,因为参加的比赛中坐标给了4个,也就是说目标的形状可能是是平行四边形.所以和voc数据集有点不同啊.放出一张.txt文件的形式 最后的结果大致是这样的(和上面的图 ...
- (C++)将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法
将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法 思路:将数据库所有要导出的信息通过sql语句得到,存储到结构体中,然后将结构体的内容通过自定义的xml格式导出. 此方法使用的是T ...
- 安卓开发的java文件与xml文件
安卓开发新建Activity时创建的java文件和xml文件 作用: Android布局以xml形式写在res/layout文件夹中,这样不光可以将将前台界面与业务逻辑区分开,让代码更加清晰,将这些控 ...
- 跨域策略文件crossdomain.xml文件
使用crossdomain.xml让Flash可以跨域传输数据 一.crossdomain.xml文件的作用 跨域,顾名思义就是需要的资源不在自己的域服务器上,需要访问其他域服务器.跨域策略文 ...
- Java生成XML文件与XML文件的写入
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html 既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了. 与解析X ...
- 关于跨域策略文件crossdomain.xml文件
2019独角兽企业重金招聘Python工程师标准>>> http://www.xiaonei.com/crossdomain.xml <!– http://www.xiaone ...
最新文章
- LeetCode简单题之将找到的值乘以2
- PCL:点云数据基于法线的边界提取(从最初的法线估计理论推导到最终的边界提取)
- R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text label)
- Linux中fdisk硬盘分区方法
- Linux环境下的Popush部署——张凯
- visualvm安装插件
- fixed 相对于父容器定位
- 评一本书:C#.net 手机动漫游戏设计教程 (一)
- 事务回滚什么意思 try_Spring事务管理(一)快速入门
- 【重磅】《演化学习:理论与算法进展》| 南大周志华、俞扬、钱超重要成果...
- C#在Word表格中插入图片调整大小Debug
- 办公室计算机网络使用情况,办公室中有多台电脑上网需求的解决方法
- _crol_和左移的区别
- 三国演义网页游戏私服架设教程
- js 5文钱可以买一只公鸡,3文钱可以买一只母鸡,一文钱可以买3只小鸡,现在100文买100只鸡,请问各多少只
- 封装一个简单实用的朋友圈
- java使用jbarcode生成条形码
- uniapp ios打包详细步骤
- 安卓大作业-字典App 可以查询汉字 可以玩成语接龙游戏
- JAVA技术交流(学习群):51194570;JAVA技术交流(应用群):51194804
热门文章
- 毕业论文word排版技巧
- 论文笔记|固定效应的解释和使用
- 通信协议基础以及常用的串口通信协议
- c语言中break语句的功能,C语言break语句
- FileReader读取文件
- vscode 下编译k210
- 云测试(cloud testing)之我见
- ER图和EER图的区别
- mysql数据库预处理_一种MySQL数据库中间件预处理方法与流程
- 居民物业管理系统(数据结构单链表版)