You are on page 1of 18

XML SCHEMA

Web Service
Apa itu Skema XML?
• Skema XML adalah sintaks dasar XML
atau skema, yang mendefinisikan
bagaimana sebuah dokumen XML di
mark-up.
• Istilah mark-up bisa dibaca sebagai
model data
XML Schemas
• http://www.w3.org/TR/xmlschema-1/10/2000
• Generalizes DTDs
• Uses XML syntax
• Two documents: structure and datatypes
• http://www.w3.org/TR/xmlschema-1
• http://www.w3.org/TR/xmlschema-2
• XML-Schema is very complex
• Often criticized
• Some alternative proposals
XML Schema
<xsd:element name=“paper” type=“papertype”/>
<xsd:complexType name=“papertype”>
<xsd:sequence>
<xsd:element name=“title” type=“xsd:string”/>
<xsd:element name=“author” minOccurs=“0”/>
<xsd:element name=“year”/>
<xsd: choice> < xsd:element name=“journal”/>
<xsd:element name=“conference”/>
</xsd:choice>
</xsd:sequence> DTD: <!ELEMENT paper (title,author*,year,
</xsd:element> (journal|conference))>
Elements vs Types di dalam
XML Schema

<xsd:element name=“person”> <xsd:element name=“person”


<xsd:complexType> type=“ttt”>
<xsd:sequence> <xsd:complexType name=“ttt”>
<xsd:element name=“name” <xsd:sequence>
type=“xsd:string”/> <xsd:element name=“name”
<xsd:element name=“address” type=“xsd:string”/>
type=“xsd:string”/> <xsd:element name=“address”
</xsd:sequence> type=“xsd:string”/>
</xsd:complexType> </xsd:sequence>
</xsd:element> </xsd:complexType>

DTD: <!ELEMENT person (name,address)>


Elements vs Types di
XML Schema
• Types:
1. Simple types (integers, strings, ...)
2. Complex types (regular expressions, like in DTDs)
• Element-type-element alternation:
1. Root element has a complex type
2. That type is a regular expression of elements
3. Those elements have their complex types...
4. ...
5. On the leaves we have simple types
Local and Global Types di
XML Schema
• Local type:
<xsd:element name=“person”>
[define locally the person’s type]
</xsd:element>
• Global type:
<xsd:element name=“person” type=“ttt”/>
<xsd:complexType name=“ttt”>
[define here the type ttt]
</xsd:complexType>
Global types: can be reused in other elements
Local and Global Types di
XML Schema
• Local element:
<xsd:complexType name=“ttt”>
<xsd:sequence>
<xsd:element name=“address” type=“...”/>...
</xsd:sequence>
</xsd:complexType>
• Global element:
<xsd:element name=“address” type=“...”/>
<xsd:complexType name=“ttt”>
<xsd:sequence>
<xsd:element ref=“address”/> ...
</xsd:sequence>
</xsd:complexType> Global elements: like in DTDs
Regular Expressions in
XML Schema
Recall the element-type-element alternation:
<xsd:complexType name=“....”>
[regular expression on elements]
</xsd:complexType>
Regular expressions:
• <xsd:sequence> A B C </...> =ABC
• <xsd:choice> A B C </...> =A|B|C
• <xsd:group> A B C </...> = (A B C)
• <xsd:... minOccurs=“0” maxOccurs=“unbounded”> ..</...> =
(...)*
• <xsd:... minOccurs=“0” maxOccurs=“1”> ..</...> = (...)?
<xsd:element name=“person”>

Local <xsd:complexType>
. . . . .
<xsd:element name=“name”>
Names <xsd:complexType>
<xsd:sequence>
di XML <xsd:element name=“firstname”
type=“xsd:string”/>
Schema <xsd:element name=“lastname”
type=“xsd:string”/>
</xsd:sequence>
name berbeda </xsd:element>
. . . .
artinya di dalam </xsd:complexType>
person dan di dalam </xsd:element>
product <xsd:element name=“product”>
<xsd:complexType>
. . . . .
<xsd:element name=“name” type=“xsd:string”/>

