DTD即文檔類型定義,是一種XML約束模式語言,是XML文件的驗證機制,屬于XML文件組成的一部分。
一個 DTD文檔包含:元素的定義規則,元素間關系的定義規則,元素可使用的屬性,可使用的實體或符號規則。
DTD和XSD相比:DTD 是使用非 XML 語法編寫的。
DTD 不可擴展,不支持命名空間,只提供非常有限的數據類型 .
DTD 現在基本已被XSD文檔取代,但是,仍有個別在使用 比如 Mybatis mapper xml文件
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE 根元素 SYSTEM/PUBLIC "DTD文件路徑"> SYSTEM表示本地 PUBLC 表示網絡
上面用的是公共DTD,DTD名稱格式為"注冊//組織//類型 標簽//語言"
"注冊" 指示組織是否由國際標準化組織(ISO)注冊,+表示是,-表示不是;
"組織" 即組織名稱,如:mybatis.org;
"類型" 一般是DTD;
"標簽" 是指定公開文本描述,即對所引用的公開文本的唯一描述性名稱,后面可附帶版本號,如Mapper 3.0。
"語言" EN指英語;
http://mybatis.org/dtd/mybatis-3-mapper.dtd 表示外部DTD文件URI
DTD基本語法:<!ELEMENT NAME CONTENT>
其中:
- ELEMENT是關鍵字,是不能修改的
- NAME表示元素名稱
- CONTENT是元素類型,必須要大寫!
<!ELEMENT 班級 (學生+)>
<!ELEMENT 學生 (名字,年齡,介紹)>
<!ELEMENT 名字 (#PCDATA)> 一個.dtd文件
<!ELEMENT 年齡 (#PCDATA)>
<!ELEMENT 介紹 (#PCDATA)>
使用DTD驗證模式需要在XML文件的頭部聲明
<?xml version="1.0" encoding="utf-8"?>
<!-- 引入dtd文件,約束這個xml -->
<!DOCTYPE 班級 SYSTEM "myclass.dtd">
<班級>
<學生>
<名字>小紅</名字>
<年齡>10</年齡>
<介紹>學習刻苦</介紹>
</學生>
</班級>
XML Schema語言也就是XSD。XML Schema描述了XML文檔的結構。檢查該XML文檔是否符合其要求。
XSD是DTD替代者的原因,一是據將來的條件可擴展,二是比DTD豐富和有用,三是用XML書寫,四是支持數據類型,五是支持命名空間。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
首先說明最基本的頭部命名空間信息,配置文件必須的部分,固定部分 xmlns="http://www.springframework.org/schema/beans" 聲明xml文件默認的命名空間,表示未使用其他命名空間的所有標簽的默認命名空間。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 聲明XML Schema 實例,聲明后就可以使用 schemaLocation屬性了。
xmlns:context="http://www.springframework.org/schema/context" 這是spring配置文件里面需要使用到context的標簽,聲明前綴為context的命名空間,在容器啟動的時候找到對應的命名空間處理器處理。當命名空間被定義在元素的開始標簽中時,所有帶有相同前綴的子元素都會與同一個命名空間相關聯。
xsi:schemaLaction部分: http://www.springframework.org/schema/beans --- 表示區別命名空間url http://www.springframework.org/schema/beans/spring-beans.xsd --- 表示命名空間對應xsd文件獲取地址(也只是一個映射地址)。
在spring-webmvc.jar包中找到META_INF/spring.handlers
http\://www.springframework.org/schema/mvc=org.springframework.web.servlet.config.MvcNamespaceHandler
META_INF/spring.schemas
http\://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd=org/springframework/web/servlet/config/spring-mvc-3.0.xsd
http\://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd=org/springframework/web/servlet/config/spring-mvc-3.1.xsd
http\://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd=org/springframework/web/servlet/config/spring-mvc-3.2.xsd
http\://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd=org/springframework/web/servlet/config/spring-mvc-4.0.xsd
http\://www.springframework.org/schema/mvc/spring-mvc.xsd=org/springframework/web/servlet/config/spring-mvc-4.0.xsd
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。