XML入门-2

作者: 好多可乐 | 来源:发表于2020-12-22 00:04 被阅读0次

一,XML语义约束

1,XML文档结构正确,但可能不是有效的

比如:员工档案xml中决不允许出现“植物品种”标签。xml语义约束就是用于规定xml文档中允许出现哪些元素

2,XML语义约束有2种定义方式:DTD与XML Schema。

二,DTD

1,定义:DTD(Document Type Definition,文档类型定义)是一种简单易用的语义约束方式。

2,DTD文件的扩展名为.dtd

3,利用DTD中的<!ELEMENT>标签,我们可以定义XML文档中允许出现的节点及数量,以hr.xml为例:

  • 定义hr节点下只允许出现1个employee子节点:
<!ELEMENT hr(employee)>
  • employee节点下必须包含以下四个节点,且按顺序出现:
<!ELEMENT employee(name,age,salary,department)>
  • 定义name标签体只能是文本,#PCDATA代表文本元素
<!ELEMENT name (#PCDATA)>

如果某个子节点需要多次重复出现,则需要在子节点后增加响应的描述符

  • hr节点下最少出现1个employee子节点
<!ELEMENT hr(employee+)>
  • hr节点下可出现0..n个employee子节点
<!ELEMENT hr(employee*)>
  • hr节点下最多出现1个employee子节点
<!ELEMENT hr(employee?)>

4,在XML中使用<!DOCTYPE>标签来引用DTD文件

书写格式:

<!DOCTYPE 根节点 SYSTEM "dtd文件路径">

示例:

<!DOCTYPE hr SYSTEM "hr.dtd">

上个demo

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">

<hr>
    <employee no="3309">
        <name>kola</name>
        <age>13</age>
        <salary>2333</salary>
        <department>
            <dname>it</dname>
            <address>xx大厦</address>
        </department>
    </employee>
    <employee no="3319">
        <name>lily</name>
        <age>13</age>
        <salary>3211</salary>
        <department>
            <dname>it</dname>
            <address>xx大厦</address>
        </department>
    </employee>
</hr>
<?xml version="1.0" encoding="UTF-8"?>
        <!ELEMENT hr (employee+)>
        <!ELEMENT employee (name,age,salary,department)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT salary (#PCDATA)>
        <!ELEMENT department (dname,address)>
        <!ELEMENT dname (#PCDATA)>
        <!ELEMENT address (#PCDATA)>
        <!ATTLIST employee no "CDATA" "">

注意,在规定父标签中子标签的数量时,父标签和后面的括号一定要有“空格”。

//定义属性时的约束格式

<!ATTLIST 节点名称 属性名称 CDATA ""> //引号内为默认值

三,schema约束

  1. XML Schema比DTD更为复杂,提供了更多功能。
  2. XML Schema 提供了数据类型、格式限定、数据范围等特性。
  3. XML Schema是W3C标准。
    因为比较复杂,直接上代码看注释吧~
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE hr SYSTEM "hr.dtd">-->
<!--告诉xml文档约束使用的是schema-->
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
    <employee no="3309">
        <name>kola</name>
        <age>13</age>
        <salary>2333</salary>
        <department>
            <dname>it</dname>
            <address>xx大厦</address>
        </department>
    </employee>
    <employee no="3319">
        <name>lily</name>
        <age>13</age>
        <salary>3211</salary>
        <department>
            <dname>it</dname>
            <address>xx大厦</address>
        </department>
    </employee>
</hr>

<?xml version="1.0" encoding="utf-8" ?>
<!--定义schema:idea工具这句话要删掉,否则会报错-->
<!--<schema xmlns="http://www.w3.org/2001/XMLSchema">-->
    <!--声明根节点-->
<schema>
    <element name="hr">
        <!--coplexType标签含义是复杂节点,包含子节点时必须使用这个标签-->
        <complexType>
            <!--sequence表示序列,含义是子节点必须按照前后顺序书写-->
            <sequence>
                <!--约束子节点最多最少出现的次数-->
                <element name="employee" minOccurs="1" maxOccurs="999">
                    <complexType>
                        <sequence>
                            <element name="name" type="string"></element>
                            <element name="age">
                                <!--限制年龄-->
                                <simpleType>
                                    <restriction base="integer">
                                        <maxExclusive value="60"></maxExclusive>
                                        <minExclusive value="18"></minExclusive>
                                    </restriction>
                                </simpleType>
                            </element>
                            <element name="salary" type="integer"></element>
                            <element name="department">
                                <complexType>
                                    <sequence>
                                        <element name="dname" type="string"></element>
                                        <element name="address" type="string"></element>
                                    </sequence>
                                </complexType>
                            </element>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
            <!--属性设置:定义use表示属性在任何节点必须存在-->
            <attribute name="no" type="string" use="required"></attribute>
        </complexType>
    </element>
</schema>

相关文章

  • XML入门-2

    一,XML语义约束 1,XML文档结构正确,但可能不是有效的 比如:员工档案xml中决不允许出现“植物品种”标签。...

  • android 入门xml布局文件(转载)

    android 入门xml布局文件 标签:androidxmllayoutbuttonlistviewjava 2...

  • spring-jdbc

    spring-jdbc快速入门 一、xml配置方式 1、配置xml,用以创建对象 2、编写UserDao

  • spring-jdbc

    spring-jdbc快速入门 一、xml配置方式 1、配置xml,用以创建对象 2.编写UserDao

  • spring学习笔记三-JDBC

    [TOC] spring-jdbc快速入门 一、xml配置方式 1、配置xml,用以创建对象 2、编写UserDao

  • 简单学会XML声明(XML入门2)

    简单学会XML声明(XML入门2) 学习XML编网页并不是好的选择。XML的主要作用就是存取数据和数据交换。最大...

  • Spring框架——Jdbc

    spring-jdbc快速入门 一、xml配置方式 导入包 1.配置xml,用来创建对象 2.编写UserDao

  • SpringBoot入门小Demo

    SpringBoot入门小示例: 1、新建SpringBoot工程 2、pom.xml 3、application...

  • mybatis3.4.6官方参考文档

    书目录链接:https://www.shumulu.com/archives/130082 1 入门 2 XML配...

  • 二、Spring MVC 入门

    入门 1.配置DispatcherServlet 位置web.xml 2.配置controller请求处理器 --...

网友评论

    本文标题:XML入门-2

    本文链接:https://www.haomeiwen.com/subject/nurjnktx.html