</xsd:complexType>
</xsd:element>
Use of Local Names
<xsd:element name=“A” type=“oneB”/>
<xsd:complexType name=“oneB”>
<xsd:choice>
<xsd:complexType name=“onlyAs”> <xsd:element name=“B” type=“xsd:string”/>
<xsd:choice> <xsd:sequence>
<xsd:sequence> <xsd:element name=“A” type=“onlyAs”/>
<xsd:element name=“A” type=“onlyAs”/> <xsd:element name=“A” type=“oneB”/>
<xsd:element name=“A” type=“onlyAs”/> </xsd:sequence>
</xsd:sequence> <xsd:sequence>
<xsd:element name=“A” type=“xsd:string”/> <xsd:element name=“A” type=“oneB”/>
</xsd:choice> <xsd:element name=“A” type=“onlyAs”/>
</xsd:complexType> </xsd:sequence>
</xsd:choice>
</xsd:complexType>

Arbitrary deep binary tree with A elements,


and a single B element
Atribut di XML Schema
xsd:element name=“paper” type=“papertype”/>
xsd:complexType name=“papertype”>
<xsd:sequence>
<xsd:element name=“title” type=“xsd:string”/>
......
/xsd:sequence>
<xsd:attribute name=“language" type="xsd:NMTOKEN" fixed=“English"/>
/xsd:complexType>

Atribut terkait dengan tipe, bukan ke elemen


Hanya untuk tipe kompleks; lebih banyak masalah jika kita ingin menambahkan atribut ke tipe
sederhana.
Apa itu DTD ?
• Menentukan struktur dokumen XML
• Hanya elemen yang didefinisikan dalam DTD yang dapat
digunakan dalam dokumen XML, bisa internal atau
eksternal
• DTD mendefinisikan struktur dokumen XML "valid"
• Pemrosesan overhead terjadi saat memvalidasi XML
dengan DTD
Contoh Internal DTD
<?xml version=“1.0”?>
<!DOCTYPE invoice [
<!ELEMENT invoice (sku, qty, desc, price) >
<!ELEMENT sku (#PCDATA) >
<!ELEMENT qty (#PCDATA) >
<!ELEMENT desc (#PCDATA) >
<!ELEMENT price (#PCDATA) >
}>

<invoice>
<sku>12345</sku>
<qty>55</qty>
<desc>Left handed monkey wrench</desc>
<price>14.95</price>
</invoice>
Contoh Eksternal DTD
<?xml version=“1.0”>
<!DOCTYPE invoice SYSTEM “d:\data\kulsmt5\ws\invoice.dtd”>
<invoice>
<sku>12345</sku>
<qty>55</qty>
<desc>Left handed monkey wrench</desc>
<price>14.95</price>
</invoice>
Ekternal DTD (invoice.dtd)
<?xml version=“1.0”?>
<!ELEMENT invoice (sku, qty, desc, price) >
<!ELEMENT sku (#PCDATA) >
<!ELEMENT qty (#PCDATA) >
<!ELEMENT desc (#PCDATA) >
<!ELEMENT price (#PCDATA) >
Content Model
• Identifikasi nama elemen dan sifat konten elemen
tersebut
• Contoh ini menyatakan elemen yang kemudian
mendeskripsikan model konten dokumen (XML)

Content
Name model

<!ELEMENT note (to, from, subject, body)>


Element
definition
Kesimpulan
1. XML Schema digunakan untuk menjelaskan struktur
(isi) dokumen XML itu sendiri agar mudah dipahami
dan diproses.
2. Di dalam XML Schema fokus pada struktur (elemen)
dan tipe data elemen.
3. XML Schema mendefinisikan supaya penulisannya baik
(valid) dapat digunakan DTD

You might also like