XML 约束文档 有两种 dtd 和 schema
dtd是平面式文档,扩展名为.dtd 最早的xml文档
schema 扩展名为.xsd 用来代替dtd的新的约束格式
DTD(Document Type Definition)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE students[
<!ELEMENT students (student+)>
<!ELEMENT student (name, age, gender)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT gender(#PCDATA)>
]>
或是引入本地文件
<!DOCTYPE students SYSTEM "E://file/demo.dtd">
或是引入外部文件
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD_Config_3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
定义属性 #IMPLIED 可选 #REQUIRED 必选
//普通
< !ATTLIST student number CDATA #REQUIRED>
//枚举
< !ATTLIST student gender Enumerated(male|female) #REQUIRED>
DTD局限性
DTD不遵守XML语法
DTD数据类型有限
DTD不可扩展
DTD不支持命名空间
Schema的新特性
Schema基于XML语法
shema扩充数据类型,可以自定义数据类型
schma支持元素的继承
schema支持属性组
schema的文档结构
<?xmlversion="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://mynamespace/myschema">
</xs:schema>
所有Schema文档使用schema作为其根元素
用于构造schema的元素和数据类型来自http://www.w3.org/2001/XMLSchema命名空间
本schema定义的元素和数据类型属于http://mynamespace/myschem命名空间
<?xmlversion="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="book" type="bookType"></xs:element>
<xs:complexType name="bookType">
<xs:sequence>
<xs:element name="bookName" type="xs:string"></xs:element>
<xs:element name="author" type="xs:string"></xs:element>
<xs:element name="price" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
Java解析器 JDOM与DOM4J
DOM4J比JDOM更加全面
DOM4J首先会通过JAXP的查找方式去查找解析器,没有,使用默认的Aelfred2
兼容DOM和SAX读法
DOM读法,全部读取
SAX读法,分行读取
网友评论