<?xml version="1.0" encoding="gb2312"?>
<studentlist>
  <student id="A101">
    <name>李华</name>
    <sex>男</sex>
    <birthday>1978.9.12</birthday>
    <score>92</score>
    <skill>Java</skill>
    <skill>Oracle</skill>
    <skill>C Sharp</skill>
    <skill>SQL Server</skill>
  </student>
<studentlist>

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="原子类型" targetNamespace="http://student.com" elementFormDefault="qualified"
    xmlns="http://student.com" xmlns:mstns="http://student.com" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="student">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="name" type="nameType"/>  
          <xs:element ref="age"/>
          <xs:element ref="sex"/>
          <xs:element ref="phone"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    
    <xs:simpleType name="nameType">
      <xs:restriction base="xs:string">
        <xs:minLength value="4"/>
        <xs:maxLength value="8"/>
      </xs:restriction>
    </xs:simpleType>
    
    <xs:element name="age">
      <xs:simpleType>
        <xs:restriction base="xs:int">
          <xs:minInclusive value="1"/>
          <xs:maxInclusive value="100"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    
      <xs:element name="sex">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="男"/>
          <xs:enumeration value="女"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    
    <xs:element name="phone">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\d{3}-\d{8}"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
</xs:schema>

MSDN上面一个例子:

  <!-- booksSchema.xml  -->     
    
  <?xml   version='1.0'?>   
  <!--   This   file   represents   a   fragment   of   a   book   store   inventory   database   -->   
  <bookstore   xmlns   =   "schema.xsd">   
      <book   genre="autobiography"   publicationdate="1981"   ISBN="1-861003-11-0">   
          <title>The   Autobiography   of   Benjamin   Franklin</title>   
          <author>   
              <first-name>Benjamin</first-name>   
              <last-name>Franklin</last-name>   
          </author>   
          <price>8.99</price>   
      </book>   
      <book   genre="novel"   publicationdate="1967"   ISBN="0-201-63361-2">   
          <title>The   Confidence   Man</title>   
          <author>   
              <first-name>Herman</first-name>   
              <last-name>Melville</last-name>   
          </author>   
          <price>11.99</price>   
      </book>   
      <book   genre="philosophy"   publicationdate="1991"   ISBN="1-861001-57-6">   
          <title>The   Gorgias</title>   
          <author>   
              <first-name>Sidas</first-name>   
              <last-name>Plato</last-name>   
          </author>   
          <price>9.99</price>   
      </book>   
  </bookstore>   
   <!-- schema.xsd -->  
    
  <xsd:schema   xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
          xmlns="schema.xsd"   
          elementFormDefault="qualified"   
          targetNamespace="schema.xsd">   
    
    <xsd:element   name="bookstore"   type="bookstoreType"/>   
    
    <xsd:complexType   name="bookstoreType">   
      <xsd:sequence   maxOccurs="unbounded">   
        <xsd:element   name="book"     type="bookType"/>   
      </xsd:sequence>   
    </xsd:complexType>   
    
    <xsd:complexType   name="bookType">   
      <xsd:sequence>   
        <xsd:element   name="title"   type="xsd:string"/>   
        <xsd:element   name="author"   type="authorName"/>   
        <xsd:element   name="price"     type="xsd:decimal"/>   
      </xsd:sequence>   
      <xsd:attribute   name="genre"   type="xsd:string"/>   
      <xsd:attribute   name="publicationdate"   type="xsd:string"/>   
      <xsd:attribute   name="ISBN"   type="xsd:string"/>   
    </xsd:complexType>   
    
    <xsd:complexType   name="authorName">   
      <xsd:sequence>   
        <xsd:element   name="first-name"     type="xsd:string"/>   
        <xsd:element   name="last-name"   type="xsd:string"/>   
      </xsd:sequence>   
    </xsd:complexType>   
    
  </xsd:schema>   
  <!-- bookSchemaFail.xml   -->
    
  <?xml   version='1.0'?>   
  <bookstore   xmlns="schema.xsd">   
      <book>   
          <author>   
              <first-name>Benjamin</first-name>   
              <last-name>Franklin</last-name>   
          </author>   
      </book>   
      <book   genre="novel">   
          <title>The   Confidence   Man</title>   
          <author>   
              <first-name>Herman</first-name>   
              <last-name>Melville</last-name>   
          </author>   
          <price>11.99</price>   
      </book>   
      <book   genre="philosophy">   
          <title>The   Gorgias</title>   
          <author>   
              <name>Plato</name>   
          </author>   
          <price>9.99</price>   
      </book>   
  </bookstore> 
    using   System;   
  using   System.Xml;   
  using   System.Xml.Schema;   
  using   System.IO;   
    
  namespace   SchemaData   
  {   
  ///   <summary>   
  ///   Validator   的摘要说明。   
  ///   </summary>   
  public   class   Validator   
  {   
    
  private   const   String   document3   =   "booksSchema.xml";   
  private   const   String   document4   =   "booksSchemaFail.xml";   
  private   const   String   document5   =   "schema.xsd";   
    
  private   XmlValidatingReader   myXmlValidatingReader   =   null;   
  private   XmlTextReader   myXmlTextReader   =   null;   
  private   Boolean   Success   =   true;   
  private   String[]   args   =   {document3,   document4,   document5};   
    
  public   Validator()   
  {   
  //   
  //   TODO:   在此处添加构造函数逻辑   
  //       
  }       
    
  public   void   Run()   
  {   
  try   
  {   
    
  XmlSchemaCollection   myXmlSchemaCollection   =   new   XmlSchemaCollection();   
  myXmlSchemaCollection.Add("schema.xsd"   ,   new   XmlTextReader(args[2]));   
    
  //   用架构验证   XML   文件   
  Success   =   true;   
  Console.WriteLine();   
  Console.WriteLine("正在用架构文件   schema.xsd   验证   XML   文件   booksSchema.xml   ...");   
  myXmlTextReader   =   new   XmlTextReader   (args[0]);   
  myXmlValidatingReader   =   new   XmlValidatingReader(myXmlTextReader);   
  myXmlValidatingReader.Schemas.Add(myXmlSchemaCollection);   
  myXmlValidatingReader.ValidationType   =   ValidationType.Schema;   
  Validate();   
    
  //   架构验证失败   
  Success   =   true;   
  Console.WriteLine();   
  Console.WriteLine("正在用架构文件   schema.xsd   验证   XML   文件   booksSchemaFail.xml   ...");   
  myXmlTextReader   =   new   XmlTextReader   (args[1]);   
  myXmlValidatingReader   =   new   XmlValidatingReader(myXmlTextReader);   
  myXmlValidatingReader.Schemas.Add(myXmlSchemaCollection);   
  myXmlValidatingReader.ValidationType   =   ValidationType.Schema;   
  Validate();   
  }   
    
  catch   (Exception   e)   
  {   
  Console.WriteLine("异常:"   +   e.ToString());   
  }   
    
  finally   
  {   
  //   通过   XmlTextReader   完成   
  if   (myXmlValidatingReader   !=   null)   
  myXmlValidatingReader.Close();   
  }   
  }   
    
  private   void   Validate()   
  {   
  try   
  {   
  //   设置验证事件处理程序   
  myXmlValidatingReader.ValidationEventHandler   +=   new   ValidationEventHandler   (this.ValidationEventHandle);   
    
  //   读取   XML   数据   
  while   (myXmlValidatingReader.Read()){}   
  Console.WriteLine   ("验证已完成。验证   {0}",   (Success==true   ?   "成功"   :   "失败"));   
  }   
  catch   (XmlException   e)   
  {   
  Console.WriteLine   ("Xml   异常:"   +   e.ToString());   
  }   
    
  catch   (Exception   e)   
  {   
  Console.WriteLine   ("异常:"   +   e.ToString());   
  }   
  }   
    
  public   void   ValidationEventHandle   (object   sender,   ValidationEventArgs   args)   
  {   
  Success   =   false;   
    
  Console.WriteLine("\t验证错误:"   +   args.Message);   
    
  if   (args.Severity   ==   XmlSeverityType.Warning)   
  {   
  Console.WriteLine("未找到要强制验证的架构。");   
  }     
  else   
  if   (args.Severity   ==   XmlSeverityType.Error)   
  {   
  Console.WriteLine("验证实例文档时发生验证错误。");   
  }     
    
  if   (args.Exception   !=   null)   //   XSD   架构验证错误   
  {   
  Console.WriteLine(args.Exception.SourceUri   +   ","   +     args.Exception.LinePosition   +   ","   +     args.Exception.LineNumber);   
  }   
    
  //if   (myXmlValidatingReader.Reader.LineNumber   >   0)   
  //{   
  //         Console.WriteLine("Line:   "+   myXmlValidatingReader.Reader.LineNumber   +   "   Position:   "   +   myXmlValidatingReader.Reader.LinePosition);   
  //}   
  }   
    
  }   
  }

