XML Schema adalah alternatif berbasis XML untuk DTD.
Sebuah skema XML menjelaskan struktur dari dokumen XML.
XML Schema bahasa juga disebut sebagai XML Schema Definition (XSD).
Tujuan dari XML Schema adalah untuk mendefinisikan blok dari dokumen XML, seperti sebuah DTD.
XML Schema:
- mendefinisikan unsur-unsur yang dapat muncul dalam dokumen
- mendefinisikan atribut yang dapat muncul dalam dokumen
- mendefinisikan elemen elemen anak
- mendefinisikan urutan elemen anak
- mendefinisikan jumlah elemen anak
- mendefinisikan apakah suatu elemen kosong atau dapat berisi teks
- mendefinisikan tipe data untuk elemen dan atribut
- mendefinisikan nilai default dan tetap untuk elemen dan atribut
Dengan dukungan untuk tipe data:
- Lebih mudah untuk menjelaskan konten dokumen yang diijinkan
- Lebih mudah untuk memvalidasi kebenaran data
- Lebih mudah untuk bekerja dengan data dari database
- Lebih mudah untuk mendefinisikan aspek data (pembatasan data)
- Lebih mudah untuk mendefinisikan pola data (format data)
- Lebih mudah untuk mengkonversi data antara tipe data yang berbeda
XML:
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
DTD:
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
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: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>
<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>
Dokumen XML memiliki referensi ke sebuah DTD:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM
"http://www.w3schools.com/dtd/note.dtd">
<!DOCTYPE note SYSTEM
"http://www.w3schools.com/dtd/note.dtd">
<?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">
ELEMEN SEDERHANA
Unsur sederhana adalah elemen XML yang dapat berisi teks saja. Hal ini tidak dapat berisi elemen-elemen lain atau atribut.
Namun, "hanya teks" pembatasan cukup menyesatkan. Teks dapat dari berbagai jenis. Hal ini dapat menjadi salah satu jenis termasuk dalam definisi XML Schema (boolean, string, tanggal, dll), atau bisa jenis kustom yang Anda dapat menentukan sendiri.
XML Schema memiliki banyak built-in tipe data. Jenis yang paling umum adalah:
- xs: string
- xs: decimal
- xs: integer
- xs: boolean
- xs: date
- xs: time
Nilai default dan tetap untuk Elemen
<xs:element name="color" type="xs:string" default="red"/><xs:element name="color" type="xs:string" fixed="red"/>
Atribut
Apakah Atribut itu?
elemen sederhana tidak dapat memiliki atribut. Jika suatu elemen memiliki atribut, maka dianggap suatu tipe kompleks. Tetapi atribut itu sendiri selalu dinyatakan sebagai tipe sederhana.Sintaks untuk mendefinisikan atribut adalah:
<xs:attribute name="xxx" type="yyy"/>
Contoh
Berikut ini adalah elemen XML dengan atribut:| <lastname lang="EN">Smith</lastname> |
<xs:attribute name="lang" type="xs:string"/>
Atribut adalah opsional secara default. Untuk menetapkan bahwa atribut diperlukan, gunakan "use" atribut:
<xs:attribute name="lang" type="xs:string" use="required"/>
XSD Restrictions
Pembatasan digunakan untuk menentukan nilai yang dapat diterima untuk elemen XML atau atribut
Contoh:
<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>
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
Untuk membatasi isi elemen XML untuk mendefinisikan serangkaian angka atau huruf yang dapat digunakan, kita akan menggunakan pola kendala.
Contoh di bawah ini mendefinisikan sebuah elemen yang disebut "huruf" dengan pembatasan. Nilai hanya dapat diterima adalah SATU dari huruf kecil dari ke z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Contoh berikut ini mendefinisikan sebuah elemen yang disebut "inisial" dengan pembatasan. Nilai hanya dapat diterima adalah TIGA dari huruf besar dari ke 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>
Contoh berikut juga mendefinisikan elemen yang disebut "inisial" dengan pembatasan. Nilai hanya dapat diterima adalah TIGA dari huruf huruf besar atau huruf kecil dari a ke z:
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
Contoh berikut ini mendefinisikan sebuah elemen yang disebut "pilihan" dengan pembatasan. Nilai hanya dapat diterima adalah SATU dari surat-surat berikut: x, y, z ATAU:
<xs:pattern value="[xyz]"/>
Contoh berikut mendefinisikan elemen yang disebut "ProdID" dengan pembatasan. Nilai hanya dapat diterima adalah LIMA digit secara berurutan, dan masing-masing digit harus berada dalam rentang dari 0 sampai 9:
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
Contoh di bawah ini mendefinisikan sebuah elemen yang disebut "huruf" dengan pembatasan. Nilai diterima adalah nol atau lebih kejadian dari huruf kecil ke z:
<xs:pattern value="([a-z])*"/>
Contoh berikut juga mendefinisikan elemen yang disebut "huruf" dengan pembatasan. Nilai diterima adalah satu atau lebih pasang huruf, masing-masing pasangan terdiri dari huruf kecil diikuti dengan huruf besar. Misalnya, "sTop" akan divalidasi oleh pola ini, tapi tidak "STOP" atau "stop" atau "berhenti":
<xs:pattern value="([a-z][A-Z])+"/>
contoh atau:
<xs:pattern value="male|female"/>
Contoh berikut ini mendefinisikan sebuah elemen yang disebut "password" dengan pembatasan. Harus ada tepat delapan karakter dalam satu baris dan karakter mereka harus huruf kecil atau huruf besar dari ke z, atau nomor dari 0 sampai 9:
<xs:pattern value="[a-zA-Z0-9]{8}"/>
Contoh tidak menghapus karakter whitespace
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
Contoh mengganti (tab, enter, etc)menjadi karakter whitespace:
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
Contoh trim:
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
Contoh Panjang Karakter:
<xs:length value="8"/>
Contoh Batasan panjang:
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
Restrictions for Datatypes
| Constraint | Description |
|---|---|
| enumeration | Defines a list of acceptable values |
| fractionDigits | Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero |
| length | Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero |
| maxExclusive | Specifies the upper bounds for numeric values (the value must be less than this value) |
| maxInclusive | Specifies the upper bounds for numeric values (the value must be less than or equal to this value) |
| maxLength | Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero |
| minExclusive | Specifies the lower bounds for numeric values (the value must be greater than this value) |
| minInclusive | Specifies the lower bounds for numeric values (the value must be greater than or equal to this value) |
| minLength | Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero |
| pattern | Defines the exact sequence of characters that are acceptable |
| totalDigits | Specifies the exact number of digits allowed. Must be greater than zero |
| whiteSpace | Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled |
ELEMEN KOMPLEKS
Unsur kompleks mengandung unsur-unsur lain dan / atau atribut.
Ada empat macam unsur yang kompleks:- unsur-unsur kosong
- unsur-unsur yang mengandung elemen lainnya
- elemen yang hanya berisi teks
- unsur-unsur yang mengandung kedua unsur lain dan teks
Contoh Elemen Kompleks:
<product pid="1345"/>
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
<food type="dessert">Ice cream</food>
<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
Cara mendefinisikan Elemen Kompleks:
XML:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
SCHEMA CARA 1 dengan cara direct (langsung):
<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>
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:sequence> tag. menandakan bahwa element firstname dan lastname harus berurutan dan berada didalam elemen person.
Jika Anda menggunakan metode yang dijelaskan di atas, hanya elemen "karyawan" yang dapat menggunakan tipe kompleks tersebut. Perhatikan bahwa elemen anak, "firstname" dan "lastname", dikelilingi oleh indikator <sequence>. Ini berarti bahwa unsur-unsur anak harus muncul dalam urutan yang sama seperti yang dinyatakan.
SCHEMA CARA 2 dengan cara membuat sebagai atribut:
<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>
dengan menggunakan cara ini kita juga bisa menambahkannya kebanyak elemen
<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>
<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>
Anda juga dapat mendasarkan sebuah elemen yang kompleks pada elemen kompleks yang lain dan menambahkan beberapa elemen, seperti ini:
<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>
ELEMEN KOSONG
<product prodid="1345" />
elemen tersebut tidak memiliki isi sama sekali<xs:element name="product">
<xs:complexType>
<xs:complexContent>
<xs:restriction base="xs:integer">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="xs:integer">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
cara yang lebih singkat :
<xs:element name="product">
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
sebagai atribut:
<xs:element name="product" type="prodtype"/>
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
<xs:complexType name="prodtype">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
ELEMEN CAMPURAN
XML:
<letter>
Dear Mr.<name>John Smith</name>.
Your order <orderid>1032</orderid>
will be shipped on <shipdate>2001-07-13</shipdate>.
</letter>
Dear Mr.<name>John Smith</name>.
Your order <orderid>1032</orderid>
will be shipped on <shipdate>2001-07-13</shipdate>.
</letter>
SCHEMA:
<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>
<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>
atau sebagai atribut type
<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>
<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>
Indicators
Ada 7 Indikator:Order indicators:
- All
- Choice
- Sequence
- maxOccurs
- minOccurs
- Group name
- attributeGroup name
<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Indikator <choice> menetapkan bahwa salah satu elemen anak atau lainnya ada:
<xs:element name="person">
<xs:complexType>
<xs:choice>
<xs:element name="employee" type="employee"/>
<xs:element name="member" type="member"/>
</xs:choice>
</xs:complexType>
</xs:element>
Indikator <sequence> menetapkan bahwa elemen anak harus muncul dalam urutan tertentu:
<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>
Indikator <maxOccurs> menentukan angka maksimum berapa kali suatu elemen dapat terjadi:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Indikator <minOccurs> menentukan jumlah minimum kali suatu elemen dapat terjadi:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Contoh kerja:
XML file yang bernama "Myfamily.xml":
| <?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Hege Refsnes</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>Tove Refsnes</full_name> <child_name>Hege</child_name> <child_name>Stale</child_name> <child_name>Jim</child_name> <child_name>Borge</child_name> </person> <person> <full_name>Stale Refsnes</full_name> </person> </persons> |
Berikut adalah skema file "family.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Elemen group didefinisikan dengan pernyataan kelompok, seperti ini:
| <xs:group name="groupname"> ... </xs:group> |
| <xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> |
| <xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> <xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> |
kelompok Atribut didefinisikan dengan deklarasi attributeGroup, seperti ini:
| <xs:attributeGroup name="groupname"> ... </xs:attributeGroup> |
Contoh berikut mendefinisikan suatu kelompok atribut bernama "personattrgroup":
| <xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup> |
<xs:attributeGroup name="personattrgroup">
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>
ELEMENT ANY
"children.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?>
<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="children">
<xs:complexType>
<xs:sequence>
<xs:element name="childname" type="xs:string"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<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="children">
<xs:complexType>
<xs:sequence>
<xs:element name="childname" type="xs:string"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
File XML di bawah ini (disebut "Myfamily.xml"), menggunakan komponen dari dua skema yang berbeda, "family.xsd" dan "children.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?>
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.w3schools.com children.xsd">
<person>
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
<children>
<childname>Cecilie</childname>
</children>
</person>
<person>
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
ELEMENT ANY UNTUK ATRIBUT
<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:anyAttribute/>
</xs:complexType>
</xs:element>
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
Lihat skema ini, yang disebut "attribute.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:attribute name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
File XML di bawah ini (disebut "Myfamily.xml"), menggunakan komponen dari dua skema yang berbeda, "family.xsd" dan "attribute.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?>
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.w3schools.com attribute.xsd">
<person gender="female">
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person gender="male">
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
Elemen Substitusi
Misal dari gaya bahasa dua negara :
Lihat ini fragmen dari sebuah skema XML:| <xs:element name="name" type="xs:string"/> <xs:element name="navn" substitutionGroup="name"/> <xs:complexType name="custinfo"> <xs:sequence> <xs:element ref="name"/> </xs:sequence> </xs:complexType> <xs:element name="customer" type="custinfo"/> <xs:element name="kunde" substitutionGroup="customer"/> |
| <customer> <name>John Smith</name> </customer> |
<kunde>
<navn>John Smith</navn>
</kunde>
Tidak ada komentar:
Posting Komentar