XML Schema小知识

本文详细介绍了XML Schema的基本概念及其与DTD的区别,包括如何创建和应用Schema文档,对简单与复合元素进行约束的方法,并探讨了属性及指示器的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



                                                                                    XML Schema 小知识
一、XML Schema 简介
1.XML Schema:XML Schema语言也被称为XML Schema Definition (XSD)
2.XML Schema是以XML语言为基础,可用与替代DTD.
3.一份XML schema文件描述XML文档的结构

二、XML Schema 是DTD的“接任者”
1.XML Schema针对将来的额外内容是可扩展的
2.XML Schema内容比DTD丰富,作用也更大
3.XML Schema是以XML语言编写而成的
4.XML Schema支持数据类型
5.XML Schema支持名称空间(namespaces)

三、创建一个schema:
1.创建一个后缀为xsd的文件,文件格式为xml,有文档说明.
2.以schema标签为根标签(<schema>元素是每份XML Schema文件的根元素)
3.在schema标签中添加命名空间:
 a)首先引入xmlns:xs="
http://www.w3.org/2001/XMLSchema"。
 b)targetNameSpace="
http://www.feicui.com/newschema"声明一个我们自己的命名空间(uri)。
 c)xmlns:myns="
http://www.feicui.com/newschema"。
 d)elementFormDefault="qualified"严格按照我们的schema文档约束我们要编写的xml文件。
4.然后我们就可以再schema标签中添加其他标签来编写我们的xml约束

四、将schema文档引入要约束的xml文件
1.在根标签中,加入:
 a)xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"要引入我们的shema文档需要使用这个命名空间中的属性。
 b)xsi:schemaLocation="
http://www.feicui.org/feicuischema newschema.xsd" 使用上面引入的命名空间xsi中的schemalocation读取我们的schema文档,首先要填入我们的schema文档的命名空间的uri,然后空格,再填入我们的schema文档的名字。
 c)在通过引入命名空间的方法,将我们的schema文档的命名空间引入

五、简单元素(Simple Elements)
1.简单元素:是只含有文本的XML元素。它不可以含有其他元件或属性
    格式:<xs:element name="xxx" type="yyy"/>(default:默认值,fixed:固定值)
    eg:<element name="price">
  <simpleType>
        <restriction base="decimal">
         <minExclusive value="20"></minExclusive>
           <maxExclusive value="1000"></maxExclusive>
       </restriction>
  </simpleType>
     </element>
   
2.对简单元素的内容约束:
        a)首先在我们要约束的元素中添加一个simpleType的标签
 b)然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的
 c)在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
 d)枚举约束 enumeration
 e)对大小值的限定
               mininclusive 设定最小值,这种包含最小值的
              minEnclusive 设定最小值,但是不包含最小值
              maxinclusive 设定最大值,包含最大值
              maxEnclusive 设定最大值,但是不包含最大值
 f)样式约束
      [a-zA-Z]这一位字符,在a-z的大小写中任选一个填入
      male|female这里需要多选一来填入信息内容
      ([a-z][0-9])+  这里小写字母+一位数字的格式重复(可以1次可以多次)

六、复合元素(Complex Elements)
1.复合元素:是含有其他元素和/或属性的XML元素
  复合元素类型:
        a)空元素
        b)只含有其他元素的元素
        c)只含有文本的元素
        d)含有文本和其他元素的元素
  eg:<element name="result">
  <complexType>
   <sequence>
        <element name="keyword"></element>
        <element name="province">
         <simpleType>
             <restriction base="string">
                 <enumeration value="四川"></enumeration>
                 <enumeration value="青海"></enumeration>
                 <enumeration value="广东"></enumeration>
                 <enumeration value="湖南"></enumeration>
                 </restriction>
          </simpleType>
         </element>
       <element name="area" default="成都"></element>
        <element name="pn" default="1"></element>
        <element name="data"></element>
        <element name="total">
          <simpleType>
             <restriction base="integer">
                <maxExclusive value="1000"></maxExclusive>
                <minInclusive value="10"></minInclusive>
                </restriction>
               </simpleType>
            </element>
         </sequence>
  </complexType>
 </element>
 
2.对复合元素的内容约束:
1.首先我们在要约束的元素中添加一个complexType的标签。
2.然后我们要填入指示器(eq:sequence)。
3.添加子元素,子元素可以使复合元素也可以使简单元素。

七、XSD 属性
1.简单的元素没有属性。当元素含有属性时,它会被认为是复合元素。但属性本身总是被声明为简单类型
2.格式:<xs:attribute name="xxx" type="yyy"/>,xxx是属性的名称,yyy指定了属性的数据类型(string/decimal/integer/boolean/date)
3.属性定义可以定义在complexType中
4.属性定义中use表示这个属性是否需要出现在元素中
        a)optional:可出现可不出现
 b)prohibited:不能出现
 c)required:必须出现
5.如果要在简单元素中添加属性,还是需要complexType,只是我们需要在这个标签中使用simplecontent标签,其中使用extension标签,用来扩展我们的简单元素,添加属性
 
八、指示器(Indicators)
1.顺序指示器:
        a)All:指定了子元素可以以任意顺序出现,只出现一次
        b)Sequence:指定了子元素必须出现并且要按照定义的顺序依次出现
        c)Choice: 指定子元素中,仅可以出现一个(可以使用maxOccurs修改)
2.出现次数指示器:
        a)这种指示器不是以元素(标签)的形式出现,而是以子元素的属性的方式出现
        b)maxOccurs:最多出现次数
        c)minOccurs:最少出现次数
3.组指示器:
        a)Group name:组名
        b)attributeGroup name:属性组名称


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值