1 / 96

[ 教學 ] XML Schema

[ 教學 ] 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

helga
Télécharger la présentation

[ 教學 ] XML Schema

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. [教學] XML Schema for everyone 2007-11-26 by Achi

  2. 目錄 – (1) • Schema Tutorial • XSD HOME • XSD Introduction • XSD Why Use • XSD How To • XSD <schema> • Simple Types • XSD Elements • XSD Attributes • XSD Restrictions

  3. 目錄– (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

  4. 目錄– (3) • Data Types • XSD String • XSD Date • XSD Numeric • XSD Misc • References • XSD Reference • 總結

  5. 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

  6. 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。

  7. 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

  8. Schema TutorialXSD How To (續..) • 以下示範如何用 XML Schema 與 DTD 來跟 XML Document 做溝通。

  9. 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>

  10. 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)>

  11. 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>

  12. 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>

  13. 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:

  14. 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

  15. 休息一下

  16. <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

  17. 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"/>

  18. 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"/>

  19. <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

  20. Simple TypesXSD Attributes (續..) • Example:(例:一個 XML Document 會對應到 一個 XML Schema) .xml <lastname lang="EN">Smith</lastname> .xsd <xs:attribute name="lang" type="xs:string"/>

  21. 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"/>

  22. Simple TypesXSD Restrictions (續..) • Restrictions 的意思是說,在 XML Schema(.xsd) 裡,針對 elements 或 attributes,去定義能夠使用的值(Values),且該值(Values)能夠有一些 限制條件綁住。 • Restrictions 也可以稱做 facets。 • 接著,我們將會以一連串很簡單的 example 來說明值(Values)的用法:

  23. 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。

  24. 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>

  25. 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>

  26. 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>

  27. 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>

  28. 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>

  29. 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>

  30. 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>

  31. 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>

  32. 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個』。

  33. Simple TypesXSD Restrictions • Restrictions for Datatypes • refer to:http://www.w3schools.com/schema/schema_facets.asp 最後,這有一份完整的資料,是從網站上擷取下來的,自行參考。

  34. 休息一下

  35. 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。 • 下一頁會示範這四種類型的用法。

  36. 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>

  37. Complex TypesXSD Elements (續…) • How to Define a Complex Element? - (1) • 假設在 .xml 裡,我們定義了如下的資料架構: • 那我們想要在 .xsd 裡去定義 .xml 的資料架構時,可以有兩種方式做得到。 • 下一頁,將會說明哪兩種方式。 <employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

  38. 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>

  39. 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>

  40. 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>

  41. 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>

  42. 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>

  43. 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>

  44. 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>

  45. 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。

  46. 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>

  47. 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>

  48. 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>

  49. 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>

  50. 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>

More Related