schema約束和引入


schema的概述

schema約束同為xml文件的約束模式語言之一, 最大的作用是為了驗證xml文件的規范性的.

  是為了解決dtd約束不夠的問題, 相應的他的配置就變得比較復雜

  schema本身就是xml語言, 后綴名為xsd, 對命名空間的支持非常好

  schema的根元素就為schema

 

schema約束和dtd約束的區別:

  ⑴XML Schema符合XML語法結構。
  ⑵DOM、SAX等XML API很容易解析出XML Schema文檔中的內容。
  ⑶XML Schema對名稱空間支持得非常好。
  ⑷XML Schema比XML DTD支持更多的數據類型,並支持用戶自定義新的數據類型。
  ⑸XML Schema定義約束的能力非常強大,可以對XML實例文檔作出細致的語義限制。
  ⑹XML Schema不能像DTD一樣定義實體,比DTD更復雜,但Xml Schema現在已是w3c組織的標准,它正逐步取代DTD。

 

schema的引入

  學的時候這個地方搞得最暈了, dtd約束直接在<!ENTITY >中聲明了本地文件還是網絡路徑; 而schema約束中並沒有dtd那么詳細. 剛開始以為在同一文件夾下就可以使用, 而后使用寫好的xml文件的便與約束無關了, 但經過幾次試驗之后發現約束依然在起作用. 翻了很多資料, 理解了一點,

  首先介紹URL和URI的區別:

    URL: 統一資源定位符, 可以准確的定位到互聯網上某一資源的確定位置, 一般由協議, 服務器名, 文件路徑組成, URL是URI的子集

    URI: 統一資源標識符, 對某一互聯網資源進行標識的字符串, 關羽他倆的區別, 可具體參考:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html

而在schema中, 每個約束模式文檔都可以被賦予一個唯一的使用URI標識的名稱空間, Xml文件引用schema約束的時候, 便是通過這個名稱空間來聲明來自哪個shema約束文檔的.

 

 

在xsd文檔中, 至少要包括shema根元素和xml模式命名空間的定義, 元素定義等

在schema中聲明schema根元素:

根元素包括模式的約束, xml模式空間命名的定義, 其他命名空間的定義, 版本信息, 語言信息和其他的信息.

  xmlns=URI: 使用默認的名稱空間

  targetNamespace=:URI: 指定schema文檔中聲明的元素屬於哪個命名空間

  xmlns:xsd=URI: 使用名稱空間引入多個xml  shema文檔

  elementFormaDefault= " ": 指定shema文檔中聲明的跟元素和所有子元素都屬於targetnamespace鎖指定的名稱空間

 

 解下來, 如何在xml文件中引用定義的schema約束

   在新建的xml文檔中加入聲明后, 引入schema的約束文檔, 

   首先聲明約束來自哪個名稱空間, 使用xmlns="" 來指定, 

  引入的名稱空間和哪個xsd文件對應, 使用schemaLocation="" 來指定, 第一個為名稱空間, 第二個為xsd文件路徑.

 

如果在開發過程中沒有internet連接, 這是ide將約束的URI映射到本地, 所以指定了命名空間和元素后, 仍然可以使用schema約束

 

最后, 從文檔中截取了幾張圖方便理解:

wKiom1N3CHqjvch7AAiKWSTLivk214.jpg

 

wKioL1N3CLSTNo9_AAMym-G-4QQ909.jpg

wKiom1N3CODRC6jfAAKQEJc8MBg383.jpg

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM