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

哪家做网站好 成都建设网站上传代码

哪家做网站好 成都,建设网站上传代码,跨境电商快递怎么发到国外,删负面的网站假使说XML是一个数据库#xff0c;那么XSD就是这个数据库的结构。由此可见#xff0c;XSD是如此重要#xff0c;如果没有它#xff0c;我们如何声明以及验证我们需要的XML数据文件的格式和合法性呢#xff1f;那是不可能完成的任务#xff0c;如果你将XML数据文件当作普通…假使说XML是一个数据库那么XSD就是这个数据库的结构。由此可见XSD是如此重要如果没有它我们如何声明以及验证我们需要的XML数据文件的格式和合法性呢那是不可能完成的任务如果你将XML数据文件当作普通的文本文件去验证的话。 我用下面一个例子来解释如何定义XSD以及如何使用它来验证 1. 首先来看一下我们的数据文件 ?xml version1.0 encodingutf-8 ? OrderOrderID10248/OrderIDOrderDate2009-01-01/OrderDateDetailsOrderItemItemNumber1/ItemNumberProductID1/ProductIDQuantity2/QuantityUnitPrice20/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID1/ProductIDQuantity2/QuantityUnitPrice20/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID1/ProductIDQuantity2/QuantityUnitPrice20/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID1/ProductIDQuantity2/QuantityUnitPrice20/UnitPrice/OrderItem/Details /Order这是一个典型的订单数据。我们来分析一下这份文档 必须有OrderID而且必须是整数型,integer必须有OrderDate而且必须是日期型datetime必须有至少一个OrderItem这个Item必须包含四部分信息 ItemNumberintegerProductIDintegerQuantity,doubleUnitPrice,double  2. 我们来定义一个XSD文件。有关XSD的知识很多有兴趣的朋友可以参考下面这个链接 http://www.w3school.com.cn/schema/index.asp ?xml version1.0 encodingutf-8? xs:schema idOrderSchematargetNamespacehttp://tempuri.org/OrderSchema.xsdelementFormDefaultqualifiedxmlnshttp://tempuri.org/OrderSchema.xsdxmlns:mstnshttp://tempuri.org/OrderSchema.xsdxmlns:xshttp://www.w3.org/2001/XMLSchema xs:element nameOrderxs:complexTypexs:sequencexs:element nameOrderID typexs:integer/xs:elementxs:element nameOrderDate typexs:date/xs:elementxs:element nameDetailsxs:complexTypexs:group refOrderItemGroup minOccurs1 maxOccursunbounded/xs:group/xs:complexType/xs:element/xs:sequence/xs:complexType/xs:element!-- 定义一个OrderItem的复杂类型 --xs:group nameOrderItemGroupxs:sequencexs:element nameOrderItemxs:complexTypexs:sequencexs:element nameItemNumber typexs:integer/xs:elementxs:element nameProductID typexs:integer/xs:elementxs:element nameQuantity typexs:double/xs:elementxs:element nameUnitPrice typexs:double/xs:element/xs:sequence/xs:complexType/xs:element/xs:sequence/xs:group /xs:schema   【备注】这个架构也可以通过Visual Studio的“XML”菜单》“创建架构”得到。3. 下面来看看如何使用该架构对数据文件进行验证 .NET Framework并没有提供简单易行的验证方法我们需要写一些代码 % Page LanguageC# AutoEventWireuptrue CodeBehindDefault.aspx.cs InheritsWebApplication1._Default%!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdhtml xmlnshttp://www.w3.org/1999/xhtml head runatservertitle/title /head bodyform idform1 runatserverdivasp:Button IDbtValidateFile runatserver Text验证文档 OnClickValidateFile //div/form /body /html代码文件 using System; using System.Text; using System.Xml;namespace WebApplication1 {public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}StringBuilder sb null;protected void ValidateFile(object sender, EventArgs e){string dataFile Server.MapPath(Order.xml);string schemaFile Server.MapPath(OrderSchema.xsd);string namespaceUrl http://tempuri.org/OrderSchema.xsd;XmlReaderSettings settings new XmlReaderSettings();settings.ValidationType ValidationType.Schema;settings.Schemas.Add(namespaceUrl, schemaFile);settings.ValidationEventHandler new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);string errorMessage这不是一个合乎规范的数据文件;sb new StringBuilder();XmlReader reader XmlReader.Create(dataFile, settings);try{reader.MoveToContent();while (reader.Read()){if (reader.NodeType XmlNodeType.Document reader.NamespaceURI ! namespaceUrl){Response.Write(errorMessage);break;}}}catch (XmlException ex){sb.AppendFormat({0}br /, ex.Message);}finally{reader.Close();}if (sb.Length 0)Response.Write(该文档是合法的);elseResponse.Write(sb.ToString());}void settings_ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e){sb.AppendFormat({0}br /, e.Message);}} }准备就绪之后我们可以立即按下F5键进行调试。因为现在文档确实是合法的所以点击按钮之后会输出一个正确的消息。 我们故意将文档改成下面这样子 ?xml version1.0 encodingutf-8 ? Order xmlnshttp://tempuri.org/OrderSchema.xsdOrderID1/OrderIDOrderDate2009-1-1/OrderDateDetails/Details /Order 我们没有提供OrderItem,同时OrderDate的格式是不正确的。XML里面的日期必须是类似这样的格式YYYY-MM-DD) 此时我们去点击页面中的按钮就会发现下面这样的错误提示   小结一下我们可以通过XMLReader的读取验证XML文档的合法性。关键点在于我们指定给这个XMLReader一些Settings 这些代码还可以封装一下以免更好的重复利用。 之前有一位XML方面的MVP也专门写了一个组件可以方便地做验证。请参考http://msdn.microsoft.com/zh-cn/library/aa468554.aspx   4. 对于有命名空间的情况则会复杂很多 我已经多次提到如果有命名空间的情况XML的操作包括验证和转换等等都会变得更加复杂。但仍然需要面对这个现实 我们假设XML数据文件是类似下面的格式 ?xml version1.0 encodingutf-8 ? Order xmlns:dhttp://www.xizhang.comd:OrderID1/d:OrderIDOrderDate2009-01-01/OrderDateDetailsOrderItemItemNumber1/ItemNumberProductID2/ProductIDQuantity3/QuantityUnitPrice3/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID2/ProductIDQuantity3/QuantityUnitPrice3/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID2/ProductIDQuantity3/QuantityUnitPrice3/UnitPrice/OrderItem/Details /Order 与之前的文档相比这个文档多了一个命名空间的信息在OrderID上面我们加上了命名空间的限定 我们通过点击菜单“XML”》“创建架构”来生成架构。它会生成两个文件分别如下 Order.xsd ?xml version1.0 encodingutf-8? xs:schema xmlns:dhttp://www.xizhang.com attributeFormDefaultunqualified elementFormDefaultqualified xmlns:xshttp://www.w3.org/2001/XMLSchemaxs:import namespacehttp://www.xizhang.com /xs:element nameOrderxs:complexTypexs:sequencexs:element refd:OrderID /xs:element nameOrderDate typexs:date /xs:element nameDetailsxs:complexTypexs:sequencexs:element maxOccursunbounded nameOrderItemxs:complexTypexs:sequencexs:element nameItemNumber typexs:unsignedByte /xs:element nameProductID typexs:unsignedByte /xs:element nameQuantity typexs:unsignedByte /xs:element nameUnitPrice typexs:unsignedByte //xs:sequence/xs:complexType/xs:element/xs:sequence/xs:complexType/xs:element/xs:sequence/xs:complexType/xs:element /xs:schema   还有一个Order1.xsd ?xml version1.0 encodingutf-8? xs:schema xmlns:tnshttp://www.xizhang.com attributeFormDefaultunqualified elementFormDefaultqualified targetNamespacehttp://www.xizhang.com xmlns:xshttp://www.w3.org/2001/XMLSchemaxs:element nameOrderID typexs:unsignedByte / /xs:schema     我们注意到在Order.xsd中用了一个ref的方式实现了一个元素的引用。其他它是引用了Order1.xsd中的OrderID元素。 但是我们怎么知道是这样的引用关系呢我们并没有在Order.XSD中看到这个关系呢 其实是有的。你可以在Order.xsd文件中按下F4键查看属性 点击架构右侧的那个按钮 下面我们来测试一下带有命名空间的情况下如何验证 首先你应该选中Order.xsd和Order1.xsd并将它们保存到项目根目录。因为他们默认是被创建在临时文件夹的为Order.xsd添加一个TargetNamespace?xml version1.0 encodingutf-8? xs:schema xmlns:dhttp://www.xizhang.com attributeFormDefaultunqualified elementFormDefaultqualified xmlns:xshttp://www.w3.org/2001/XMLSchema targetNamespacehttp://www.xizhang.comxs:import namespacehttp://www.xizhang.com /xs:element nameOrderxs:complexTypexs:sequencexs:element refd:OrderID /xs:element nameOrderDate typexs:date /xs:element nameDetailsxs:complexTypexs:sequencexs:element maxOccursunbounded nameOrderItemxs:complexTypexs:sequencexs:element nameItemNumber typexs:unsignedByte /xs:element nameProductID typexs:unsignedByte /xs:element nameQuantity typexs:unsignedByte /xs:element nameUnitPrice typexs:unsignedByte //xs:sequence/xs:complexType/xs:element/xs:sequence/xs:complexType/xs:element/xs:sequence/xs:complexType/xs:element /xs:schema   修改一下代码  string dataFile Server.MapPath(Order.xml);string schemaFile Server.MapPath(Order.xsd);string namespaceUrl http://www.xizhang.com;XmlReaderSettings settings new XmlReaderSettings();settings.ValidationType ValidationType.Schema;settings.Schemas.Add(namespaceUrl, schemaFile);settings.Schemas.Add(namespaceUrl, Server.MapPath(Order1.xsd));//这里要加第二个文件     同样道理我们故意去修改一下数据文件 ?xml version1.0 encodingutf-8 ? Order xmlns:dhttp://www.xizhang.comd:OrderID1/d:OrderIDOrderDate2009/1/1/OrderDateDetailsOrderItemItemNumber1/ItemNumberProductID2/ProductIDQuantity3/QuantityUnitPrice3/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID2/ProductIDQuantity3/QuantityUnitPrice3/UnitPrice/OrderItemOrderItemItemNumber1/ItemNumberProductID2/ProductIDQuantity3/QuantityUnitPrice3/UnitPrice/OrderItem/Details /Order   小结 这样我们就完成了对包含有命名空间的XML数据文件的验证工作。这个操作需要两个XML架构文件他们之间形成一个引用关系。如果有多个不同的命名空间则可能会有多个辅助的架构文件。   需要注意的是在Order.xsd中最好是用下面的语法去定义schemaLocation xs:import namespacehttp://www.xizhang.com schemaLocationOrder1.xsd / 如果这样定义了代码中就可以省略掉添加第二个架构文件的代码 //settings.Schemas.Add(namespaceUrl, Server.MapPath(Order1.xsd));//这里要加第二个文件转载于:https://www.cnblogs.com/amylis_chen/archive/2012/06/28/2568901.html
http://wiki.neutronadmin.com/news/442199/

