問題:html
學習Schema其餘標籤的定義 約束git
引入的方式:網絡
基本格式:學習
1.2 元素屬性spa
1.4 複合結構類型code
1.5指示器orm
引入的方式:
1:經過網絡路徑映入
<?xml version="1.0" encoding="UTF-8"?> <Teams xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.example.org/NewXMLSchema" xsi:noNamespaceSchemaLocation="NewXMLSchema.xsd"> <Team> <Teamname>Roma</Teamname> <Country>Italy</Country> <Member Name="AAA" Age="34" Sex="Male"/> <Member Name="AAA" Age="34" Sex="Male"/> </Team> </Teams>
2:經過文件路徑引入
xsi:noNamespaceSchemaLocation="{location}" # XSD文件名 本地文件
xsi:schemaLocation="{namespace} {location}" # 帶全路徑的XSD文件
<?xml version="1.0" encoding="UTF-8"?> <Teams xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.example.org/NewXMLSchema" xsi:schemaLocation="http://www.dgwcom.com/NewXMLSchema.xsd"> <Team> <Teamname>Roma</Teamname> <Country>Italy</Country> <Member Name="AAA" Age="34" Sex="Male"/> <Member Name="AAA" Age="34" Sex="Male"/> </Team> </Teams>
基本格式:
targetNamespace:
在引入的時候須要寫的命名空間
elementFormDefault
非全局的元素當設置爲qualified時,必須添加命名空間的前綴。
非全局的元素當設置爲unqualified時,沒必要也不能添加前綴。(使用具體元素的時候)
xmlns:xs="http://www.w3.org/2001/XMLSchema" 加上xs 那麼目標元素也要寫命名空間xm
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.dgwcom.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
1.1 最基本的單位元素
<lastname>Refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn> # 對應元素 <element name="lastname" type="string" /> <element name="age" type="integer" /> <element name="dateborn" type="date" /> # 經常使用屬性 <element name="name" 元素名稱 default="" 默認值 type="" 類型 fixed="" 固定值 id="" 定義id ref 引用別的元素 maxOcuor 最大範圍 min0cuor 最小範圍 ></element> https://www.runoob.com/schema/schema-el-element.html
1.2 元素屬性
<lastname lang="EN">Smith</lastname> # 對應屬性 <attribute name="lang" type="string" default="EN"></attribute> <xs:attribute name="lang" type="xs:string" fixed="EN"/> //固定值 <xs:attribute name="lang" type="xs:string" use="required"/> //use 是固定是否要寫的屬性
1.3 simpleType 定義類型
兩種構造方式
# 方式1 <element name="xx" type="agetype"></element> <simpleType name="agetype"> <restriction base="integer"> <minInclusive value="0" /> <maxInclusive value="120" /> </restriction> </simpleType> # 方式2 <element name="xx222"> <simpleType> <restriction base="integer"> <maxInclusive value="0"></maxInclusive> <minInclusive value="120"></minInclusive> </restriction> </simpleType> </element> # 控制範圍的相對性 控制範圍內 <maxInclusive value="0"></maxInclusive> <minInclusive value="120"></minInclusive> 控制範圍外 <maxExclusive value=""></maxExclusive> <minExclusive value=""></minExclusive>
例子
# 列表限定 車的類型 <simpleType name="cartype"> <restriction base="string"> <enumeration value="Audi"></enumeration> <enumeration value="Golf"></enumeration> <enumeration value="BMW"></enumeration> </restriction> </simpleType> # 正則限定 <!-- 小寫字母 --> <simpleType name="letter"> <restriction base="string"> <pattern value="[a-z]"></pattern> </restriction> </simpleType> <!-- 字母數字 --> <simpleType name="letter"> <restriction base="string"> <pattern value="([a-z][A-Z]0-9])+"></pattern> </restriction> </simpleType> # 空白字符的限定 <!-- 對空白字符的處理 --> <simpleType name="address"> <restriction> <whiteSpace value="preserve"></whiteSpace> 1:preserve : XML 處理器不會移除任何空白字符 2:collapse : XML 處理器將移除全部空白字符(換行、回車、空格以及製表符會被替換爲空格,開頭和結尾的空格會被移除,而多個連續的空格會被縮減爲一個單一的空格 3:replace : XML 處理器將移除全部空白字符(換行、回車、空格以及製表符): </restriction> </simpleType> # 對長度的限定 <!-- 對長度的限定 --> <simpleType name="NameType"> <restriction base="integer"> <maxLength value="1"></maxLength> <minLength value="5"></minLength> </restriction> </simpleType> # 全部屬性 限定 描述 enumeration 定義可接受值的一個列表 fractionDigits 定義所容許的最大的小數位數。必須大於等於0。 length 定義所容許的字符或者列表項目的精確數目。必須大於或等於0。 maxExclusive 定義數值的上限。所容許的值必須小於此值。 maxInclusive 定義數值的上限。所容許的值必須小於或等於此值。 maxLength 定義所容許的字符或者列表項目的最大數目。必須大於或等於0。 minExclusive 定義數值的下限。所容許的值必需大於此值。 minInclusive 定義數值的下限。所容許的值必需大於或等於此值。 minLength 定義所容許的字符或者列表項目的最小數目。必須大於或等於0。 pattern 定義可接受的字符的精確序列。 totalDigits 定義所容許的阿拉伯數字的精確位數。必須大於0。 whiteSpace 定義空白字符(換行、回車、空格以及製表符)的處理方式。
1.4 複合結構類型
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee> # 對應實例 <element name="employee"> <complexType> <sequence> <element name="firstname" type="string"></element> <element name="lastname" type="string"></element> </sequence> </complexType> </element> # 對有屬性值的描述的 <!-- <shoesize country="france">35</shoesize> --> <element name="shoesize"> <complexType> <simpleContent> <extension base="integer"> <attribute name="country" type="string"></attribute> </extension> </simpleContent> </complexType> </element> # 空內容元素 <!-- <product prodid="1345" /> --> <element name="product"> <complexType> <attribute name="prodid" type="positiveInteger"></attribute> </complexType> </element> # 有元素 又有屬性 <!-- <user> <name age='12' address=' '>Tom</name> </user> --> <element name="user"> <complexType> <sequence> <element name="name" type="string"> <complexType> <attribute name="age" type="int"></attribute> <attribute name="address" type="string"></attribute> </complexType> </element> </sequence> </complexType> </element> ## 對上面的還有種寫法 <element name="name"> <complexType> <complexContent> <extension base="string"> <attribute name="age" type="int"/> <attribute name="address" type="string"/> </extension> </complexContent> </complexType> </element> # 複合類型的寫法 基本上 complexType simpleType 均可以單獨包裝出來 做爲一個共有類型 <element name="letter"> <complexType mixed="true"> <sequence> <element name="name" type="string"></element> <element name="orderid" type="positiveInteger"></element> <element name="shipdate" type="date"></element> </sequence> </complexType> </element> # 多個元素嵌套 <element name="Persons"> <complexType> <sequence> <element name="user" maxOccurs="unbounded"> <complexType> <sequence> <element name="name" type="string"/> <element name="age" type="string" /> </sequence> </complexType> </element> </sequence> </complexType> </element>
1.5指示器
order順序指示器
1: all 不按照給出的順序出現, 可是每一個元素 可出現一次 或者不出現 2: sequence 必須按照給出的順序出現 3: choise 多個ele選一 <xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Occurrence 指示器
對於全部的 "Order" 和 "Group" 指示器(any、all、choice、sequence、group name 以及 group reference),其中的 maxOccurs 以及 minOccurs 的默認值均爲 1。
<maxOccurs> 指示器可規定某個元素可出現的最大次數: <minOccurs> 指示器可規定某個元素可以出現的最小次數: <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
Group 指示器: 分爲元素組 屬性組 目的: 對某系元素 屬性進行封裝
<group name=""></group> // 元素組 <attributeGroup name=""></attributeGroup> //屬性組 # 元素組 # 屬性組 <attributeGroup name="telAtt"> <attribute name="tel" type="integer"></attribute> </attributeGroup> <group name="personEle"> <sequence> <element name="address" type="string" /> </sequence> </group> <element name="Persons"> <complexType> <sequence> <element name="user" maxOccurs="unbounded"> <complexType> <sequence> <element name="name" type="string" /> <element name="age" type="string"> <complexType> <attributeGroup ref="telAtt"></attributeGroup> </complexType> </element> <group ref="personEle"></group> </sequence> </complexType> </element> </sequence> </complexType> </element>
1.6 擴展元素 屬性
分爲元素擴展<any> 屬性擴展<anyAttribute>
# Person 中擴展一個child <xs:element name="person"> // <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:element> <xs:element name="children"> <xs:complexType> <xs:sequence> <xs:element name="childname" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> //以上兩個xsd必須定義 # 具體使用 <persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.microsoft.com family.xsd http://www.w3schools.com children.xsd"> <person> <firstname>Hege</firstname> <lastname>Refsnes</lastname> <children> <childname>Cecilie</childname> </children> </person> <person> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons> # 參數擴展 姓名中擴展性別 <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:element> <xs:attribute name="gender"> //擴展的文件 <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:attribute> ## 具體例子 <person gender="female"> <firstname>Hege</firstname> <lastname>Refsnes</lastname> </person> <person gender="male"> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>
1.7 元素替換與阻止
# 替換的例子 <xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/> //navn替換 name #阻止替換的例子 <xs:element name="name" type="xs:string" block="substitution"/> // 被阻止替換 <xs:element name="navn" substitutionGroup="name"/> # 替換後使用的 都是有效的 <customer> <name>John Smith</name> </customer> 或相似這樣: <kunde> <navn>John Smith</navn> </kunde>
2:瞭解一些類型
2.1 時間類型
# 1 <xs:element name="start" type="xs:date"/> 文檔中的元素看上去應該相似這樣: <start>2002-09-24</start> # 2 <xs:element name="start" type="xs:time"/> 文檔中的元素看上去應該相似這樣: <start>09:00:00</start> # 3 <xs:element name="startdate" type="xs:dateTime"/> 文檔中的元素看上去應該相似這樣: <startdate>2002-05-30T09:00:00</startdate> # 4 持續時間 不建議使用 xs:duration 問法規則: P 表示週期(必需) nY 表示年數 nM 表示月數 nD 表示天數 T 表示時間部分的起始 (若是您打算規定小時、分鐘和秒,則此選項爲必需) nH 表示小時數 nM 表示分鐘數 nS 表示秒數 <xs:element name="period" type="xs:duration"/> 文檔中的元素看上去應該相似這樣: <period>P5Y</period> 上面的例子表示一個 5 年的週期。 或者相似這樣: <period>P5Y2M10D</period> 上面的例子表示一個 5 年、2 個月及 10 天的週期。 或者相似這樣: <period>P5Y2M10DT15H</period> 上面的例子表示一個 5 年、2 個月、10 天及 15 小時的週期。 或者相似這樣: <period>PT15H</period>
2.2 數值數據
@# 1 xs:decimal <xs:element name="prize" type="xs:decimal"/> 文檔中的元素看上去應該相似這樣: <prize>999.50</prize> 或者相似這樣: <prize>+999.5450</prize> 或者相似這樣: <prize>-999.5230</prize> 或者相似這樣: <prize>0</prize> 或者相似這樣: <prize>14</prize> # 2 <xs:element name="prize" type="xs:integer"/> 文檔中的元素看上去應該相似這樣: <prize>999</prize> 或者相似這樣: <prize>+999</prize> 或者相似這樣: <prize>-999</prize> 或者相似這樣: <prize>0</prize
2.3 布爾 二進制數據
# 1 xs:boolean <xs:attribute name="disabled" type="xs:boolean"/> 文檔中的元素看上去應該相似這樣: <prize disabled="true">999</prize> 注意: 合法的布爾值是 true、false、1(表示 true) 以及 0(表示 false)。 # 2 xs:hexBinary - base64Binary (Base64 編碼的二進制數據) - hexBinary (十六進制編碼的二進制數據) <xs:element name="blobsrc" type="xs:hexBinary"/> 文檔中的元素看上去應該相似這樣: <name>0x16</name> # 3 下面是一個關於某個 scheme 中 anyURI 聲明的例子: <xs:attribute name="src" type="xs:anyURI"/> 文檔中的元素看上去應該相似這樣: <pic src="http://www.w3schools.com/images/smiley.gif" />
最後:參考手冊https://www.runoob.com/schema/schema-elements-ref.html 這些已久足夠了