<?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. AFNetworking 2.0 Tutorial

    Update 1/18/2014: Fully updated for iOS 7 and AFNetworking 2.0 (original post by Scott Sherwood, upd ...

  2. Features (OCMock 2)

    This page describes the features present in OCMock 2.x, using the traditional syntax. All these feat ...

  3. 安装php扩展模块参数memcache和memcached在php中的应用

    一, memcache和memcached的区别与关系统php要想去访问memcached就得需要memcache扩展,这个道理和php连接mysql一样. 你不安装memcache扩展就没法识别me ...

  4. jqGrid怎么设置初始化页面时不加载数据(不向服务器请求数据)

    最近做一些表格一直用到jqGrid,今天遇到一个问题: 1.就是页面加载的时候数据不显示,点击搜索才根据请求从服务器返回并显示内容. 2.默认不从服务器请求数据(不然在开发者工具下会显示请求不到数据的 ...

  5. boost/config.hpp文件详解

    简要概述 今天突发奇想想看一下boost/config.hpp的内部实现,以及他有哪些功能. 这个头文件都有一个类似的结构,先包含一个头文件,假设为头文件1,然后包含这个头文 件中定义的宏.对于头文件 ...

  6. 【Hadoop】MR 切片机制 & MR全流程

    1.概念 2.Split机制 3.MR Shuffle过程 4.MR中REDUCE与MAP写作过程 5.MR全貌

  7. Java高级特性—并发包

    1). java并发包介绍 JDK5.0 以后的版本都引入了高级并发特性,大多数的特性在java.util.concurrent 包中,是专门用于多线程发编程的, 主要包含原子量.并发集合.同步器.可 ...

  8. 斯坦福《机器学习》Lesson5感想———1、成学习算法

    在前面几课里的学习算法的思路都是给定数据集以后.确定基于此数据集的最佳如果H函数,通过学习算法确定最佳如果H的各个參数,然后通过最佳如果函数H得出新的数据集的结果.在这一课里介绍了一种新的思路,它的核 ...

  9. Maven 小技巧之 自动更新你的jar包

    在做selenium 自动化测试的时候,我们经常遇到这样的情况:浏览器悄悄升级了.紧接着所有测试用例都Fail. 检查过日志之后发现,原来是升级过的浏览器,我们用原来的selenium已经无法操作. ...

  10. ACM-百度之星资格赛之Labyrinth——hdu4826

    Labyrinth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...