• Schema文档概述123


    Schema系列文章

    1、XML对Schema文档的引用123

    2、Schema文档概述123

    3、Schema之简单元素、复合元素和属性

    4、Schema约束

    5、Schema指示器

    6、如何创建一份XMLSchema And XML Elements

    和XML文档一样,Schema文档同样有一个根元素,其他的元素都镶嵌在根元素内部,如:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="test"
        targetNamespace="http://tempuri.org/test.xsd"
        elementFormDefault="qualified"
        xmlns="http://tempuri.org/test.xsd"
        xmlns:mstns="http://tempuri.org/test.xsd"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
    > 
      <xs:element  name ="Person">
        <xs:complexType >
          <xs:sequence >
            <xs:element  name ="ID">
              <xs:simpleType >
                <xs:restriction  base ="xs:int">
                  <xs:minExclusive value ="101"></xs:minExclusive>
                  <xs:maxExclusive  value ="200"></xs:maxExclusive>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name ="Name"  type ="xs:string" ></xs:element>
            <xs:element  name ="Gender" >
              <xs:simpleType >
                <xs:restriction  base ="xs:string">
                  <xs:enumeration  value ="男"></xs:enumeration>
                  <xs:enumeration  value ="女"></xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    

    schema的关键就是:简单元素,复合元素和属性:

    1、所谓简单元素就是只含有文本的XML元素。它不可以含有其他元素或属性,如:

    <xs:element  name ="bigman">
        <xs:simpleType  >
          <xs:restriction  base ="xs:string">
            <xs:maxLength   value ="4"></xs:maxLength>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    

    simpleType指示Age元素为简单类型,restriction来对其进行约束(最小值为0,最大值为120);

    2、所谓复合元素就是说是含有其他元素或属性的XML元素;

     2.1、包含其他元素的复合元素的定义:

     <xs:element  name ="women">
        <xs:complexType  >
          <xs:sequence  >
            <xs:element  name ="girl"></xs:element>
            <xs:element  name ="biggirl"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    

     2.2、包含属性的复合元素的定义:

     <xs:element  name ="women">
        <xs:complexType  >
          <xs:sequence  >
            <xs:element  name ="girl"></xs:element>
            <xs:element  name ="biggirl"></xs:element>
          </xs:sequence>
          <xs:attribute  name ="weight"  type ="xs:double"></xs:attribute>
        </xs:complexType>
      </xs:element>
    

    2.3、复合元素对简单元素的引用:

    <xs:element  name ="bigman">
        <xs:simpleType  >
          <xs:restriction  base ="xs:string">
            <xs:maxLength   value ="4"></xs:maxLength>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element  name ="man" >
        <xs:complexType  >
          <xs:sequence  >
            <xs:element  ref ="bigman" ></xs:element>
            <xs:element  name ="smallman" type ="xs:string"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    

    复合元素man的第一个子元素引用了已经定义好的简单元素bigman,而他的第二个子元素则是最直接的一个简单元素;

    2.4、复合元素对复合元素的引用:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="test"
        targetNamespace="http://tempuri.org/test.xsd"
        elementFormDefault="qualified"
        xmlns="http://tempuri.org/test.xsd"
        xmlns:mstns="http://tempuri.org/test.xsd"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >
      <xs:element  name ="bigman">
        <xs:simpleType  >
          <xs:restriction  base ="xs:string">
            <xs:maxLength   value ="4"></xs:maxLength>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element  name ="man" >
        <xs:complexType  >
          <xs:sequence  >
            <xs:element  ref ="bigman" ></xs:element>
            <xs:element  name ="smallman" type ="xs:string"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element  name ="women" >
        <xs:complexType  >
          <xs:sequence  >
            <xs:element  name ="girl"  type ="xs:string" ></xs:element>
            <xs:element  name ="biggirl" type ="xs:string" ></xs:element>
          </xs:sequence>
          <xs:attribute  name ="weight"  type ="xs:double" use ="required"></xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element  name ="Person">
        <xs:complexType >
          <xs:sequence >
            <xs:element  ref ="man"></xs:element>
            <xs:element   ref ="women"></xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    

    该份Schema的定义可以理解为:人类包括男性和女性,而男性和女性又分别含有男孩和男人、女孩和女人,女性还有她们最在乎的体重这一属性,复合元素Person分别引用了man和women两个复合元素,同时复合元素man也引用了简单元素bigman;较复杂的Schema也就是元素之间的相互引用和相互嵌套构成的;

    更多参考http://www.cnblogs.com/caoxch/archive/2006/11/17/563856.html

  • 相关阅读:
    递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称
    P
    A
    今年暑假不AC1
    J
    今年暑假不AC
    A
    *max_element函数和*min_element函数
    1199: 房间安排
    素数
  • 原文地址:https://www.cnblogs.com/LittleFeiHu/p/1894076.html
Copyright © 2020-2023  润新知