XML——XML Schema
【0】README
0.0)本文文字描述轉自 core java volume 2 , 旨在理解 XML——XML Schema 的基礎知識 ;(本文不涉及源代碼, 很遺憾,以后會補充)
【1】XML Schema 相關
1.0)為什么引入XML Schema? 如果要指定文檔結構,可以提供一個文檔類型定義(DTD)或一個 XML Schema定義;DTD 或 schema 包含了用于解釋文檔應該如何構成的規則, 這些規則指定了每個元素的合法子元素和和屬性; (干貨——為什么引入XML Schema)
1.1)如果要在文檔中引用 Schema 文件, 需要在 根元素中添加屬性, 例如:
<?xml version="1.0"?> <configuration xmlns:xsi="http://www.w2.org/2001.XMLSchema-instance"xsi:noNamespaceSchemaLocation="config.xsd"> </configuration>- 這個聲明是在說: Schema文件 config.xsd 會被用來驗證文檔;(而 前綴xsi 是一個命名空間別名——namespace alias); (干貨——前綴xsi 是一個命名空間別名)
1.2)Schema使用命名空間定義了每個元素的類型。類型可以是簡單類型,即有格式限制的字符串或復雜類型。 (干貨——Schema使用命名空間定義了每個元素的類型。)
- 1.2.1)一些簡單類型已經被內建到了 XML Schema 內,包括:
Attention)
- A1)我們用前置 xsd: 來表示XSL Schema定義的命名空間, 一些作者用 xs: 代替;
- A2)可以自定義自己的簡單類型:
- A2.1)當定義元素時,要指定它的類型:
- A2.2)類型約束了元素的內容, 下面 的元素個數被驗證為正確格式:
- A2.3)但是下面的元素會被解析器拒絕:
- A2.4)你可以把類型組合成復雜類型, 如:
- A2.5)嵌套定義:在上面的類型定義中, 我們用ref 屬性來引用在 Schema 中位于別處的定義。也可以嵌套定義, 如這樣:
- A2.6)xsd: choice 和 | 操作符等價, 如: (干貨——xsd:choice 和 | 操作符等價)
A2.7)如果允許使用重復元素,使用 minoccurs 和 maxoccurs 屬性:
A2.7.1)看個荔枝:與 DTD類型 item* 的等價形式如下:
<xsd:element name="item" type="..." minoccurs="0" maxoccurs="unbounded">A2.7.2)如果要指定屬性, 可以吧 xsd:attribute 元素添加到 complexType定義中去:
A2.8)這是DTD 聲明等價 的形式:
<!ATTLIST size unit CDATA #IMPLIED "cm">A2.9) 可以把 Schema 的元素和類型定義封裝在 xsd:schema 元素中:
A2.10)解析帶有 Schema 的XML 文件和解析帶有 DTD 的文件相似, 但有3點差別(Difference): (干貨—— Schema 的XML 文件和帶有 DTD 的XML文件的差別有3)
- D1)必須打開對命名空間的支持,即使在 XML 文件里你不使用它;
factory.setNamespaceAware(true); - D2)必須通過如下 “魔咒”來準備好處理 Schema 的工廠:
final String JAXP_SCHEMA_LANGUAGE="http://java.sun.com/xml/jaxp/properties/schemaLanguage";
final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA ); - D3) 解析器不會丟棄元素中的空白字符, 這是個很老火的問題;
- D1)必須打開對命名空間的支持,即使在 XML 文件里你不使用它;
總結
以上是生活随笔為你收集整理的XML——XML Schema的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么打开siri 苹果siri怎么打开
- 下一篇: asp.net ajax控件工具集 Au