溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

XML配置文件說明

發(fā)布時間:2020-07-06 16:01:56 來源:網(wǎng)絡(luò) 閱讀:490 作者:wx5d8484d25f876 欄目:編程語言

1.DTD(Documnet Type Definition)

DTD即文檔類型定義,是一種XML約束模式語言,是XML文件的驗證機制,屬于XML文件組成的一部分。
一個 DTD文檔包含:元素的定義規(guī)則,元素間關(guān)系的定義規(guī)則,元素可使用的屬性,可使用的實體或符號規(guī)則。


DTD和XSD相比:DTD 是使用非 XML 語法編寫的。
DTD 不可擴展,不支持命名空間,只提供非常有限的數(shù)據(jù)類型 .
DTD 現(xiàn)在基本已被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 表示網(wǎng)絡(luò)
上面用的是公共DTD,DTD名稱格式為"注冊//組織//類型 標(biāo)簽//語言"
"注冊" 指示組織是否由國際標(biāo)準(zhǔn)化組織(ISO)注冊,+表示是,-表示不是;
"組織" 即組織名稱,如:mybatis.org;
"類型" 一般是DTD;
"標(biāo)簽" 是指定公開文本描述,即對所引用的公開文本的唯一描述性名稱,后面可附帶版本號,如Mapper 3.0。
"語言" EN指英語;
http://mybatis.org/dtd/mybatis-3-mapper.dtd 表示外部DTD文件URI


DTD基本語法:<!ELEMENT NAME CONTENT>

其中:

  • ELEMENT是關(guān)鍵字,是不能修改的
  • NAME表示元素名稱
  • CONTENT是元素類型,必須要大寫!

XML配置文件說明

 <!ELEMENT 班級 (學(xué)生+)>
<!ELEMENT 學(xué)生 (名字,年齡,介紹)>
<!ELEMENT 名字 (#PCDATA)>                                     一個.dtd文件
<!ELEMENT 年齡 (#PCDATA)>
<!ELEMENT 介紹 (#PCDATA)>

使用DTD驗證模式需要在XML文件的頭部聲明

 <?xml version="1.0" encoding="utf-8"?>
 <!-- 引入dtd文件,約束這個xml -->
 <!DOCTYPE 班級 SYSTEM "myclass.dtd">
 <班級>   
      <學(xué)生>      
           <名字>小紅</名字>      
           <年齡>10</年齡>      
           <介紹>學(xué)習(xí)刻苦</介紹>    
      </學(xué)生>
 </班級>

2.XSD(XML Schemas Definition)

XML Schema語言也就是XSD。XML Schema描述了XML文檔的結(jié)構(gòu)。檢查該XML文檔是否符合其要求。


XSD是DTD替代者的原因,一是據(jù)將來的條件可擴展,二是比DTD豐富和有用,三是用XML書寫,四是支持數(shù)據(jù)類型,五是支持命名空間。

<?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文件默認的命名空間,表示未使用其他命名空間的所有標(biāo)簽的默認命名空間。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 聲明XML Schema 實例,聲明后就可以使用 schemaLocation屬性了。
xmlns:context="http://www.springframework.org/schema/context" 這是spring配置文件里面需要使用到context的標(biāo)簽,聲明前綴為context的命名空間,在容器啟動的時候找到對應(yīng)的命名空間處理器處理。當(dāng)命名空間被定義在元素的開始標(biāo)簽中時,所有帶有相同前綴的子元素都會與同一個命名空間相關(guān)聯(lián)。
xsi:schemaLaction部分: http://www.springframework.org/schema/beans --- 表示區(qū)別命名空間url http://www.springframework.org/schema/beans/spring-beans.xsd --- 表示命名空間對應(yīng)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
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI