# XML
## DTD-1
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mp3 [
<!ELEMENT mp3 (item_no, model, price?,memory*)>
<!ELEMENT item_no (#PCDATA)>
<!ELEMENT model (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT memory (#PCDATA)>
]>
<mp3>
<item_no>
aaa
</item_no>
<model>
aaaa
</model>
<price>
aaaa
</price>
<memory>
aaaa
</memory>
</mp3>
```
## DTD-2
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE author [
<!ELEMENT author (phone*)>
<!ATTLIST author firstname CDATA #IMPLIED>
<!ATTLIST author middlename CDATA #IMPLIED>
<!ATTLIST author lastname CDATA #IMPLIED>
<!ELEMENT phone (#PCDATA)>
]>
<author firstname="a" middlename="a" lastname="aa">
<phone>
aaaa
</phone>
</author>
```
## DTD-3
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE employees [
<!ELEMENT employees (employee*)>
<!ELEMENT employee (name+,age?,sex,address)>
<!ATTLIST employee id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT address (#PCDATA)>
]>
<employees>
<employee id= "1">
<name>張三</name>
<age>32</age>
<sex>男</sex>
<address>台中</address>
</employee>
<employee id= "2">
<name>李四</name>
<age>22</age>
<sex>男</sex>
<address>新竹</address>
</employee>
</employees>
```
## XML 1-1
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<media xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml1.xsd">
<paper>
aaaaa
</paper>
</media>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<media xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml1.xsd">
<paper>
aaaaa
</paper>
</media>
```
## XML 1-2
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="color_type">
<xs:restriction base="xs:string">
<xs:enumeration value="white"></xs:enumeration>
<xs:enumeration value="red"></xs:enumeration>
<xs:enumeration value="green"></xs:enumeration>
<xs:enumeration value="blue"></xs:enumeration>
<xs:enumeration value="black"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="tests">
<xs:sequence>
<xs:element name="test" type="color_type"/>
</xs:sequence>
</xs:complexType>
<xs:element name="t"></xs:element>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<t xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml2.xsd">>
<test>
<white>
aaaaa
</white>
</test>
</t>
```
## XML 1-3
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="mp3_group">
<xs:sequence>
<xs:element name="model" type="xs:string" />
<xs:element name="price" type="xs:string" />
<xs:element name="memory" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:element name="mp3">
<xs:complexType>
<xs:sequence>
<xs:group ref="mp3_group" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<mp3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml3.xsd">
<model>
aaa
</model>
<price>
aaa
</price>
<memory>
aaaa
</memory>
</mp3>
```
## XML 2-1
### DTD
```
<?xml version="1.0" encoding="Big5"?>
<!DOCTYPE BookCatalogue [
<!ELEMENT BookCatalogue (Book*)>
<!ELEMENT Book (Title, Author+, ReleaseDate, ISBN?, Publisher)>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Author (#PCDATA)>
<!ELEMENT ReleaseDate (#PCDATA)>
<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT Publisher (Country, Company)>
<!ELEMENT Country (#PCDATA)>
<!ELEMENT Company (#PCDATA)>
<!ATTLIST Book category CDATA #REQUIRED>
<!ATTLIST Book page CDATA #REQUIRED>
<!ATTLIST Author sex (男|女|male|female) "男">
<!ATTLIST Author mail CDATA #IMPLIED>
<!ATTLIST Publisher city NMTOKEN "Taipei">
<!ATTLIST Publisher address NMTOKENS #REQUIRED>
]>
<BookCatalogue>
<Book category="aaa" page="55">
<Title>
ssss
</Title>
<Author sex="男" mail="ssss">
aaaa
</Author>
<ReleaseDate>
ssss
</ReleaseDate>
<ISBN>
sssss
</ISBN>
<Publisher address="SSSS">
<Country>SSSSS</Country>
<Company>SSSS</Company>
</Publisher>
</Book>
</BookCatalogue>
```
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="BookCatalogue">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string"></xs:element>
<xs:element name="Author" type="Authortype" minOccurs="0" maxOccurs="1"></xs:element>
<xs:element name="ReleaseDate" type="xs:string"></xs:element>
<xs:element name="ISBN" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
<xs:element name="Publisher">
<xs:complexType>
<xs:sequence>
<xs:element name="Country" type="xs:string"></xs:element>
<xs:element name="Company" type="xs:string"></xs:element>
</xs:sequence>
<xs:attribute name="city" default="Taipei" type="xs:NMTOKEN"></xs:attribute>
<xs:attribute name="address" use="required" type="xs:NMTOKENS"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="category" type="xs:string" use="required"></xs:attribute>
<xs:attribute name="page" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Authortype">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="sex" default="男">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="男"></xs:enumeration>
<xs:enumeration value="女"></xs:enumeration>
<xs:enumeration value="male"></xs:enumeration>
<xs:enumeration value="female"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="mail" type="xs:string" use="optional"></xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="Big5"?>
<BookCatalogue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xml2-1.xsd">
<book category="aaa" page="55">
<Title>
ssss
</Title>
<Author sex="女" mail="ssss">
aaaa
</Author>
<ReleaseDate>
ssss
</ReleaseDate>
<ISBN>
sssss
</ISBN>
<Publisher address="SSSS">
<Country>SSSSS</Country>
<Company>SSSS</Company>
</Publisher>
</book>
</BookCatalogue>
```
## XML 2-2
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employees">
<xs:complexType>
<xs:sequence>
<xs:element name="employee" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:string"></xs:element>
<xs:element name="age" minOccurs="1" maxOccurs="1" type="xs:string"></xs:element>
<xs:element name="sex" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
<xs:element name="address" type="xs:string" maxOccurs="unbounded"></xs:element>
</xs:sequence>
<xs:attribute name="pid" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<employees xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xml2-2.xsd">
<employee pid="B123456789">
<name>張三</name>
<age>32</age>
<sex>男</sex>
<address>台中</address>
</employee>
<employee pid="P234567891">
<name>李四</name>
<age>22</age>
<sex>男</sex>
<address>新竹</address>
</employee>
</employees>
```
## XML 2-3
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Orders">
<xs:complexType>
<xs:sequence>
<xs:element name="Order" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element name="number">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minExclusive value="149"></xs:minExclusive>
<xs:maxExclusive value="451"></xs:maxExclusive>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="city" type="xs:string"></xs:element>
<xs:element name="zip">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderID" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[T]\d{2}-[P]-\d{3}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="orderDate" type="xs:string" use="optional"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml2-3.xsd">
<Order orderID="T01-P-011" orderDate="2016-5-19">
<name>Toy</name>
<number>400</number>
<city>Hsinchu</city>
<zip>301</zip>
</Order>
<Order orderID="T02-P-012" orderDate="2016-5-20">
<name>ToyBar</name>
<number>168</number>
<city>Taichung</city>
<zip>401</zip>
</Order>
</Orders>
```
## XML 2-4
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="inventory">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element name="price" type="xs:string"></xs:element>
<xs:element name="quantity" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="available" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
<xs:attribute name="isbn" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="inStock" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="yes"></xs:enumeration>
<xs:enumeration value="no"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<!-- File name : inventory.xml -->
<inventory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml2-4.xsd">
<book isbn="0-12-012507-8" inStock="yes">
<name> How to program in Java 3/e</name>
<price>USD88</price>
<quantity>300</quantity>
</book>
<book isbn="0-12-028418-5" inStock="no">
<name>XML and Web Service</name>
<price>USD68 </price>
<available>2015-12-15</available>
</book>
</inventory>
```
## XML 2-5
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="booklist">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="bookTitle" minOccurs="1" maxOccurs="1" type="xs:string"></xs:element>
<xs:element name="pubDate" minOccurs="1" maxOccurs="1" type="xs:string"></xs:element>
<xs:element name="authorlist" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="author" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:string"></xs:element>
</xs:sequence>
<xs:attribute name="ISBN" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}-\d{3}-\d{3}-\d{3}-\d{1}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<booklist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml2-5.xsd">
<book ISBN="966-788-611-147-9">
<bookTitle>DBMS Using SQL Server 2015</bookTitle>
<pubDate>2015-08-30</pubDate>
<authorlist>
<author>潔西卡</author>
</authorlist>
<price>NT780</price>
</book>
<book ISBN="966-788-622-146-5">
<bookTitle>Java 8 語言入門</bookTitle>
<pubDate>2015-07-12</pubDate>
<authorlist>
<author>威爾遜</author>
</authorlist>
<price> NT 700</price>
</book>
<book ISBN="966-788-244-127-2">
<bookTitle>Java 8 語言指引</bookTitle>
<pubDate>2015-11-25</pubDate>
<authorlist>
<author>尼爾森</author>
</authorlist>
<price> NT 750</price>
</book>
</booklist>
```
## XML 2-6
### .xsd
```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="PRODUCTDATA" type="prdata" />
<xs:complexType name="prdata">
<xs:sequence>
<xs:element name="PRODUCT" type="prdt" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="prdt">
<xs:sequence>
<xs:element name="PRODUCTNAME" type="xs:string" />
<xs:element name="DESCRIPTION" type="xs:string" />
<xs:element name="PRICE" type="xs:decimal" minOccurs="3" maxOccurs="5"></xs:element>
<xs:element name="QUANTITY" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
```
### .xml
```
<?xml version="1.0" encoding="UTF-8"?>
<PRODUCTDATA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xml2-6.xsd">
<PRODUCT>
<PRODUCTNAME>sss</PRODUCTNAME>
<DESCRIPTION>ssss</DESCRIPTION>
<PRICE>555</PRICE>
<PRICE>555</PRICE>
<PRICE>555</PRICE>
<QUANTITY>222</QUANTITY>
</PRODUCT>
</PRODUCTDATA>
```