spring xml檔案頭理解(dto和xsd的區別、xmlns、xmlns:xsi、xsi:schemaLocation)
spring xml檔案頭理解(dto和xsd的區別、xmlns、xmlns:xsi、xsi:schemaLocation)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> </beans>
- xsd和dtd的區別是什麼?
xsd和dtd是xml檔案的兩種型別,兩種型別的xml檔案表達的語義不同,一般來說xsd支援的語義多於dtd。spring解析xml的時候同時支援兩種型別的xml檔案
- xmlns是什麼意思?xmlns:xsi是什麼意思
xmlns的全稱是xml namespace,對應中文含義是xml檔案名稱空間。只有定義了名稱空間,才可以在xml中使用對應的標籤。其中beans是預設名稱空間,所以只用了xmlns,並沒有標記namespace字首;而xmlns:xsi表示的是使用xsi作為字首的Namespace,需要在文件中進行生命。
- xsi:schemaLocation
xsi:schemaLocation屬性指的是namespace為http://www.w3.org/2001/XMLSchema-instance裡面的schemaLocation屬性,這裡能夠使用這個標籤的原因是因為我們在一開始就聲明瞭xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。xsi:schemaLocation定義了xml namespace和對應的XSD(xml schema definition)文件的位置關係。它的值由一個或多個URI引用對組成,兩個URI之間以空白符分隔,第一個URI是定義的XML Namespace的值,第二個URI給出的是schema文件的位置,schema處理器將從這個位置讀取schema文件,schema文件的targetnamespace必須和第一個URI匹配。xsi:schemaLocation一定是兩個成對出現的
- 補充:xsd的schema檔案作用是什麼?
作用只有一個:規範xml可以使用的標籤範圍
- spring.schema和spring.handler檔案的作用?
spring.schema定義了名稱空間到xsd的對映關係。spring內部維護了許多版本的xsd檔案,spring可以通過spring.schema的對映關係從本地找到xsd,完成xml標籤規範的校驗,這樣的好處是規避了對網路的依賴
spring.handler定義了xsd檔案到parse解析器的對映關係,解析器是針對xsd檔案唯一存在的,解析器繼承自NamespaceHandlerSupport。namespaceHandlerSupport維護了一個map,key是標籤名稱,value是對應標籤的解析器