Pemrograman Basis Data Berbasis Web Additional Discussion (XML Schema) Noor Ifada
[email protected] S1 Teknik Informatika - Unijoyo
1
Sub Pokok Bahasan Validasi dokumen XML Tipe Sederhana Tipe Kompleks Elemen Atribut Tipe User-Derived
S1 Teknik Informatika - Unijoyo
2
Validasi Dokumen XML
Well-formed vs Valid: Well-formed: dokumen ditulis berdasarkan sintaks dan struktur yang ada dalam XML Specification Valid: dokumen adalah well-formed dan bersesuaian dengan struktur yang ada dalam DTD atau schema Schema dapat digunakan untuk menentukan: urutan suatu elemen elemen child yang boleh digunakan type of content untuk suatu elemen XML Schema adalah standar dari W3C
S1 Teknik Informatika - Unijoyo
3
Math I <description>Introduction to Math 3 Math II <description>Intermediate Math 3 <pre-requisite cref="c1" req_next_sem="true"> true
S1 Teknik Informatika - Unijoyo
4
Tipe Sederhana
Tipe Sederhana: hanya terdiri dari teks Digunakan pada elemen yang tidak memiliki atribut dan elemen child <xsd:element name="title" type="xsd:string"/> <xsd:element name="description" type="xsd:string"/> <xsd:element name="credits" type="xsd:integer"/>
S1 Teknik Informatika - Unijoyo
5
Tipe Sederhana (contd-2)
Tipe built-in adalah tipe data yang telah didefinisikan dalam spesifikasi XML Schema Tipe primitive: tipe data dasar Tipe derived: dibentuk dari tipe data lain <xsd:attribute name="cid" type="xsd:ID"/> <xsd:attribute name="cref" type="xsd:IDREF"/> <xsd:attribute name="req_next_sem" type="xsd:boolean" />
S1 Teknik Informatika - Unijoyo
6
Tipe Kompleks
Suatu elemen yang memiliki child harus didefinisikan dengan menggunakan tipe kompleks
<xsd:element name="pre-requisite" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="instructor_approval" type="xsd:boolean"/> <xsd:attribute name="cref" type="xsd:IDREF"/> <xsd:attribute name="req_next_sem" type="xsd:boolean"/>
S1 Teknik Informatika - Unijoyo
7
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="courses"> <xsd:complexType> <xsd:sequence> <xsd:element name="course" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="description" type="xsd:string"/> <xsd:element name="credits" type="xsd:integer"/> <xsd:element name="pre-requisite" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="instructor_approval" type="xsd:boolean"/> <xsd:attribute name="cref" type="xsd:IDREF"/> <xsd:attribute name="req_next_sem" type="xsd:boolean"/> <xsd:attribute name="cid" type="xsd:ID"/> S1 Teknik Informatika - Unijoyo 8
Elemen Content: (tipe string) Default Fixed <xsd:element name="myelement" default="some text" /> <xsd:element name="secondelement" fixed="fixed text" />
Suatu elemen hanya dapat menggunakan salah satu dari default ataupun fixed
S1 Teknik Informatika - Unijoyo
9
Elemen (contd-2) NULL Value Dapat didefinisikan menggunakan atribut nillable dengan tipe data Boolean (default value: false) <element name="mydata" nillable="true" />
S1 Teknik Informatika - Unijoyo
10
Elemen (contd-3) Element Substitution Misal menggunakan shared schema agar dapat memberi nama suatu elemen dalam 2 bahasa: <xsd:element name="street" type="xsd:string" /> <xsd:element name="straat" substitutionGroup="street" > <xs:element name="name" type="xs:string"/> <xs:element name="naam" substitutionGroup="name"/> <xsd:complexType name="infoType"> <xsd:sequence> <xsd:element ref="name"/> <xsd:element ref="street"/> <xs:element name="address" type="infoType"/> <xs:element name="adres" substitutionGroup="address"/> S1 Teknik Informatika - Unijoyo
<street /> <straat />
11
Elemen (contd-4) Element Groups sequence: kemunculan elemen harus mengikuti suatu urutan tertentu choice: sejumlah tertentu elemen dapat dipilih yang besarnya ditentukan oleh atribut maxOccurs dan minOccurs (default value: 1) all: kemunculan elemen tidak harus mengikuti suatu urutan tertentu, namun mereka harus tetap berada di dalam elemen parent
S1 Teknik Informatika - Unijoyo
12
<xsd:group name="Address"> <xsd:sequence> <xsd:element name="street" /> <xsd:element name="city" /> <xsd:element name="state" /> <xsd:element name="zipcode" /> <xsd:element name="BillingAddress"> <xsd:sequence> <xsd:group ref="Address" /> <xsd:element name="ShippingAddress"> <xsd:sequence> <xsd:element name="attention" type="xsd:string" /> <xsd:group ref="Address" /> S1 Teknik Informatika - Unijoyo
13
Atribute Attribute Declaration default fixed use: menentukan bagaimana cara penggunaan atribut, yaitu optional, required, atau prohibited (default value: optional) <xsd:attribute name="att1" type="xsd:integer" default="1" use="required" /> <xsd:attribute name="att2" type="xsd:string" fixed="fixed val" use="optional" /> <xsd:attribute name="att3" type="xsd:string" use="optional" />
S1 Teknik Informatika - Unijoyo
14
Atribut (contd-2) Attribute Groups <xsd:attributeGroup name="moveattributes"> <xsd:attribute name="moveID" type="xsd:ID" use="required" /> <xsd:attribute name="stars" type="xsd:integer" /> <xsd:attribute name="rating" type="xsd:string" use="required" /> <xsd:element name="Movie"> <xsd:complexType> <xsd:attributeGroup ref="movieattributes" /> S1 Teknik Informatika - Unijoyo
15
Tipe User-Derived
adalah tipe data yang didefinisikan sendiri oleh pembuat schema berdasarkan pada tipe data lain yang sudah ada
pattern <xsd:simpleType name="EmailType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([az0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})" />
S1 Teknik Informatika - Unijoyo
16
Tipe User-Derived (contd-2) length/minLength/maxLength length:
membatasi panjang data dalam jumlah tertentu minLength dan maxLength: membatasi panjangnya data agar minimal sepanjang minLength dan/atau tidak lebih dari maxLength <xsd:simpleType name="TitleType"> <xsd:restriction base="xsd:string"> <xsd:minLength value="5" /> <xsd:maxLength value="255" /> S1 Teknik Informatika - Unijoyo
17
Tipe User-Derived (contd-3) whiteSpace preserving: dibiarkan apa adanya replacing: mengkonversi #x9 (tab), #xA (line feed), dan #xD (carriage return) menjadi #x20 (spaces) collapsing: pertama-tama memprosesnya dengan replacing dan kemudian mengkonversi seluruh karakter #x20 (spaces) yang berurutan menjadi sebuah karakter#x20 <xsd:element name="description"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:whiteSpace value="collapse" /> S1 Teknik Informatika - Unijoyo
18
Tipe User-Derived (contd-4) minInclusive /maxInclusive/minExclusive/maxExclusive inclusive: harus berada di dalam range exclusive: harus berada di luar range <xsd:simpleType name="oneToTenII"> <xsd:simpleType name="oneToTen"> <xsd:restriction base="xsd:integer"> <xsd:restriction base="xsd:integer"> <xsd:minExclusive value="0"/> <xsd:minInclusive value="1"/> <xsd:maxExclusive value="11"/> <xsd:maxInclusive value="10"/>
S1 Teknik Informatika - Unijoyo
19