• XML:XML约束


    在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束

    常见的xml约束: 

      DTD

      Schema

    作为程序员只要掌握两点:

      会阅读 

      会引入 

      不用自己编写

    DTD约束 

      DTD(Document Type Definition),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。 

    1 编写DTD 

      开发中,我们不会自己编写DTD约束文档 

      通常情况我们都是通过框架提供的DTD约束文档,编写对应的XML文档。常见框架使用DTD约束有: Struts2、hibernate等。 

    创建约束文件 student.dtd

    <!ELEMENT students (student+) >
            <!ELEMENT student (name,age,sex)>
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT age (#PCDATA)>
            <!ELEMENT sex (#PCDATA)>
            <!ATTLIST student number ID #REQUIRED>
    <!-
        ELEMENT: 用来定义元素
        students (student+) : 代表根元素 必须是 <students>
        student+ : 根标签中至少有一个 student子元素, + 代表至少一个
        student (name,age,sex): student 标签中包含的子元素,按顺序出现
        #PCDATA: 是普通文本内容
        ATTLIST: 用来定义属性
            student number ID #REQUIRED
            student子元素中 有一个ID属性叫做 number,是必须填写的
            ID: 唯一 值只能是字母或者下划线开头
     -->

    2 引入DTD 

    <1>引入dtd文档到xml文档中,两种方式 

      内部dtd:将约束规则定义在xml文档中 (通常不这么做)

      外部dtd:将约束的规则定义在外部的dtd文件中

        1. 本地方式引入: <!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">  

        2. 网络方式引入: <!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL"> 

    <2>  student.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE students SYSTEM "student.dtd"> 
    
    <students>
        <student number="s1">    
            <name>小斌</name>
            <age>22</age>
            <sex></sex>
        </student>
    
     
        <student number="s2">
            <name>广坤</name>
            <age>55</age>
            <sex></sex>
        </student>
    </students>

     

    Schema约束

    1 什么是Schema
      1. Schema是新的XML文档约束, 比DTD强大很多,是DTD 替代者;

      2. Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。

        3. Schema 功能更强大,内置多种简单和复杂的数据类型

           4. Schema 支持命名空间 (一个XML中可以引入多个约束文档)

    2 Schema约束示例


    student.xsd

    <?xml version="1.0" encoding = "UTF-8"?>
    <xsd:schema xmlns="http://www.lagou.com/xml"
           xmlns:xsd="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.lagou.com/xml"
    elementFormDefault="qualified">

    <xsd:element name="students" type="studentsType"/>

    <xsd:complexType name="studentsType">   <xsd:sequence>     <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>   </xsd:sequence> </xsd:complexType>

    <xsd:complexType name="studentType">   <xsd:sequence>     <xsd:element name="name" type="xsd:string"/>     <xsd:element name="age" type="ageType" />     <xsd:element name="sex" type="sexType" />   </xsd:sequence> <xsd:attribute name="number" type="numberType" use="required"/> </xsd:complexType>


    <xsd:simpleType name="sexType">   <xsd:restriction base="xsd:string">   <xsd:enumeration value="male"/>   <xsd:enumeration value="female"/> </xsd:restriction> </xsd:simpleType>

    <xsd:simpleType name="ageType">   <xsd:restriction base="xsd:integer">   <xsd:minInclusive value="0"/>   <xsd:maxInclusive value="200"/> </xsd:restriction> </xsd:simpleType>

    <xsd:simpleType name="numberType">   <xsd:restriction base="xsd:string">     <xsd:pattern value="hehe_d{4}"/>   </xsd:restriction> </xsd:simpleType> </xsd:schema>

    Xml Schema的根元素:

    3 XML引入Schema约束

    xml中引入schema约束的步骤:

    1) 查看schema文档,找到根元素,在xml中写出来

    <?xml version="1.0" encoding="UTF-8" ?>
    <students>
    
    </students>

    2) 根元素来自哪个命名空间。使用xmlns指令来声明

    <?xml version="1.0" encoding="UTF-8" ?>
    <students
    xmlns="http://www.lagou.com/xml"
    >
    
    </students>

    3) 引入 w3c的标准命名空间, 复制即可

    <?xml version="1.0" encoding="UTF-8" ?>
    <students
        xmlns="http://www.lagou.com/xml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
    >
    </students>

    4) 引入的命名空间,跟哪个xsd文件对应?

    使用schemaLocation来指定:两个取值:第一个为命名空间  第二个为xsd文件的路径

    <?xml version="1.0" encoding="UTF-8" ?>
    <students
        xmlns="http://www.lagou.com/xml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.lagou.com/xml student.xsd"
    >
    </students>

     

    5) 命名空间

    指的是一个环境,所用的标签来自于哪个环境定义的。

    6) student.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <students
        xmlns="http://www.lagou.com/xml"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.lagou.com/xml student.xsd"
    >
        <student number="hehe_1234">
            <name>张百万</name>
            <age>25</age>
            <sex>female</sex>
        </student>
    
        <student number="hehe_0000">
            <name>小斌</name>
            <age>20</age>
            <sex>male</sex>
        </student>
    </students>    
  • 相关阅读:
    Object C学习笔记19-枚举
    Object C学习笔记18-SEL,@ selector,Class,@class
    Object C学习笔记17-动态判断和选择器
    Object C学习笔记16-委托(delegate)
    CopyOnWriteArrayList源码解析
    企业项目开发--切分配置文件
    常用Java集合类总结
    HashSet源码解析
    网络工具使用情况分析
    邮件营销的准则
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/15064989.html
Copyright © 2020-2023  润新知