博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xsd
阅读量:7079 次
发布时间:2019-06-28

本文共 2630 字,大约阅读时间需要 8 分钟。

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             else20             {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             else14             {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         }

参考文献:

###

 

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

你可能感兴趣的文章
前端周刊第53期:React 社区的撕逼
查看>>
SVG之ViewBox
查看>>
linux下的进程(1)
查看>>
Laravel核心——服务容器的细节特性
查看>>
HTML5 原生拖放
查看>>
[转] MySQL死锁问题分析及解决方法实例详解
查看>>
React Native CodePush实践小结
查看>>
怎么才算是高级工程师?
查看>>
JavaScript学习笔记 - 基本概念
查看>>
Angular 2 Change Detection - 1
查看>>
ReactJS新闻 #19 React Conf 2017将于3/13开始
查看>>
CI-CodeIgniter中“超级对象”:$CI =& get_instance()
查看>>
设计模式之单例模式
查看>>
Scrapy学习(四) 爬取微博数据
查看>>
LinkedIn庄振运:从国家部委公务员到硅谷系统性能专家,创新是唯一主旋律
查看>>
Vue性能优化:如何实现延迟加载和代码拆分?
查看>>
小米大数据:借助Apache Kylin打造高效、易用的一站式OLAP解决方案
查看>>
2019年Java和JVM生态系统预测:OpenJDK将成为Java运行时市场领导者
查看>>
Peter Cnudde谈雅虎如何使用Hadoop、深度学习和大数据平台
查看>>
Spark Streaming 作者,Alluxio 的创始人李浩源:AI 潮流对做数据存储业务公司的挑战...
查看>>