XSD文件详解(二)的更多相关文章

  1. jni.h头文件详解二

    作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...

  2. 【转】 jni.h头文件详解(二)

    原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...

  3. XSD文件详解

    XSD (xml Schema Definition) Xml Schema的用途 1.  定义一个Xml文档中都有什么元素 2.  定义一个Xml文档中都会有什么属性 3.  定义某个节点的都有什么 ...

  4. PE文件详解二

    本文转自小甲鱼的PE文件相关教程,原文传送门 咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! 接着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构 ...

  5. MyBatis之Mapper XML 文件详解(二)-sql和入参

    sql 这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中.它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如: <sql id="use ...

  6. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

  7. Maven pom.xml文件详解

    Maven pom.xml文件详解 一.简介 POM全称是Project Object Model,即项目对象模型. pom.xml是maven的项目描述文件,它类似与antx的project.xml ...

  8. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  9. Shiro 安全框架详解二(概念+权限案例实现)

    Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...

随机推荐

  1. Android控件之GridView探究

    GridView是一项显示二维的viewgroup,可滚动的网格.一般用来显示多张图片. 以下模拟九宫图的实现,当鼠标点击图片时会进行相应的跳转链接. 目录结构 main.xml布局文件,存放Grid ...

  2. Qt之QStyledItemDelegate类

    主要用于自定义项的display和编辑: 通常有两个重载函数: // 决定该单元格的推荐大小 virtual QSize sizeHint(const QStyleOptionViewItem &am ...

  3. Git历险记(一)

    [编者按]作为分布式版本控制系统的重要代表——Git已经为越来越多的人所认识,它相对于我们熟悉的CVS.SVN甚至同时分布式控制系统的 Mercurial,有哪些优势和不足呢.这次InfoQ中文站有幸 ...

  4. Java 数字签名原理及产生

    数字签名与数字证书 关于数字签名的介绍可以参考以上这篇. 这里稍微说一下不对称加密的方式: 用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密. 这样比对称加密更安全 Java 中数字签名 ...

  5. Spark-Streaming之window滑动窗口应用

    Spark-Streaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作.每次掉落在窗口内的RDD的数据,会被 ...

  6. Python 并行任务技巧

    FROM:    http://segmentfault.com/a/1190000000382873 Python的并发处理能力臭名昭著.先撇开线程以及GIL方面的问题不说,我觉得多线程问题的根源不 ...

  7. 一个对比各种开源库的网站 libhunt

    https://www.libhunt.com/ https://github.com/LibHunt/awesome-javascript

  8. AndroidStudio快捷键大全

    很多近期学习移动开发的朋友都是通过Eclipse集成ADT开发安卓程序.但是谷歌已经推出了自己的亲儿子--Android Studio.可以说比原来的开发工具强大很多,现在各大公司也已经逐渐淘汰了Ec ...

  9. Spring3的quartz定时任务

    要使用定时任务,需要将quartz-1.5.2.jar加入lib,没有的话可以从下面地址下载: quartz-1.5.2.jar 有了这个再做个配置文件appctx-quartz.xml: <? ...

  10. 多数据源动态关联报表的制作(birt为例)

    使用Jasper或BIRT等报表工具时,常会碰到一些很规的统计,用报表工具本身或SQL都难以处理,比方与主表相关的子表分布在多个数据库中,报表要展现这些数据源动态关联的结果.集算器具有结构化强计算引擎 ...