XSD 小結

XSD 小結

在實際開發中,常會遇到一些 XML 類型的配置文件,那麼如何去理解其所含的標籤,以及正確的進行配置呢!

追本溯源,如果想明確 XML 文件中的每一個標籤的含義,最好的辦法是找到定義這個文檔的人問道問道。

當然,這是不現實的,好在,XML 文檔中提供了一個 XSD 文檔地址供我們查閱。

XSD,XML Schema Definition,是定義 XML 文檔的文檔。

以 Maven 的 Settings.xml 文件爲例:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
          	http://maven.apache.org/xsd/settings-1.0.0.xsd">

<settings>

實際上,幾乎每一個 XML 文檔的根標籤中都有諸如上面的屬性,那麼他們有啥含義呢!

簡單來說,就是聲明該標籤中的默認命名空間,並指明瞭解析該文檔的所需的 XSD 文檔的地址。

xmlns, xml name space 默認的命名空間,其後的值通常是一個鏈接,其實只要確保唯一即可,XML 解析器並不會去訪問該鏈接。

xmlns:xsi 前綴爲 xsi 的命名空間,xsi, xml schema instance 表示一個 xml schema 實例,實際上,這個前綴是什麼並不重要,只要在當前文檔中唯一即可,重要的是其後賦的 http://www.w3.org/2001/XMLSchema-instance 值。引入該命名空間,實際是爲了使用 schemaLocation 來指名當前 XML 文檔的 XSD 定義文檔的地址。

xsi:schemaLocation=<要使用的命名空間> <針對前面的命名空間進行定義的 XSD 地址>

訪問 http://maven.apache.org/xsd/settings-1.0.0.xsd 查詢 XML Shema 定義。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
	elementFormDefault="qualified" 
	targetNamespace="http://maven.apache.org/SETTINGS/1.0.0">

</xs:schema>

xmlns:xs="http://www.w3.org/2001/XMLSchema" 指明瞭當前文檔中使用 xs 前綴的標籤的命名空間。

xmlns="http://maven.apache.org/SETTINGS/1.0.0" 默認命名空間。

elementFormDefault="qualified" 表示該文檔中定義的標籤在被使用時,必須有命名空間的限定。

targetNamespace="http://maven.apache.org/SETTINGS/1.0.0" 表示文檔中定義的標籤是限定在該命名空間中的。

Settings.xmlsettings-1.0.0.xsd 的根標籤的屬性聯繫起來,可知,前者使用默認的命名空間、指定 XSD 位置時使用的命名空間,都需要同後者的 xmlnstargetNamespace 保持一致。

XSD 文檔中是如何定義 XML 文檔的,可以參見 XML Schema

實際上,XSD 和 XML 的格式很像,那麼 XSD 中使用的標籤又是從何而來,憑什麼決定的呢!

尋其本源,最終是大家約定的結果,W3C 制定規則,而軟件商則根據該規則來編寫 XML 解析器。

網絡世界就是規則的世界,我們身處的世界的本質或許也是一條條規則。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章