相关文章:

  • 阿里网站建设需要准备什么软件企业展厅设计费用多少
  • 360建筑网密码忘了如何设定旅游网站seo核心关键词
  • 建站模板有哪些linux本地wordpress
  • 装饰设计网站大全东莞网站建设公司 h5
  • 网站优化外包做网站推广的价格
  • 兰州网站建设q479185700惠百度自己网站排名
  • 资金盘做网站oppo软件商店安装
  • 网页设计网站制作公司谷歌推广网站怎么做
  • 网站制作开发的步骤和方法郑州做网站茂睿科技
  • 鹰潭网站建设做企业展示型网站
  • 柳州企业网站建设价格做公众号推送的网站
  • 网站资料库建设的功能需求化妆品网站方案
  • 开发手机网站用什么语言电子商务商城网站建设
  • 10G网站空间服装公司网站建设方案
  • 北京网站推广服务wordpress当前位置
  • 企业模拟网站建设石家庄高端网站开发
  • 网站开发培训好学吗深圳网站建设专家
  • 专业购物网站建设价格王野天与葛优
  • 湖南省建设工程造价总站网站网站设置域名
  • 一站式网站建设业务网站建设售价多少钱
  • pc网站建设哪个好网站推广优化外包便宜
  • 绥化建设网站重庆建设工程施工安全管理网
  • 东莞哪里有网站建设厂家调研报告
  • 山东跨境电商建站公司公司注册网上核名流程
  • 深圳网页制作培训吉林网站优化
  • 广州微信网站建设咨询wordpress解压到空间
  • 上海网站设计工作室遵义直播遵义新闻官网
  • 开源课程 视频网站模板如何 做网站挣钱
  • 电子商务网站建设的一般步骤有泉州网站设计制作
  • 网站制作自助免费模板网站都有什么区别