DTD和schema

本文详细解读了DTD元素的定义,包括简单元素和复杂元素的用法,以及属性的定义和约束。同时介绍了DTD的三种引入方式:本地、内部和网络引入。此外,还介绍了XML Schema (schema) 的定义,如何定义元素和属性,并展示了如何引用schema以确保数据一致性。
摘要由CSDN通过智能技术生成

DTD

元素定义

 定义一个元素的格式为:<!ELEMENT 元素名元素类型>

简单元素

  • EMPTY: 表示标签体为空
  • ANY: 表示标签体可以为空也可以不为空
  • PCDATA: 表示该元素的内容部分为字符串(常用)

复杂元素

1、多个子元素可以使用",“或者”|"隔开;

  • ","表示定义子元素的顺序;
  • “|”:表示子元素只能出现任意一个

2、设置次数

  • "?"零次或一次,
  • “+”—次或多次,
  • "*"零次或多次;
  • 如果不写则表示出现一次

例子

<!--persons为person的父级标签,person出现的次数为一次或多次-->
<!ELEMENT persons (persont+)>
<!-- 按照 name , age, sex的顺序-->
<!ELEMENT person ( name , age, sex)>
<!ELEMENT name ( #PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>

属性定义

定义一个属性的格式为:<!ATTLIST 元素名称 属性名称 属性的类型 属性的约束>

属性的类型:

CDATA类型:普通的字符串

属性的约束:

#REQUIRED :必须的
#IMPLIED:属性不是必需的
#FIXED value :属性值是固定的

例子:

person的元素,属性名为id,类型是普通字符串,必须要写的

<!ATTLIST person id CDATA #REQUIRED>

DTD的三种引入

  • 引入本地dtd
    < !DOCTYPE 根元素名称 SYSTEM ‘DTD文件的路径’>
 <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE persons SYSTEM 'person.dtd'>
<persons>
    <person>
        <name>李四</name>
        <age>18</age>
    </person>
</persons>
  • 在xml文件内部引入
    .< !DOCTYPE 根元素名称 [ dtd文件内容]>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE persons [<!ELEMENT persons (person)>
        <!ELEMENT person (name,age)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>]>
<persons>
    <person>
        <name>李四</name>
        <age>18</age>
    </person>
</persons>
  • 引入网络dtd
    < !DOCTYPE 根元素的名称 PUBLIC “DTD文件名称” “DTD文档的URL”>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

schema

定义schema

  1. schema文件的根标签为: < schema >
  2. 在中定义属性: xmIns=http://www.w3.org/2001/XMLSchema
    在中定义属性∶targetNamespace =唯一的url地址 指定当前这个schema文件的名称空间。
    在中定义属性︰elementFormDefault="qualified "表示当前schema文件是一个质量良好的文件。
  3. 通过element定义元素
    3.1 attribute 标签定义属性
<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.abc.cn/javase"
        attributeFormDefault="qualified">
//  定义复杂元素persons
    <element name="persons">
        <complexType>//这是复杂的元素
            <sequence>//元素循序
                <element name="person">
                    <complexType>
                        <sequence>
                            <element name="name" type="string"></element>
                            <element name="age" type="string"></element>
                        </sequence>
                        //在person标签设置id属性 
						<attribute name="id" type="string" use="required"></attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

引用schema

  1. 在根标签上定义属性 xmlns=“http://www.w3.org/2001/XMLSchema-instance”.
  2. 通过xmIns引入约束文件的名称空间
  3. 给某一个xmIns属性添加一个标识,用于区分不同的名称空间格式为: xmIns:标识=“名称空间地址”。标识可以是任意的,但是一般取值都是xsi
  4. 通过xsi:schemaLocation指定名称空间所对应的约束文件路径格式为:xsi:schemaLocation ="名称空间url文件路径“
<?xml version="1.0" encoding="utf-8"?>
<persons xmlns="http://www.abc.cn/javae"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.abc.cn/javae person.xsd">
    <pserson>
        <name>李四</name>
        <age>18</age>
    </pserson>
</persons>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值