內容摘要:XML Schema如同DTD一樣是負責定義和描述XML文件的結構和內容模式。它可以定義XML文件中存在哪些元素和元素之間的關係,並且可以定義元素和屬性的資料類型。
什麼是XML Schema
XML Schema如DTD一樣是負責定義和描述XML文件的結構和內容模式。它可以定義XML文件中存在哪些元素和元素之間的關係,並且可以定義元素和屬性的資料類型。
XML Schema本身是一個XML文檔,它符合XML語法結構。可以用通用的XML解析器解析它。
為什麼要使用Schema
我們前面已經使用DTD來定義一個XML的結構和資料類型,那為什麼還要Schema呢?
因DTD有著不少缺陷:
1) DTD是基於正規表示式的,描述能力有限;
2) DTD沒有資料類型的支持,在大多數應用環境下能力不足;
3) DTD的約束定義能力不足,無法對XML實例文件作出更細緻的語意限制;
4) DTD的結構不夠結構化,重複使用的代價相對較高;
5) DTD並非使用XML作為描述手段,而DTD的建構與存取並沒有標準的程式設計##介面#,無法使用標準的程式設計方式進行DTD維護。
而XML Schema正是針對這些DTD的缺點而設計的,XML Schema的優點:1) XML Schema基於XML,沒有專門的語法2) XML可以像其他XML檔案一樣解析和處理3) XML Schema支援一系列的資料型別(int、float、Boolean、date等)4) XML Schema提供可擴充的數據模型。 5) XML Schema支援綜合命名空間6) XML Schema支援屬性組。 一個簡單的XML Schema文件 在這個Schema裡面定義了一個元素:quantity,它的型別是nonNegativeInteger(非負整數),xmlns是Schema的命名空間,這在前面第3部分已經敘述過了。 下面的XML片段是合法的:<quantity>5</quantity>下面的XML片段是非法的:
<quantity>-4</quantiy>Schema中的類型Schema中主要包括三種部件:元素(element)、屬性(attribute)、註解(notation)。 這三種基本的部件還能組合成以下的部件:a) 類型定義部件: 簡單類型和複合類型b)群組部件
c)屬性組部件簡單類型 XML Schema中定義了一些內建的資料類型,這些類型可以用來描述元素的內容和屬性值。 一個元素中如果僅僅包含數字、如同圖中元素quantity就是一個簡單型別。它的元素內容必須是非負整數,不包括任何屬性和子元素。
<quantity>some</quantity>所有內建的簡單型別原始型別
string,boolean,decimal,float,double,duration datetime,time,date,gYearMonth,gYear,gMonthDay, dDay,gMonth,hexBinary,base64Binary,any URI,QName NOTATION衍生型別(括號中為基底型別)
normalizedString(string),language(tonken),token(normalizedString) NMTOKEN(token),Name(token),NCName(Name),ID(NCName),IDREF(NCName) IDREFS(list of IDREF),ENTITY(NCName),ENTITIES(list of ENTITY) integer(decimal),nonPositiveInteger(integer), negativeInteger(noPositiveInteger),long(integer),int(long), short(int),byte(short),nonNegativeInteger(integer) unsignedLong(nonNegativeInteger),unsignedInt(unsignedLong), unsignedShort(unsignedInt),unsignedByte(unsignedShort), positiveInteger(nonNegativeInteger)建立簡單型別
圖中我們先建立了一個簡單型別:quantityType,它是從integer
繼承過來的,minInclusive和maxInclusive定義了它的最小值2和最大值5。最後我們定義元素quantity的類型為quantityType。
正确: <quantity>3</quantity> 错误: <quantity>10</quantity> <qauntity>aaa</quantity>使用restriction我們可以限制只能接受一定數值或只能接受一定文字,
基本方面:equal,ordered,bounded,cardinality,numeric 限制方面:length,minLength,maxLength pattern,enumeration whiteSpace maxInclusive,maxExclusive,minInclusive,minExclusive totalDigits,fractionDigits簡單類型的例子1 這個SKU的類型的取值:3個數字後面根著一個連字號接著跟著兩個大寫的英文字母。 pattern後面跟的是正規表示式。有關正規表示式的語法請參閱其他書籍。
正确: <ourSKU>123-AB</ourSKU> 错误: <ourSKU>abc-AB</ourSKU> <ourSKU>123-ab</ourSKU>簡單類型的例子2 這是用來描述美國州名的類型USState,透過enumeration來列出所有州名,取值時就只能取裡面列出的州名。
以上是XML Schema全接觸的圖文代碼詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!