1. 程式人生 > >web.xml開頭中的xmlns、xsi、schemaLocation、xsd等,名稱空間

web.xml開頭中的xmlns、xsi、schemaLocation、xsd等,名稱空間

1先補充幾個知識點

1.1schema文件即xml schema document,schema檔案的格式是.xsd(xml schema document的縮寫xsd)

簡單來說:schema就是對xml的進一步約束。一旦確定了web.xml schema的引用,就表示要參考該引用所在位置的schema定義和約束的規則,這些規則指定了該xml裡:

1)只能出現約束裡指定的元素和指定的屬性
2)某些元素的順序的也就不可改變的
3)誰有子元素,有多少個,順序是怎樣的
4)元素和屬性的型別,元素是否為空,是否包含文字,資料型別是什麼,有沒有固定值,有沒有預設值等。

關於schema的資料,參考:http://blog.chinaunix.net/uid-7308906-id-2059766.html

2web.xml檔案<web-app>中的各引數如下它們分別代表什麼意思呢?

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
"

version="2.4">

</web-app>

2.1 xmlns="http://java.sun.com/xml/ns/j2ee"

表示web.xml這個檔案的名稱空間為http://java.sun.com/xml/ns/j2ee,每一個.xml都應該有一個名稱空間(是自己定義的,一般為全球唯一的網站作為.xml檔案的名稱空間),為什麼要用一個網址作為名稱空間?可能是要保證全球唯一性吧,所以用網址url。

2.2

xmlns:javaee="http://java.sun.com/xml/ns/javaee" 

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

以上三個表示,用javaee、web、xsi分別替代長長的url,即javaee="http://java.sun.com/xml/ns/javaee" ,web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd",xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"。

2.3
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

這一句才指定了,web.xml真正遵循的約束,即xsd檔案所在的位置!

有兩個引數,第一個值是需要使用的名稱空間。第二個值是供名稱空間使用的 XML schema 的位置。

其中,http://java.sun.com/xml/ns/j2ee,表示web.xml這個xml檔案的名稱空間。xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"這一句的意思是,http://java.sun.com/xml/ns/j2ee這個名稱空間(即web.xml檔案)需要遵循http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd檔案中的約束,web-app_2_4.xsd中沒有的元素,web.xml不能使用。