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

网站开发 ssh 菜鸟温州网络公司网站建设

网站开发 ssh 菜鸟,温州网络公司网站建设,做电影网站被告版权,利用php做直播网站假使说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://www.zqtcl.cn/news/886482/

相关文章:

  • 网站建设课程小结二建证考试需要什么条件
  • 比较好的商城网站设计品牌策划案
  • 自适应科技公司网站模板做网站的公司深
  • 网站怎么吸引流量用淘宝做公司网站
  • asp做的网站后台怎么进去老河口城乡建设局网站
  • 中铁建设集团有限公司官方网站wordpress质感
  • 那个网站点击率高pc网站自动生成app
  • 东莞营销型网站建站淘金企业网站建设
  • 怎么用模板做网站手机python编程软件
  • 做视频网站都需要什么软件下载广东网站建设哪家专业
  • 开淘宝的店铺网站怎么做网页设计需要学什么书
  • 如何做收费网站微信小程序开发教程详解
  • 软件下载网站如何履行安全管理义务网站合同书
  • 普宁17网站一起做淘宝网站建设 丽水
  • 网站注册需要多少钱wordpress缓存失败
  • 西安h5响应式网站施工企业安全生产管理规范最新版
  • 电商平台网站建设如何安装网站模版
  • wordpress攻击跳转seo营销软件
  • 广东中山市做网站python做的网站如何部署
  • VPS做镜像网站wordpress 安装七牛
  • 雄安做网站优化的公司小程序开发公司哪里强
  • 做的网站没有注册国家建设部网站倪虹
  • 中英文网站怎么实现做网站有名的公司
  • 先网站开发后软件开发显示网站运行时间代码
  • 品牌网站制作流程图百度网页版入口页
  • 哪些人需要做网站网站开发工程师 招聘
  • 东莞网站建设多长时间如何将网址提交到一些权重比较高的网站
  • 阳江网站seo公司wordpress建站博客
  • 我想做京东网站淘宝怎么做的wordpress淘宝联盟转链
  • 虚拟钱包对接网站开发视频教程营销型网站建设要懂代码吗