XML约束----xml约束

什么是XML约束

约束 简单来说就是规定xml的书写规则
    *作为框架的使用者(程序员)的学习要求
        1.能够在xml中引用约束文档
        2.能够读懂约束文档

约束技术分类

 1.DTD 一种简单的约束技术(.dtd)
 2.SCHEMA:一种复杂的约束技术(.xsd)

------------下面来对两种约束技术分别做详细的介绍-------------

DTD约束

 dtd文件格式:
        <!ELEMENT students (student*)> //(student*)表示students的子标签出现0或者多次 (student+)表示子标签出现1或者多次
        <!ELEMENT student (name age sex)> //子标签student的子标签
        <!ELEMENT name (#PCDATA)> //#PCDATA表示字符串
        <!ELEMENT age (#PCDATA)> //#PCDATA表示字符串
        <!ELEMENT sex (#PCDATA)> //#PCDATA表示字符串
        <!ATTLIST student number ID #REQUIRED> //表示必须要写number属性,#REQUIRED表示属性必须写
       引入dtd文档到xml文件中
        *内部dtd文档 将约束文档定义到xml文档中
        *外部dtd文档 将约束文档定义在外部的dtd文档中
                <!DOCTYPE 根签名字 SYSTEM "dtd文件相对于xml文档路径">//本地
                <!DOCTYPE 根签名字 PUBLIC "dtd路径URL">//网络

Schema约束

  • Schema约束文件
 Schema约束文件
        <?xml version="1.0"?>
         <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.w3school.com.cn"
            xmlns="http://www.w3school.com.cn"
            elementFormDefault="qualified">

            <xs:element name="note">
                <xs:complexType>
                  <xs:sequence>
            	<xs:element name="to" type="xs:string"/>
            	<xs:element name="from" type="xs:string"/>
            	<xs:element name="heading" type="xs:string"/>
            	<xs:element name="body" type="xs:string"/>
                  </xs:sequence>
                </xs:complexType>
            </xs:element>

         </xs:schema>
        下面进行对Schema约束文档相关片段进行解释
                * <schema> 元素是每一个 XML Schema 的根元素:
                                 <schema> 元素可包含属性。
                * xmlns:xs="http://www.w3.org/2001/XMLSchema"
                显示 schema 中用到的元素和数据类型( 例如<xs:sequence>)来自命名空间 "http://www.w3.org/2001/XMLSchema"。
                同时它还规定了来自命名空间 "http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs:
                * targetNamespace="http://www.w3school.com.cn"
                显示被此 schema 定义的元素 (note, to, from, heading, body)
                来自命名空间: "http://www.w3school.com.cn"。
                *elementFormDefault="qualified"
                指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。
``

 - **被约束文档**
 -  此 XML 文档(被约束文档)含有对 XML Schema 约束文档的引用:
 

```bash
<?xml version="1.0"?>

                <note xmlns="http://www.w3school.com.cn"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.w3school.com.cn note.xsd">

                <to>George</to>
                <from>John</from>
                <heading>Reminder</heading>
                <body>Don't forget the meeting!</body>
                </note>
              被约束文件相关片段的解释
                xmlns="http://www.w3school.com.cn" 规定了默认命名空间的声明。
                此声明会告知 schema 验证器,在此 XML 文档中使用的所有元素都被声明于
                "http://www.w3school.com.cn" 这个命名空间。

                一旦您拥有了可用的 XML Schema 实例命名空间:
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 您就可以使用 schemaLocation 属性了。此属性有两个值。
                 第一个值是需要使用的命名空间。第二个值是供命名空间使用的 XML schema 的位置:
                xsi:schemaLocation="http://www.w3school.com.cn note.xsd"

XML Schema 可定义 XML 文件的元素。
简易元素指那些只包含文本的元素。它不会包含任何其他的元素或属性。

简单元素

简易元素
                定义简易元素的语法:
                <xs:element name="xxx" type="yyy"/>此处 xxx 指元素的名称,yyy 指元素的数据类型。
                XML Schema 拥有很多内建的数据类型。
                最常用的类型是:
                xs:string
                xs:decimal
                xs:integer
                xs:boolean
                xs:date
                xs:time

复杂元素

XML Schema 可定义 XML 文件的元素
复合元素包含了其他的元素及/或属性。

在 XML Schema 中,我们有两种方式来定义复合元素:
                 1. 通过命名此元素,可直接对"employee"元素进行声明,就像这样:
                 <xs:element name="employee">
                   <xs:complexType>
                     <xs:sequence>
                     //指示器 <sequence>中。这意味着子元素必须以它们被声明的次序出现。
                       <xs:element name="firstname" type="xs:string"/>
                       <xs:element name="lastname" type="xs:string"/>
                     </xs:sequence>
                   </xs:complexType>
                 </xs:element>
                 2 .通过type属性
                  "employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:

                 <xs:element name="employee" type="personinfo"/>

                 <xs:complexType name="personinfo">
                   <xs:sequence>
                     <xs:element name="firstname" type="xs:string"/>
                     <xs:element name="lastname" type="xs:string"/>
                   </xs:sequence>
                 </xs:complexType>
  • List item

如果想要对Schema约束进行更深入的了解,可以去搜索W3CSchool,查看XMLSchema相关章节知识

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马明智

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值