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
- schema文件的根标签为: < schema >
- 在中定义属性: xmIns=http://www.w3.org/2001/XMLSchema
在中定义属性∶targetNamespace =唯一的url地址 指定当前这个schema文件的名称空间。
在中定义属性︰elementFormDefault="qualified "表示当前schema文件是一个质量良好的文件。 - 通过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
- 在根标签上定义属性 xmlns=“http://www.w3.org/2001/XMLSchema-instance”.
- 通过xmIns引入约束文件的名称空间
- 给某一个xmIns属性添加一个标识,用于区分不同的名称空间格式为: xmIns:标识=“名称空间地址”。标识可以是任意的,但是一般取值都是xsi
- 通过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>