1.12k likes | 1.58k Views
[ 教學 ] XML Schema. for everyone 2007-11-26 by Achi. 目錄 – (1). Schema Tutorial XSD HOME XSD Introduction XSD Why Use XSD How To XSD <schema> Simple Types XSD Elements XSD Attributes XSD Restrictions. 目錄 – (2). Complex Types XSD Elements XSD Empty XSD Elements Only XSD Text Only
E N D
[教學] XML Schema for everyone 2007-11-26 by Achi
目錄 – (1) • Schema Tutorial • XSD HOME • XSD Introduction • XSD Why Use • XSD How To • XSD <schema> • Simple Types • XSD Elements • XSD Attributes • XSD Restrictions
目錄– (2) • Complex Types • XSD Elements • XSD Empty • XSD Elements Only • XSD Text Only • XSD Mixed • XSD Indicators • XSD <any> • XSD <anyAttribute> • XSD Substitution • XSD Example
目錄– (3) • Data Types • XSD String • XSD Date • XSD Numeric • XSD Misc • References • XSD Reference • 總結
Schema TutorialXSD HOME • XML Schema 和 DTD:都是在定義 XML Document 的內容架構。 • DTD,早期的文件定義以它為主。 • XML Schema,新一代的驗證機制,可取代DTD,強化DTD的缺點。 • DTD 文件的附檔名是 dtd。 • XML Schema 文件的附檔名是 xsd。 • 所以,XML Schema 也可以稱為 XSD (XML Schema Definition)。 • 網站:http://www.w3schools.com/schema/default.asp
Schema TutorialXSD Introduction • 在開始了解 XML Schema 之前,下列的基本概念請先 ready: • HTML / XHTML • XML & XML Namespaces • DTD • XML Schema 有多項優點,足以取代 DTD 的位置。 • Refer to:http://www.w3schools.com/schema/schema_intro.asp • XML Schema is a W3C Standard。
Schema TutorialXSD Why Use • XML Schema support data types。 • XML Schema use XML syntax。 • XML Schema secure data communication。 • XML Schema are extensible。 • Well-Formed is not enough。 • Detail content refer to:http://www.w3schools.com/schema/schema_why.asp
Schema TutorialXSD How To (續..) • 以下示範如何用 XML Schema 與 DTD 來跟 XML Document 做溝通。
Schema TutorialXSD How To (續..) • XML Document (.xml) • 以上是一個 Simple XML Document,也是一般我們常會見到的格式。 • 接下來,示範符合 DTD 格式的 .xml & .dtd。 • 以及,示範符合 XML Schema 格式的 .xml & .xsd。 <?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
Schema TutorialXSD How To (續..) • reference to DTD (.xml)。 <?xml version="1.0"?> <!DOCTYPE note SYSTEM"http://www.w3schools.com/dtd/note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> • DTD File (.dtd)。 <!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>
Schema TutorialXSD How To • reference to XML Schema (.xml)。 <?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> • XML Schema File (.xsd)。 <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.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>
Schema TutorialXSD <schema> (續..) • 每一個 XML Schema 檔案(.xsd)裡,都會有一個根元素(root element) 叫做 <schema> element。 • 範例1:(<schema>用法) • 範例2:(<schema>通常會定義某些屬性,在下一頁會有說明) <?xml version="1.0"?> <xs:schema> ... ... </xs:schema> <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> ... ... </xs:schema>
xmlns:xs="http://www.w3.org/2001/XMLSchema" 1. 在 XML Schema(.xsd) 裡,能夠使用 element & data types,是因為有定義如上 namespaces。 2. 而且以 xs 為開頭,來使用任何 element。 targetNamespace="http://www.w3schools.com" 1. 在 XML Schema(.xsd) 裡,能夠使用 note,to,from,heading,body 等, 是因為有定義如上的 namespaces。 xmlns="http://www.w3schools.com" 1. Default namespaces。 elementFormDefault="qualified" 1. 在符合 XML Schema 的 XML 檔案裡的任何 element,都必須要在 .xsd 出現。 Schema TutorialXSD <schema> (續..) • 我們以P.11頁的範例來說明: • for .xsd:
xmlns="http://www.w3schools.com" 1. Default namespace declaration。 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd" 1. 假如有設定第一行時,就可以使用第二行的 schemaLocation 屬性。 2. 第一行:for namespace to use。 3. 第二行:XMl Scheam to use。 Schema TutorialXSD <schema> • 我們以P.11頁的範例來說明:(雖然 .xml 沒有使用到 <schema>,但卻也有定義類似的設定) • for .xml: • refer to:http://www.w3schools.com/schema/schema_schema.asp
<xs:element name="xxx" type="yyy"/> element name element data type Simple TypesXSD Elements (續..) • 簡單的語法,如下: • XML Schema 也有其他常見的 Data Type: • xs:string • xs:decimal • xs:integer • xs:boolean • xs:date • xs:time
Simple TypesXSD Elements (續..) • Example:(例:一個 XML Document 會對應到 一個 XML Schema) .xml <lastname>Refsnes</lastname> <age>36</age> <dateborn>1970-03-27</dateborn> .xsd <xs:element name="lastname" type="xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/>
Simple TypesXSD Elements • Default Values (當 value 沒有指定時,則會使用 default value) • Fixed Value (以 Java 的角度來說,就是 final String 的類型,也就是 value 為常數,已固定) <xs:element name="color" type="xs:string" default="red"/> <xs:element name="color" type="xs:string" fixed="red"/>
<xs:attribute name="xxx" type="yyy"/> attribute name attribute data type Simple TypesXSD Attributes (續..) • 簡單的語法,如下: • XML Schema 也有其他常見的 Data Type: • xs:string • xs:decimal • xs:integer • xs:boolean • xs:date • xs:time
Simple TypesXSD Attributes (續..) • Example:(例:一個 XML Document 會對應到 一個 XML Schema) .xml <lastname lang="EN">Smith</lastname> .xsd <xs:attribute name="lang" type="xs:string"/>
Simple TypesXSD Attributes • Default Values (當 value 沒有指定時,則會使用 default value) • Fixed Value (以 Java 的角度來說,就是 final String 的類型,也就是 value 為常數,已固定) • Required Attributes (如果 lang 這個 attribute is required,可以使用 use 這個屬性) <xs:attribute name="lang" type="xs:string" default="EN"/> <xs:attribute name="lang" type="xs:string" fixed="EN"/> <xs:attribute name="lang" type="xs:string" use=“required"/>
Simple TypesXSD Restrictions (續..) • Restrictions 的意思是說,在 XML Schema(.xsd) 裡,針對 elements 或 attributes,去定義能夠使用的值(Values),且該值(Values)能夠有一些 限制條件綁住。 • Restrictions 也可以稱做 facets。 • 接著,我們將會以一連串很簡單的 example 來說明值(Values)的用法:
Simple TypesXSD Restrictions (續..) • Restrictions on Values <xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 age。 2. age 的值(values)有設定限制的條件。 3. 值(values)的最小值是 0。 4. 值(values)的最大值是 120。
Simple TypesXSD Restrictions (續..) • Restrictions on a Set of Values <xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="MAZDA"/> <xs:enumeration value="FORD"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 值(values)的限制條件是:只能是某個集合(Set)。 2. 該集合,我們用 enumeration 來表示。 3. 我們定義一個 element 叫做 car。 4. car 的值(values)有設定限制的條件。 5. 值(values)只能夠是『MAZDA』『FORD』『BMW』。 說明: 1. 此種寫法,功能同上。 2. 在 element 寫 type, 會對應到 simpleType 的 name 上。 <xs:element name="car" type="carType"> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="MAZDA"/> <xs:enumeration value="FORD"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Restrictions on a Series of Values – (1) 說明: 1. 值(values)的限制條件是: 只能是連續(Series)數字或字母。 2. 該連續(Series) ,我們用 pattern 來表示。 3. 我們定義一個 element 叫做 letter。 4. letter 的值(values)有設定限制的條件。 5. 值(values)只能夠是『連續的小寫英文字母a~z』。 <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 initials。 2. initials 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『3個英文字母,且是連續的大寫A~Z』。 <xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Restrictions on a Series of Values – (2) 說明: 1. 我們定義一個 element 叫做 initials。 2. initials 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『3個英文字母,且是連續的大寫A~Z或小寫a~z』。 <xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 choice。 2. choice 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『1個英文字母,且只能是x,y,或z』。 <xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Restrictions on a Series of Values – (3) 說明: 1. 我們定義一個 element 叫做 prodid。 2. prodid 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『5個數字,且每個數字只能是 0 到 9 的範圍』。 <xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Other Restrictions on a Series of Values – (1) 說明: 1. 我們定義一個 element 叫做 letter。 2. letter 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『0個值或多個值以上,且值只能是小寫英文字母a~z』。 <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 letter。 2. letter 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『1個值或多個值以上, 且值是由小寫字母a~z,在緊接著大寫字母A~Z, 然後一直循環』。 例如: 『sToP』- 合法。 『Stop』- 不合法。 『STOP』- 不合法。 <xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Other Restrictions on a Series of Values – (2) 說明: 1. 我們定義一個 element 叫做 gender。 2. gender 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『male 或者是(OR) female』。 <xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 password。 2. password 的值(values)有設定限制的條件。 3. 值(values)只能夠是 『8個字元,該字元可以是大小寫英文字母或數字』。 <xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Restrictions on Whitespace Characters – (1) 說明: 1. 空白字元也可以受到控制,我們用 whiteSpace 來表示。 2. 我們定義一個 element 叫做 address。 3. address 的值(values)有設定限制的條件。 4. whiteSpace 設定 preserve, 表示說『空白字元都不會被移除,都會被保留下來』。 <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 address。 2. address 的值(values)有設定限制的條件。 3. whiteSpace 設定 replace, 表示說『所有跟空白有關的字元,都會被替代成空白字元』。 4. 跟空白有關的字元,如: line feeds(一整行的意思) tabs spaces carriage returns(應該指 換行字元吧,我不確定。) <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Restrictions on Whitespace Characters – (2) 說明: 1. 我們定義一個 element 叫做 address。 2. address 的值(values)有設定限制的條件。 3. whiteSpace 設定 collapse, 表示說『所有跟空白有關的字元,都會被移除』。 4. 跟空白有關的字元,如: line feeds(一整行的意思) tabs spaces carriage returns(應該指 換行字元吧,我不確定。) <xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Simple TypesXSD Restrictions (續..) • Restrictions on Length • 說明: • 對於 value 的長度,也有其限制的方式。 • 如『length』『maxLength』『minLength』。 • 2. 我們定義一個 element 叫做 password。 • 3. password 的值(values)有設定限制的條件。 • 4. 條件:『長度必須為8個』。 <xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element> 說明: 1. 我們定義一個 element 叫做 password。 2. password 的值(values)有設定限制的條件。 3. 條件:『長度最小必須是5個,長度最大必須是8個』。
Simple TypesXSD Restrictions • Restrictions for Datatypes • refer to:http://www.w3schools.com/schema/schema_facets.asp 最後,這有一份完整的資料,是從網站上擷取下來的,自行參考。
Complex TypesXSD Elements (續…) • What is a Complex Element? • A complex element contains other elements and/or attributes。 • Complex Elements 有下列四種類型: • empty elements • elements that contain only other elements • elements that contain only text • elements that contain both other elements and text • 以此類推,每個 elements 也可能會包含 attributes。 • 下一頁會示範這四種類型的用法。
Complex TypesXSD Elements (續…) • Examples: A complex element,叫做 product,是屬於 empty element: <product pid="12345"/> A complex element,叫做 employee,是屬於 contain only other elements: <employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee> A complex element,叫做 food,是屬於 contain only text: <food type="dessert">Ice cream</food> A complex element,叫做 description,是屬於 contain both elements and text: <description> It happened on <date lang="norwegian">03.03.99</date> .... </description>
Complex TypesXSD Elements (續…) • How to Define a Complex Element? - (1) • 假設在 .xml 裡,我們定義了如下的資料架構: • 那我們想要在 .xsd 裡去定義 .xml 的資料架構時,可以有兩種方式做得到。 • 下一頁,將會說明哪兩種方式。 <employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Complex TypesXSD Elements (續…) • How to Define a Complex Element? - (2) • 第一種方式: • 直接在 employee 這個 element 裡宣告。 • 如此做法,只能夠讓 employee 自己使用,別的 elements 無法用到。 • Child elements,像是 firstname 和 lastname, 是被 <sequence> 所圍繞著,且擺放位置有順序性的。 <xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Complex TypesXSD Elements (續…) • How to Define a Complex Element? - (3) • 第二種方式: • 透過 element 的 type 屬性,可以對應到 complexType 的 name 屬性。 • 如此做法,不只能夠讓 employee 自己使用, 還可以讓別的 elements 一起使用,下一頁有範例。 <xs:element name="employee" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>
Complex TypesXSD Elements (續…) • How to Define a Complex Element? - (4) • 下一頁還有比較複雜的範例。 <xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>
Complex TypesXSD Elements • How to Define a Complex Element? - (5) refer to:http://www.w3schools.com/schema/schema_complex.asp <xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
Complex TypesXSD Empty • Complex Empty Elements • An empty complex element cannot have contents, only attributes。 refer to:http://www.w3schools.com/schema/schema_complex_empty.asp An empty XML element: <product prodid="1345"/> <xs:element name="product"> <xs:complexType> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType> </xs:element> 另外一種寫法 <xs:element name="product" type="prodtype"/> <xs:complexType name="prodtype"> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType>
Complex TypesXSD Elements Only (續…) • Complex Types Containing Elements Only • An “elements-only” complex type contains an element that contains only other elements。 在 .xml 中,有一個 element 叫做 person,它只能夠包含其他的 element,例:firstname,lastname <person> <firstname>John</firstname> <lastname>Smith</lastname> </person> 那我們把 .xml 轉換成對應的 .xsd 的格式,則會如下: <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>
Complex TypesXSD Elements Only refer to:http://www.w3schools.com/schema/schema_complex_elements.asp 上一頁的 .xsd,也可以改寫成如下的寫法,用 refer 的方式: <xs:element name="person" type="persontype"/> <xs:complexType name="persontype"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>
Complex TypesXSD Text Only (續…) • Complex Text-Only Elements • A complex text-only element can contain text and attributes。 <xs:element name="somename"> <xs:complexType> <xs:simpleContent> <xs:extension base="basetype"> .... .... </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> 或 <xs:element name="somename"> <xs:complexType> <xs:simpleContent> <xs:restriction base="basetype"> .... .... </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element> 說明: 1. 在 complex Type 裡,我們使用了 simpleContent 這個 element。 2. 當使用了 simpleContent,就必須要在其內部定義 extension或是 restriction。
Complex TypesXSD Text Only • Example:(續..) 在 .xml 中,我們定義了一個 shoesize element,它只能包含 text: <shoesize country="france">35</shoesize> 那我們把 .xml 轉換成對應的 .xsd,則會如下: <xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>
Complex TypesXSD Text Only • Example: refer to:http://www.w3schools.com/schema/schema_complex_empty.asp 續上一頁,也可以改成用 refer 的寫法,如下: <xs:element name="shoesize" type="shoetype"/> <xs:complexType name="shoetype"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType>
Complex TypesXSD Mixed (續…) • Complex Types with Mixed Content • A mixed complex type element can contain attributes, elements, and text。 在 .xml 中,我們定義了一個 letter element,它能夠包含 text and other elements: <letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter> 說明: 1. 要在 letter element 中使用 child-elements 的話,mixed 要設定為true。 那我們把 .xml 轉換成對應的 .xsd,則會如下: <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>
Complex TypesXSD Mixed (續…) • Example: refer to:http://www.w3schools.com/schema/schema_complex_mixed.asp 續上一頁,也可以改成用 refer 的寫法,如下: <xs:element name="letter" type="lettertype"/> <xs:complexType name="lettertype" mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType>
Complex TypesXSD Mixed • Complex Types with Mixed Content • A mixed complex type element can contain attributes, elements, and text。 在 .xml 中,我們定義了一個 letter element,它能夠包含 text and other elements: <letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter> 說明: 1. 要在 letter element 中使用 child-elements 的話,mixed 要設定為true。 那我們把 .xml 轉換成對應的 .xsd,則會如下: <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>