当前位置: 首页 > news >正文

xsd

XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,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。

WW中在ConfigurationLoader中使用了xsd进行配置文件的验证。

参见public static World Load(string filename, Cache cache)方法中的代码段54-76行:

 1   WorldWindSettings settings = finfo.GetValue(null) as WorldWindSettings;
 2 
 3             XmlReaderSettings readerSettings = new XmlReaderSettings();
 4 
 5             if (settings.ValidateXML)
 6             {
 7                 Log.Write(Log.Levels.Debug, "CONF", "validating " + filename + " against WorldXmlDescriptor.xsd and LayerSet.xsd");
 8                 readerSettings.ValidationType = ValidationType.Schema;
 9                 /* load the schema to validate against instead of hoping for an inline schema reference */
10                 XmlSchemaSet schemas = new XmlSchemaSet();
11                 schemas.Add(null, settings.ConfigPath + "/WorldXmlDescriptor.xsd");
12                 schemas.Add(null, settings.ConfigPath + "/Earth/LayerSet.xsd");
13 
14 
15                 readerSettings.Schemas = schemas;
16                 readerSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationCallback);
17                 readerSettings.ValidationFlags |= System.Xml.Schema.XmlSchemaValidationFlags.ReportValidationWarnings;
18             }
19             else
20             {
21                 Log.Write(Log.Levels.Debug, "CONF", "loading " + filename + " without validation");
22                 readerSettings.ValidationType = ValidationType.None;
23             }

事件方法:

 1 public static void XMLValidationCallback(object sender, ValidationEventArgs args)
 2         {
 3             string file = "(unknown)";
 4             XmlReader reader = sender as XmlReader;
 5             if (reader != null)
 6                 file = reader.BaseURI;
 7 
 8             if (args.Severity == XmlSeverityType.Warning)
 9             {
10                 Log.Write(Log.Levels.Warning, "CONF", "Warning: " + args.Message);
11                 Log.Write(Log.Levels.Warning, "CONF", "  in " + file);
12             }
13             else
14             {
15                 Log.Write(Log.Levels.Error, "CONF", "Error: " + args.Message);
16                 Log.Write(Log.Levels.Error, "CONF", "  in " + file);
17                 //throw args.Exception;
18             }
19         }

参考文献:

http://www.w3school.com.cn/schema/index.asp

http://wenku.baidu.com/view/1721f56f1eb91a37f1115c62.html###

http://www.cnblogs.com/chenqingwei/archive/2010/05/10/1731743.html

 

转载于:https://www.cnblogs.com/yhlx125/p/3199462.html

相关文章:

  • Apache Struts2 远程命令执行漏洞
  • perf 简介
  • linux 压缩解压缩命令
  • Qt4过渡至Qt5
  • 啊速度发说法
  • Tiny6410 LED字符设备驱动
  • java对文件的检索
  • ×××服务让用户看得见
  • Sencha Touch 2.1学习图表Chart概述
  • tail tailf 使用
  • openal 基础知识3
  • JavaScript 表单验证
  • 网站架构资料收集整理
  • Parallels Desktop 8 虚拟机安装 windows 教程
  • 2013渣打科营编程马拉松赛样题
  • 「译」Node.js Streams 基础
  • 【刷算法】从上往下打印二叉树
  • Android开源项目规范总结
  • ES6--对象的扩展
  • gcc介绍及安装
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • js学习笔记
  • laravel 用artisan创建自己的模板
  • MobX
  • Python利用正则抓取网页内容保存到本地
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 我的业余项目总结
  • 小程序测试方案初探
  • 转载:[译] 内容加速黑科技趣谈
  • Mac 上flink的安装与启动
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (23)Linux的软硬连接
  • (二十四)Flask之flask-session组件
  • (接口封装)
  • (三)模仿学习-Action数据的模仿
  • (顺序)容器的好伴侣 --- 容器适配器
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core控制台应用程序初识
  • .net MySql
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET运行机制
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .skip() 和 .only() 的使用
  • ??eclipse的安装配置问题!??
  • [BZOJ1008][HNOI2008]越狱
  • [C#][DevPress]事件委托的使用
  • [C++随笔录] 红黑树
  • [codevs 1515]跳 【解题报告】
  • [Godot] 3D拾取