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

本文共 2579 字,大约阅读时间需要 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         }

参考文献:

###

 

转载地址:http://djhoa.baihongyu.com/

你可能感兴趣的文章
FarBox--另类有趣的网站服务【转】
查看>>
在非纯色背景上,叠加背景透明的BUTTON和STATIC_TEXT控件
查看>>
Distributed2:Linked Server Login 添加和删除
查看>>
Java中取两位小数
查看>>
使用 ftrace 调试 Linux 内核【转】
查看>>
唯一聚集索引上的唯一和非唯一非聚集索引
查看>>
Spark新愿景:让深度学习变得更加易于使用——见https://github.com/yahoo/TensorFlowOnSpark...
查看>>
linux磁盘配额
查看>>
NFS文件共享服务器的搭建
查看>>
%r 和 %s 该用哪个?
查看>>
小公司职场不是“切糕”
查看>>
play工程部署到云服务器
查看>>
ListView 取消点击效果
查看>>
CentOS 6.5下编译安装新版LNMP
查看>>
Android Picasso
查看>>
top命令
查看>>
javascript的作用域
查看>>
新形势下初创B2B行业网站如何经营
查看>>
初心大陆-----python宝典 第五章之列表
查看>>
sysbench使用笔记
查看>>