Transcript Document

XML ve XML Uygulamaları
Doç. Dr. Selim Akyokuş
Bilgisayar Mühendisliği Bölümü
Doğuş Üniversitesi
XML ve XML Uygulamaları, Selim Akyokuş
XML ve XML Uygulamaları
•
•
•
•
•
•
•
•
•
•
•
İşaretleme Dilleri ve Tarihçesi
HTML’in Sınırlamaları
XML Nedir?
XML tabanlı Teknolojiler ve Uygulamalar
XML Söz Dizimi Kuralları
XML DTD Belge Tipi Tanımlamaları
XML şemaları (Schemas)
CSS ve XSL ile XML Sunumu
XML Belgelerinin İşlenmesi
XML ve Veritabanları
Sonuç
XML ve XML Uygulamaları, Selim Akyokuş
2
İşaretleme Dilleri (Markup Languages)
• Basılı yayıncılıkta bir metnin belirli kısımlarının nasıl şekilde
yayınlanması için kullanılan sembol ve ayıraçlar markup (işaret)
olarak adlandırılır.
• İşraretleme yapılarını (karakter, sembol, etiket) bir çok ortamda
görebiliriz.
– programala dilleri : {,},begin, end
– ASCII kodlama standardı : CR, LF özel karakterler
– Kelime işlem programları : Yazı tipi, font ve stilleri ayırmak için
metin içerisine gömülü işaretler
• Standard bir karakter, ayıraç, sembol ve etiket kümesi
kullanmadan taşınabilir, paylaşılabilir ve işlenebilir bir uygulama
geliştirilmesi çok güçtür.
• Metin ve belgelere özel bir anlam kazandırarak kolay bir şekilde
taşınabilmesi, paylaşılabilmesi ve işlenebilmesi için kullanılan
işaretler, kurallar ve gramer kümesini markup language
(işaretleme dili) olarak adlandırılır.
XML ve XML Uygulamaları, Selim Akyokuş
3
İşaretleme Dilleri Tarihçesi
• SGML (Standardized Generalized Markup Language)
– Bir metin veya belge kümesinde kullanılan dilin grammer ve
sözlük yapısını tanımlmakta kullanılan bir meta dildir.
– ISO Standardı, 1986
– ABD devlet, otomobil ve havacılık kuruluşlarında bir belgeleme
standardı olarak kullanılmakta.
– İçerik ve sunum ayrı
– Çok güçlü bir dil olmasına rağmen
• Son derece karmaşık yapı
• Yüksek uygulama geliştrime maliyeti
– Bu dilin yaygın bir şekilde kullanımını engellemiştir.
XML ve XML Uygulamaları, Selim Akyokuş
4
İşaretleme Dilleri Tarihçesi
• HTML (Hypertext Markup Language)
– Internet ortamında standard bir şekilde belge sunumu amaçlıyla
geliştirildi, 1989.
– HTML bir SGML uygulaması (sözlüğü-vocabulary) olarak
geliştirildi. (HMTL dilinin yapısı SGML ile tanımlandı)
– Yalnızca sunum amaçlı
– Çok basit yapısı ile son derece başarılı oldu.
Everything should be made as simple as possible,
and no simpler.
(Herşey basit mümkün olduğu kadar
basitleştirişmeli, fakat daha basit olmamalı.)
-- Albert Einstein
XML ve XML Uygulamaları, Selim Akyokuş
5
İşaretleme Dilleri Tarihçesi
• XML (eXtensible Markup Language – Genişleyebilir
İşaretleme Dili)
– Güçlü ve esnek bir yapıya sahip olan SGML’in basit bir alt kümesi
– Elektronik veri değişimi, elektronik ticaret, elektronik yayıncılık,
veri bütünleştirilmesi ve yönetimi, akılı arama makinaları gibi bir
çok alanda stratejik bir araç olarak kullanılacak metin biçimleme
teknolojisi
– W3C (World Wide Web, http://www.w3.org/XML/)
reccomendation olarak Şubat 1998 yayınlandı.
W3C standardlaştırma çalışmaları aşamalarında farklı seviyelerde
standard spesifikasyonları yayınlamaktadır.
Note : Bir fikir veya açıklamayı içeren en aşağı seviyedeki
spesifikasyon
Working Draft : Standardlaştırma çalışmalarının devam ettiğini
sürede yayınlanan spesifikasyonlar.
Recommendation : Working Draft aşaması sonucu elde edilen en
son seviye standard specifikasyonu.
XML ve XML Uygulamaları, Selim Akyokuş
6
HTML’in Sınırlamaları
p (paragraf başı)
b (bold)
br (line break-satır
atlama)
<P>
<b> Sn. Selim Akyokuş </b>
<br>
Barboros Cad. No: 11
<br>
Yıldız 80750, İSTANBUL
</p>
P (paragraf sonu)
Başlık
Ad
Soyad
Cadde Adı
Bina No
İl
Posta Kodu
Semt
HTML dili belgelerin tarayıcılarda biçimlendirilmesi amaçıyla tanımlanmış bir
standard etiket (tag) kümesi içereren bir dildir.
XML ve XML Uygulamaları, Selim Akyokuş
7
HTML’in Sınırlamaları
• HTML belgeleri metin içeriği hakkında bir anlam ve yapı bilgisi
içermez.
• Metin sunum bilgileri (presentation) ve içeriği (content) ayrık
değildir.
• HTML yalnızca sunum amaçlıdır. HTML etiketlerinin bir coğu
tarayıcının bir metni nasıl biçimlendirmesi ile ilgili bilgi içermektedir.
Bu veri değişimi, paylaşımı, veri kopyalama, uygulama
bütünleştirmesi gibi dağıtık uygulamaların gereksinimlerine cevap
vermemektedir.
• HTML genişleyebilir bir dil değildir. Bu dili uygulamalarımıza özel yeni
etiketler ekleyerek genişletemeyiz.
XML ve XML Uygulamaları, Selim Akyokuş
8
XML Nedir?
• XML’de HTML gibi işaretleme etiketleri (tag) kullanır.
• Uygulamaya bağlı olarak bir çok yeni etiket tanımlayabilriz. XML’in ilk
harfi “Genişleyebilir (eXtensible)” bunu ifade etmektedir.
• XML etiketleri bilgi içeriği hakında bilgi verir. Bilgi hakında bilgi meta
veri veya bilgi (metadata veya metainformation) olarak adlandırılır.
Başlangıç
etiketi
<Ad> Selim </Ad>
<Soyad> Akyokuş </Soyad>
Bitiş
etiketi
• XML bir meta dildir. Diğer bir deyişle yeni işaretleme dillerini
tasarlamak için kullanılan bir dildir.
• XML ile herhangi bir uygulama için XML belgesinin içinde bulunacak
verinin içeriği ve yapısını bir etiket kümesi ile tanımlayarak yeni bir
dil oluşturabiliriz.
XML ve XML Uygulamaları, Selim Akyokuş
9
XML Nedir?
<?xml version="1.0"?>
<!DOCTYPE addressbook SYSTEM "AddressBook.dtd" [
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
]>
<addressbook>
<!-- This is my good friend Frank. -->
<contact>
<name>Frank Rizzo</name>
<address>1212 W 304th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1212</voice>
<fax>212-555-1213</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rizzo</web>
<company>Frank&apos;s Ratchet Service</company>
</contact>
<!-- This is my old college roommate Sol. -->
<contact>
<name>Sol Rosenberg</name>
<address>1162 E 412th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1818</voice>
<fax>212-555-1819</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rosenberg</web>
<company>Rosenberg&apos;s Shoes &amp; Glasses</company>
</contact>
</addressbook>
XML ve XML Uygulamaları, Selim Akyokuş
Addressbook XML Belgesi
Kaynak : XML Unleashed
10
XML Nedir?
• Bir belge tipi tanımlaması, DTD (Document Type Definitions),
–
–
–
–
bir XML belgesinin içinde hangi etiketler geçebilir,
hangi etkiketler hangi etiketleri içerebilir,
etkiketlerin sayısı ve sırası,
etiketlerin alabileceği özelikler ve değerleri
tanımlar.
<!ELEMENT addressbook (contact)+>
<!ELEMENT contact (name,address+, city, state, zip,phone,email,web,
company)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT zip (#PCDATA)>
<!ELEMENT phone (voice, fax?)>
<!ELEMENT voice (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT web (#PCDATA)>
Addressbook.dtd
<!ELEMENT company (#PCDATA)>
XML ve XML Uygulamaları, Selim Akyokuş
11
XML Nedir?
• Veri anlam ve yapısını içeren (self-describing) basit ve
esnek veri formatı
• XML belgeleri kolayça anlaşılabilir.
• İçerik ve Sunum (CSS, XSL) ayrık. XML etiketleri verilerin
nasıl biçimlendirileceği konusunda bir bilgi içermez.
• Bir çok hazır yazılım bileşenleri ile programlama
• Hiyerarşik ağaç yapısı
XML ve XML Uygulamaları, Selim Akyokuş
12
XML Nedir?
addressbook
contact
name
Selim Akyokuş
contact
address
.......
contact
...
phone
voice
fax
216 2507070
<addressbook>
<contact>
<name> Selim Akyokuş</name>
<address> .... </address>
...
<phone>
<voice> 216 2597070 </voice>
<fax>
216 2597080 </fax<
</phone>
...
</contact>
...
</adsressbook>
XML ve XML Uygulamaları, Selim Akyokuş
216 2597080
•Etiketli ağaç yapısı (labeled tree)
•Yarı Yapısal Veri Modeli
(Semistructured Data Model)
•İlişkisel (relational)
•Nesne-kökenli (objectoriented)
veri yapılarını temsil edebilir.
13
XML Nedir?
• XML bir çok standardın birleşiminden oluşmaktadır.
•
•
•
•
•
•
•
•
•
•
•
XML Syntax (söz dizimi kuralları)
XML DTD
XML Schema
XML Namespaces
Xpath
Xpointer
XSL
XSLT
XSLF
SAX
DOM
XML ve XML Uygulamaları, Selim Akyokuş
14
XML Uygulamaları
Akılı Arama Makinaları
• Arama makinaları HTML belgelerinden arama sonuçu bir çok
istenmeyen belge getirebilir.
• Örnek: “Chip” isimli kişiyi ara
– Patates chip’leri
– Bilgisayar chip’ler
– Chip isimli kişiler
• Eğer kişiler hakkındaki isim ve adres bilgileri XML’de standard olarak
saklanırsa, daha kesin ve faydalı sonuçlar elde edilir.
<first-name> Chip </first-name>
XML ve XML Uygulamaları, Selim Akyokuş
15
XML Uygulamaları
Aygıt ve uygulamadan bağımsız veri erişimi ve biçimlendirilmesi
<product>
<id>12345678-Q</id>
<description>Thinkpad 2000D</description>
<price>$999.99</price>
</product>
Kaynak: IBM
XML ve XML Uygulamaları, Selim Akyokuş
16
XML Uygulamaları
Basın ve Yayıncılık
• XML basın ve yayıncılık için geliştirilmiş olan
SGML dilinin basitleştirilerek türetilmiş bir dil
olduğundan bu konuda aynı amaçla kullanılabilir.
• XML formatında saklanan belgeler bir çok farklı
ortama XML araçlarını kullanarak dönüştürülebilir
ve kullanılabilir.
• Klasik yayıncılığın yanı sıra XML yeni elektronik
yayıncılıktada kullanılabilir. Elektronik yayın
ortamındaki görüntü, video, ses ve diğer sayısal
veri nesneleri XML ile formatlanarak saklanabilir,
taranabilir ve sunulabilir.
XML ve XML Uygulamaları, Selim Akyokuş
17
XML Uygulamaları
Yazılım Geliştirme
• XML büyük çaplı yazılım gelişmede uygulama
mimarilerinin paylaşımını kolaylaştıracaktır.
• OMG (Object Management Group) bir XML tabanlı bir
uygulama olan XMI (XML Metadata Interchange)
spesifikasyonunu kullanacağını belirmiştir.
• XMI, UML (Unified Modelling Language) kullanarak
tasarlanmış olan uygulamaları tanımlamada kullanılan bir
dildir. XMI, geliştirme ekibinin çok farklı uygulama
geliştirme araçlarını kullanarak, tek bir UML modelinin
paylaşımına imkan vermektedir.
• Bu yazılım geliştirme sürecinde geliştirme ekibi arasındaki
iletişimi artırarak geliştirme sürecini kısaltmakta ve ekibi
daha üretken kılmaktadır.
XML ve XML Uygulamaları, Selim Akyokuş
18
XML Uygulamaları
Elektronik Veri Değişimi ve Elektronik Ticaret
•
XML’in en çok ilgi çeken tarafı e-ticaret, tedarik zinciri yönetimi ve iş akışı
(workflow) yönetimi gibi elektronik iş web uygulamalarında bir veri değişim
formatı olarak kullanılmasıdır.
<SİPARİŞ>
ÜRETİCİ
TOPTANCI
<FATURA>
ÜN
<S
>
İP
AR
İŞ
>
<Ü
R
BANKA
<ÜRÜN
BİLGİLERİ>
MÜŞTERİ
XML ve XML Uygulamaları, Selim Akyokuş
M
DE
Ö
<
<ÇEKM E>
<ÇEKME>
E>
M
DE
<Ö
BANKA
E>
19
XML Uygulamaları
XML/EDI
• Geleneksel EDI (Electronic Data Interchange):
– VAN (Value Added Networks) ağları üzerinde X12 ve EDIFACT
standardlarına dayanan büyük devlet ve ticari kuruluşların finansal,
üretim, satış gibi verilerin değişiminde kullanılan bir sistemdir.
– 1970 lerde geliştirilmiş ve çok fazla yaygınlaşamamıştır.
• Yüksek kurulum maliyeti
• Yüksek bakım maliyeti
• Karmaşık yapı
• XML/EDI :
– Internet ve XML tabanlı iş uygulamaları arası veri değişim sistemi
•
•
•
•
Düşük maliyet ve bakım
Kolay kurulum
Basit ve açık stadardlara dayalı
Güvenli
– XML/EDI standard çalışmaları devam etmektedir.
XML ve XML Uygulamaları, Selim Akyokuş
20
XML Uygulamaları
XML XML/EDI,E-ticaret ve E-iş Çalışmaları
• ebXML an open XML-based infrastructure enabling the global use of electronic
business information in an interoperable, secure and consistent manner by all parties
• eCo Framework XML specs. to support interoperability among e-businesses
• Commerce One Common Business Library (CBL): set of business components,
docs. In DTD, XDR, SOX
• BizTalk Microsoft spec. based on XML schemas
• cXML (Commerce XML) -- tag-sets for e-procurement into BizTalk
• Rosetta Net Common format for online ordering
• FpML (Financial products Markup Language): sharing of financial data (interest rate
& foreign exchange products)
• OBI high volume b2b purchasing transactions over the Internet
• code360 XML-Broker is middleware software that manages XML based transactions
• Bluestone XML Suite Enables to develop and deploy e-commerce, electronic data
interchange, application integration and supply chain management applications.
Bluestone XML Suite products include: XML-Server, Visual-XML, XML-Contact and
XwingML.
• webMethods Provides companies with integrated direct links to buyers and
suppliers
Kaynak:Bertram Ludaescher,ucsd
XML ve XML Uygulamaları, Selim Akyokuş
21
XML Uygulamaları
XML Sözlükleri
• Herhangi bir alandaki uygulamalarda kullanılacak XML ile tanımlanmış yeni
işaretleme dilleri XML uygulaması (application) veya XML sözlüğü (vocabulary)
olarak anılmaktadır.
• XML sözlükleri bu alanlardaki uygulamaların aynı dili konuşarak bilgi
değişimi ortamını sağlamaktadır.
• Bu amaçla geliştirilmiş bir çok XML sözlüğü vardır (http://www.oasisopen.org/cover/xml.html#applications).
•
•
•
•
•
•
•
•
•
•
Advertising: adXML place an ad onto an ad network or to a single vendor
Literature: Gutenberg convert the world’s great literature into XML
Travel: openTravel information for airlines, hotels, and car rental places
News: NewsML creation, transfer and delivery of news
Human Resources: XML-HR standardization of HR/electronic recruiting XML definitions
Voice: VoxML markup language for voice applications
Wireless: WAP (Wireless Application Protocol) wireless devices on the World Wide Web
Banking: MBA Mortgage Bankers Association of America --> credit report, loan file, underwriting…
Healthcare: HL7 DTDs for prescriptions, policies & procedures, clinical trials
Math: MathML (Mathematical Markup Language)
XML ve XML Uygulamaları, Selim Akyokuş
22
XML Söz Dizimi (Syntax)
• XML belgeleri işaretleme ifadeleri ve veri içeriğinden oluşan bir veri
dosyası veya paketidir.
• İşaretleme ifadeleri elemanlar (elements), varlık referansları (entity
refererences), açıklamalar (comments), işleme komutları (processing
instructions), CDATA bölümleri ve veri tipi tanımlamalarından
(document type declaretions) oluşur.
<?xml version="1.0" ?>
<!DOCTYPE e_posta SYSTEM "e-posta.dtd">
<e_posta>
<kime>Herkese</kime>
<kimden> Selim Akyokuş</kimden>
<tarih> 7 Eylül 2000</tarih>
<konu>XML ve XML Uygulamaları</konu>
<mesaj> XML HTML gibi etiket tabanlı bir dildir</mesaj>
</e_posta>
XML ve XML Uygulamaları, Selim Akyokuş
23
Elemanlar
• Başlangıç etiketi, içerik ve bitiş etkitet’den oluşan yapı eleman olarak
adlandırılır. Elemanlar başka elemanları veya karakter verileri
içerebilir.
Eleman
<kitap>
XML Unleashed
</kitap>
Eleman ismi
Başlangıç etiketi (start tag)
Karater veri
Bitiş etiketi (start tag)
• Eleman isimleri bir harf veya alt çizgi (_) ile başlayabilir. Eleman
isimleri case-sensitive’dir.
<kitap>
XML ve XML Uygulamaları, Selim Akyokuş

<Kitap>
24
Elemanlar
Boş Elemanlar (Empty elements)
• Boş elemanların herhangi bir içeriği yoktur.
• Boş elemanlar etiketin sonuna bir (/) işareti eklenerek kısa bir
biçimde gösterilebilir.
<br></br>
<br/>
• Boş elemanlar hariç her XML başlangıç etiketi bir bitiş etiketi ile
kapatılmalıdır.
Belge Elemanı
• Hiyerarşik bir ağaç yapısında olan XML belgesinin en üst
seviyesindeki eleman belge elemanı veya belge kökü (document
root) olarak adlandırılır. Bu elemanın etiketide kök etiket (root tag)
olarak isimlendirilir.
XML ve XML Uygulamaları, Selim Akyokuş
25
Elemanlar
kök Etiket
Belge Elemanı
<?xml version="1.0" ?>
<!DOCTYPE e_posta SYSTEM "e-posta.dtd">
<e_posta>
<kime>Herkese</kime>
<kimden> Selim Akyokuş</kimden>
<tarih> 7 Eylül 2000</tarih>
<konu>XML ve XML Uygulamaları</konu>
<mesaj> XML HTML gibi etiket tabanlı bir dildir</mesaj>
</e_posta>
Eleman Yuvalama (Nesting)
HTML allows <B>
<I> improper nesting <B>
<I>
XML requires <B>
<I> improper nesting <I>
<B>
XML ve XML Uygulamaları, Selim Akyokuş
26
Özellikler
• Özellikler (Attributes) elemanlara eklediğimiz ek
bilgilerdir.
• Başlangıç etiketi içinde özellik ismi ve değer ikilileri olarak
geçer.
Özellik
Özellik
<kitap kitap_no = "1234" kitap_sınıfı = "teknik" >
<yazar> Didier Martin </yazar>
<kitap_adı> Professional XML </kitap_adı>
<kitap>
XML ve XML Uygulamaları, Selim Akyokuş
27
Karater Veri
• Bir elemanın başlangıç ve bitiş etiketi içindeki metin
karakter veri olarak adlandırılır.
• Özel amaçlı olarak kullanılan (&,<,>,",') karakterleri
metin içeririsinde kullanılamaz.
• HTML’den farklı olarak eleman içindeki boşluklar (white
space) korunur. Etiket ve özellik tanımlarındaki boşlukları
parser kaldırır.
<kitap_adı> Professional
XML </kitap_adı>
Karater veri
XML ve XML Uygulamaları, Selim Akyokuş
28
Karakter ve Varlık Referansları
•
Karakter referansları onluk ve onaltılık sayı sistemi ile karaterleri göstermek
için kullanılır.
– Onluk : &#NNNN;
– Onaltılık : &#xNNNN;
©
<copyright> Copyright &#169; 2000 SAMS Publishing</copyright>
<copyright> Copyright &#xA9; 2000 SAMS Publishing</copyright>
•
Varlık referansları (entity references) verilen bir isim ile DTD’te tanımlamış
refereransları veya (&,<,>,",') XML özel karakterlerini göstermek için
kullanılır.
Varlık referansı :
&isim;
<yazar> Didier Martin &amp; Mark Birbeck</yazar>
&
XML ve XML Uygulamaları, Selim Akyokuş
29
Karakter ve Varlık Referansları
•
(&,<,>,",') karakterleri için XML standard varlık referansları
>
<
&
'
"
•
&gt;
&lt;
&amp;
&apos;
&quot;
DTD’ de varlık referansı tanımı
<!ENTITY firma "XYZ Bilgisayar A.Ş.">
<reklam> &firma; &quot; E-ticaret &quot; hizmetleri sunar. </reklam>
XYZ Bilgisayar A.Ş. "E-ticaret" hizmetleri sunar.
XML ve XML Uygulamaları, Selim Akyokuş
30
Açıklamalar ve İşlem Komutları
• Açıklama (Comments) yapısı HTML ile aynıdır.
<!--
Açıklama
-->
• İşlem komutları (Processing instructions) XML belgelerini
işleyen uygulamalara bir komut geçilmesi istenildiğinde
kullanılır.
<?hedef ... Komutlar ... ?>
<?xml version=“1.0” ?>
XML ve XML Uygulamaları, Selim Akyokuş
31
CDATA Bölümleri
• CDATA bölümleri (CDATA sections) XML’de kullanılan
işaretleme ifadelerinin göz ardı edilmesi gereken
metinleri yazmada kullanılır.
• XML parsır’ı bu bölümde metin içerisinde yer alan
işaretleme ayıraçlarını ve etiketlerini normal karakter
olarak algılar.
<![CDATA[ .......... ]]>
<![CDATA[
*P = &A;
K = "Ali";
C = (i <= 5) ;
]]>
XML ve XML Uygulamaları, Selim Akyokuş
32
Belge Tipi Deklarasyonu
• Belge tipi deklarasyonları (Document type declaretion) bir XML
belgesinin giriş kısmında tanımlanır ve belgenin kulladığı harici ve
dahili DTD (Document Type Definiton)’yi belirtir.

<!DOCTYPE kök_eleman_ismi SYSTEM
"sistem_tanımlayıcısı">

<!DOCTYPE kök_eleman_ismi PUBLIC
"public_tanımlayıcısı""sistem_tanımlayıcısı">
Harici DTD adresi
<?xml version="1.0"?>
<!DOCTYPE addressbook SYSTEM "http://xyz.com/AddressBook.dtd"
[
<!ENTITY amp "&#38;">
<!ENTITY apos "&#39;">
]>
XML ve XML Uygulamaları, Selim Akyokuş
33
Belge Tipi Deklarasyonu
<?xml version="1.0"?>
<!DOCTYPE addressBook [
<!ELEMENT addressBook (person)+>
<!ELEMENT person (name,email*)>
<!ATTLIST person gender (male|female) #IMPLIED>
<!ELEMENT name (family,given)>
<!ELEMENT family (#PCDATA)>
<!ELEMENT given (#PCDATA)>
<!ELEMENT email (#PCDATA)>
]>
<addressBook>
Dahili (Internal or inline)
<person>
<name>
<family>Wallace</family> <given>Bob</given>
</name>
<email>[email protected]</email>
</person>
DTD
<person>
<name>
<family>Tuttle</family> <given>Claire</given>
</name>
<email>[email protected]</email>
</person>
</addressBook>
XML ve XML Uygulamaları, Selim Akyokuş
34
İyi Oluşmuş ve Doğru Belgeler
• İyi Oluşmuş Belgeler (Well-Formed Documents)
XML söz dizimi (syntax) kurallarına uyan XML
belgeleri well-formed belgeler olarak adlandırılır.
• Doğru Belgeler (Valid Documents)
Belge için tanımlanmış olan DTD’teki gramer
kurallarına uyan belgeler valid belgeler olarak
adlandırılır.
XML ve XML Uygulamaları, Selim Akyokuş
35
Belge Tipi Tanımlamaları - DTD
• Belge Tipi Tanımlamaları (DataType Definitions (DTD)) herhangi bir
alanda kullanılacak yeni işaretleme dillerinin yapısını (gramer)
tanımlar.
• Programlama dillerinin gramer’inin tanımlamada kullanılan EBNF
(Extended Backus Naur Form) gösterimine benzer bir yapıya sahiptir.
EBNF
Kişi ::= (isim telefon-no*)
<!ELEMENT kişi (isim telefon-no*)>
DTD
XML ve XML Uygulamaları, Selim Akyokuş
36
Belge Tipi Tanımlamaları - DTD
• Bir XML belgesinin yapısı tanımlamada kullanılan temel
DTD deyimleri
DTD deyimi
Anlamı
ELEMENT
Bir XML elemanı tanımlar.
ATTLIST
Bir eleman tipinin alabileceği
özellikleri tanımlar.
ENTITY
Belli bir içeriğin bir isme bağlanarak o
isimle ilişkilendirilmesini sağlar.
NOTATION
XML hariçi içeriğin tanımlanmasını
sağlar. Bu tanımlaran içerik XML
belgesinin bir parçası olarak parse
edilmez.
XML ve XML Uygulamaları, Selim Akyokuş
37
Eleman Tanımlamaları
• Dört çeşit eleman tipi vardır.
– Empty (Boş) : Eleman herhangi bir içerik içermez.
Elemanın özellikleri olabilir.
– Element Only (Yalnızca Eleman) : Eleman yalnızca alt
seviye (child) elemanları içerebilir.
– Mixed (Karışık) : Eleman alt seviye elemanlar ve
karakter veri karışımını içerebilir.
– Any : Eleman DTD’in izin verdiği her içeriği içerebilir.
XML ve XML Uygulamaları, Selim Akyokuş
38
Boş (Empty) Eleman Tanımlamaları
• İçeriği boş olan elemanlar.
<!ELEMENT Elemanİsmi EMPTY>
<!ELEMENT img EMPTY)>
<img/>
<img></img>
<img src=”resim.gif”/>
<img src=”resim.gif”/><img>
DTD
XML
XML ve XML Uygulamaları, Selim Akyokuş
39
Yalnız Eleman İçeren Elemanlar
• Yalnızca alt seviye elemanları içerir.
<!ELEMENT Elemanİsmi İçerik-modeli>
<!ELEMENT e-posta (kime, kimden, tarih?, konu?, mesaj)>
Sıralama:
kime, kimden, tarih,
konu, mesaj
? : Opsiyonel
+ : Bir veya
daha fazla
<!ELEMENT özgeçmiş (giriş, (eğitim | deneyim+)+, hobiler?, referanslar*)>
| : Veya
XML ve XML Uygulamaları, Selim Akyokuş
* : Sıfır veya
daha fazla
40
Yalnız Eleman İçeren Elemanlar
• Eleman tanımlarında kullanılan semboller ve anlamı
Anlamı
Eleman
Tanımı
A?
Opsiyonel; A alt elemanı bir defa veya hiç gözükmeyebilir.
A+
A alt eleman mutlaka bir defa veya daha fazla gözükür.
A*
A alt eleman sıfır veya daha fazla gözükebilir.
A,B
B elemanı A’dan sonra gözükmelidir.
A|B
A veya B’den bir tanesi gözükebilir.
()
(#PDATA)
Paratez içinde geçecek elemanları guruplar. Örneğin (A,B)+ ifadesi A ve
B’nin ardışık olarak bir veya daha fazla geçeceğini göstermektedir.
Karakter Veri (parsed)
XML ve XML Uygulamaları, Selim Akyokuş
41
Karışık ve ANY Elemanı
• Karışık (Mixed) Elemanlar:
Karışık elemanlar hem karakter veri hemde alt elemanları
içerebilirler.
<!ELEMENT
<!ELEMENT
konu (#PCDATA)>
not (konu | tarih |
#PCDATA)*>
<not>
<konu> Yeni Dönem </konu>
<tarih> 1 Ekim 2000 </tarih>
Okul kayıtları başlayacak.
</not>
• ANY Elemanları:
ANY elemanı karakter veri, tanımlanmış elemanlar veya bunların
karşımını içerebilir.
<!ELEMENT
Elemanİsmi ANY>
XML ve XML Uygulamaları, Selim Akyokuş
42
Özellikler (Attributes)
• Bir eleman hakkındaki özellik bilgileri aşağıdaki formatta tanımlanır.
• Dört çeşit Default tipi vardır.
<!ATTLIST Elemanİsmi Özellikİsmi ÖzellikTipi Default>
Default
Anlamı
#REQUIRED
Özellik her zaman tanımlanmalıdır.
#IMPLIED
Özellik opsiyoneldir.
#FIXED Değer
Özellik sabit bir Değer’e sahiptir. Özellik eleman
içinde tanımlı olmazsa, parser bu sabit değer’in
olduğunu varsayar.
Değer
XML ve XML Uygulamaları, Selim Akyokuş
Özellik eleman içinde tanımlı olmazsa, parser bu
değer’in olduğunu varsayar. Eğer tanımlı ise
özellik farklı bir değer içerebilir.
43
Özellikler (Attributes)
Şart
<!ATTLIST Kitap BasımTarihi CDATA #REQUIRED>
<Kitap BasımTarihi=”1.1.2000”> XML’e Giriş </Kitap>
Karakter
veri
<!ATTLIST Kitap Basım-Sayısı CDATA #IMPLIED>
<Kitap Basım-Sayısı=”5”> XML’e Giriş </Kitap>
<Kitap> XML’e Giriş </Kitap>
Opsiyonel
<!ATTLIST deniz renk #FIXED “mavi”>
<deniz renk=“mavi”> .... </deniz>
Sabit
<!ATTLIST elma renk “kırmızı”>
<elma renk=“kırmızı”> ...... </elma>
<elma renk=“yeşil”> ...... </elma>
<elma> ...... </elma>
XML ve XML Uygulamaları, Selim Akyokuş
Default
Değer
44
Özellikler (Attributes)
Özellik Tipleri
Özellik Tipi
Anlamı
CDATA
Karakter veri (Unparsed)
Enumarated
Özelliğin sahip olabileçeği değerler kümesi
NOTATION
DTD’de tanımlanmış herhangi bir notation.
ENITITY
Harici bir varlık.
ENTITIES
Bir den fazla boşlukla (white space) ayrılmış varlıklar.
ID
Bir belge içerisinde geçebilecek tek tanımlayıcı bir değer (unique identifier).
IDREF
DTD’te tanımlanmış olan bir ID’ye olan referans.
IDREFS
Boşlukla (white space) ayrılmış ID’ler serisine referans.
NMTOKEN
XML token karaklerlerinden (harf, sayı, nokta, tire, iki nokta, alt cizgi) oluşan bir
isim.
NMTOKENS
XML token karakterlerinden oluşan boşlukla ayrılmış bir çok isim.
XML ve XML Uygulamaları, Selim Akyokuş
45
Özellikler (Attributes)
•
Enumarated özellikler bir dizisi içerir.
Default
<!ATTLIST kalem renk (mavi | kırmızı | yeşil | beyaz) “kırmızı”>
•
Notation XML harici veri tiplerini tanımlamakta kullanılır. Bu örnek resim
formatının gif veya jpeg olabileceğini belirtmektedir.
<!ATTLIST resim format NOTATION (gif | jpeg) #REQUIRED>
•
ID tipindeki özellik değerleri bir belge içerisinde yalnızça bir defa geçebilir.
Bu bize bir elemanı unique olarak tanımlamamızı sağlar.
<!ATTLIST personel personel-no ID #REQUIRED>
•
IDREF, ID tipindeki elemanlara referans vermemizi sağlar.
<!ELEMENT mühendis EMPTY>
<!ATTLIST mühendis per-no IDREF #REQUIRED>
<personel personel-no=”12345”>
<isim> Ali Veli </isim>
.....
</personel>
.....
<mühendis per-no=”12345”/>
XML ve XML Uygulamaları, Selim Akyokuş
46
Varlıklar (Entities)
• Varlıklar herhangi bir veri parçasına bir isim vererek bu veri
parçalarına referans vermemizi sağlar.
• Bunu C dilindeki DEFINE fonksiyonu gibi düşünebiliriz.
• Üç çeşit varlık tanımlaması vardır:
•
– Genel Varlıklar (General Entities)
– Parametre Varlıklar (Parameter Entities)
– Karakter Varlıklar (Character Entities)
Genel Varlıklar
Genel varlıklar bir metin parçasına bir isim vererek bu isimle metini
kullanmamızı sağlar.
<!ENTITY şirket “XYZ Bilgisayar Limited Şirketi A.Ş.”>
<reklam> Firmamız &şirket; internet danışmanlığı hizmeti sunar. </reklam>
<!ENTITY aciklama SYSTEM
XML ve XML Uygulamaları, Selim Akyokuş
“http://www.xyz.com/readme.txt”>
47
Varlıklar (Entities)
• Parametre Varlıklar (Parameter Entities)
Parametre varlık tanımlamaları DTD’nin içinde bir isimle veri
parçalarına referans vermemizi sağlar.
<!ENTITY % Varlıkİsmi VarlıkTanımı>
<!ENTITY % boyut
“uzunluk, genişlik, yükseklik?”>
<!ELEMENT tavan (%boyut;)>
<!ELEMENT çatı (%boyut;)>
<!ELEMENT duvar (%boyut;)>
uzunluk, genişlik, yükseklik?”>
• Karakter Varlıklar (Character Entities)
Verilecek bir isim vasıtasıyla istenilen karaterleri göstermek için
kullanılır.
<!ENTITY
copyright “&#169” >
©
XML ve XML Uygulamaları, Selim Akyokuş
48
Notation (Gösterim)
• Notation tanımlamaları XML harici verinin ve bu harici ile
ilişkindirilecek bir yardımcı uygulamanın (helper
application) tanımlanmasını sağlar.
• XML parser XML verisi üzerinde parse işlemini yapar. XML
harici verilerin işlenmesinini bu veri formatları ile
ilişkilendirilecek bir uygulama ile yapabilir.
• Aşağıdaki örnekte jpg ve gif formatında tanımlanmış
verileri ilgili uygulamalarla ilişkilendirmektedir.
<!NOTATION jpg SYSTEM “jpgviewer.exe”>
<!NOTATION gif SYSTEM “gifviewer.exe”>
XML ve XML Uygulamaları, Selim Akyokuş
49
XML Şemaları (XML Schemas)
• XML şemaları XML belgelerinin yapısını DTD gibi tanımlada
kullanılan yeni bir yöntemdir.
• XML şemaları bir XML sözlüğü olarak tanımlanmıştır.
• Normal bir XML belgesi olarak işlenebilir ve parse edilebilir.
• Avantajları :
– Bir çok veri tipini desteklemesi,
– açık bir model olarak genişleyebilmesi,
– katılım (inheritance) ilişkilerini desteklemesi
• Bu yöntem gelişme aşamasında olması nedeniyle henüz son şeklini
(recommendation) alamamıştır.
XML ve XML Uygulamaları, Selim Akyokuş
50
XML Şemaları
Addressbook
Şeması
Addressbook
DTD
<!ELEMENT addressbook (contact)+>
<!ELEMENT contact (name, address+,
city, state, zip,
phone, email,
web, company)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT zip (#PCDATA)>
<!ELEMENT phone (voice, fax?)>
<!ELEMENT voice (#PCDATA)>
<!ELEMENT fax (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT web (#PCDATA)>
<!ELEMENT company (#PCDATA)>
XML ve XML Uygulamaları, Selim Akyokuş
<?xml version="1.0"?>
<Schema name="AddressBookSchema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="name" content="textOnly"/>
<ElementType name="address" content="textOnly"/>
<ElementType name="city" content="textOnly"/>
<ElementType name="state" content="textOnly"/>
<ElementType name="zip" content="textOnly" dt:type="int"/>
<ElementType name="voice" content="textOnly" dt:type="int"/>
<ElementType name="fax" content="textOnly" dt:type="int"/>
<ElementType name="phone" content="eltOnly">
<element type="voice" minOccurs="1" maxOccurs="1"/>
<element type="fax" minOccurs="0" maxOccurs="1"/>
</ElementType>
<ElementType name="email" content="textOnly"/>
<ElementType name="web" content="textOnly"/>
<ElementType name="company" content="textOnly"/>
<ElementType name="contact" content="eltOnly">
<element type="name" minOccurs="1" maxOccurs="1"/>
<element type="address" minOccurs="1" maxOccurs="2"/>
<element type="city" minOccurs="1" maxOccurs="1"/>
<element type="state" minOccurs="1" maxOccurs="1"/>
<element type="zip" minOccurs="1" maxOccurs="1"/>
<element type="phone" minOccurs="1" maxOccurs="1"/>
<element type="email" minOccurs="0" maxOccurs="1"/>
<element type="web" minOccurs="0" maxOccurs="1"/>
<element type="company" minOccurs="0" maxOccurs="1"/>
</ElementType>
<ElementType name="addressbook" content="eltOnly">
<element type="contact" minOccurs="1"/>
</ElementType>
</Schema>
51
CSS ve XSL ile XML sunumu
• XML’de daha önce bahs ettiğimiz gibi belge
içeriği ve sunumu birbirinden ayrılmıştır.
• XML belgelerinin görsel olarak sunumu
– CSS (Cascading Style Sheets) veya
– XSL (eXtensible Style Language)
kullanılarak gerçekleştirilir.
XML ve XML Uygulamaları, Selim Akyokuş
52
CSS (Cascading Style Sheets)
• CSS HTML ve XML belgelerini görüntüleme amaçıyla kullanılan bir
biçimleme dilidir.
• CSS biçim sayfaları (sytle sheets) belge elemanlarına uygulanacak
olan bir kurallar kümesi içerir.
• CSS Kuralı
Seçiçi {
özellik1: değer1;
özellik2: değer2;
......
}
<p> CSS basit bir biçimleler için kullanılır </p>
p {
display : block;
color: blue;
font-family : Arial;
font-size: 14pt;
}
XML ve XML Uygulamaları, Selim Akyokuş
53
CSS (Cascading Style Sheets)
• isim elemanı: kalın, 16pt ve Times font
<isim> Selim Akyokuş </isim>
isim {
display : block;
font-family : Times, serif;
font-size: 16pt;
font-weight : bold;
}
• XML belgelerini CSS kurallarnı içeren CSS biçim dosyası ile
ilişkilendirmek için xml-stylesheet işlem komutu XML belgesi
başlangıçına konulur.
<?xml-stylesheet type=”text/css” href=”Adressbook.css”>
XML ve XML Uygulamaları, Selim Akyokuş
54
CSS (Cascading Style Sheets)
<?xml version="1.0"?>
<!DOCTYPE addressbook SYSTEM "AddressBook.dtd" [
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
]>
<addressbook>
<!-- This is my good friend Frank. -->
<contact>
<name>Frank Rizzo</name>
<address>1212 W 304th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1212</voice>
<fax>212-555-1213</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rizzo</web>
<company>Frank&apos;s Ratchet Service</company>
</contact>
<!-- This is my old college roommate Sol. -->
<contact>
<name>Sol Rosenberg</name>
<address>1162 E 412th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1818</voice>
<fax>212-555-1819</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rosenberg</web>
<company>Rosenberg&apos;s Shoes &amp; Glasses</company>
</contact>
</addressbook>
XML ve XML Uygulamaları, Selim Akyokuş
55
CSS (Cascading Style Sheets)
<?xml version="1.0"?>
<!DOCTYPE addressbook SYSTEM "AddressBook.dtd" [
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
]>
<addressbook>
<!-- This is my good friend Frank. -->
<contact>
<name>Frank Rizzo</name>
<address>1212 W 304th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1212</voice>
<fax>212-555-1213</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rizzo</web>
<company>Frank&apos;s Ratchet Service</company>
</contact>
<!-- This is my old college roommate Sol. -->
<contact>
<name>Sol Rosenberg</name>
<address>1162 E 412th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1818</voice>
<fax>212-555-1819</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rosenberg</web>
<company>Rosenberg&apos;s Shoes &amp; Glasses</company>
</contact>
</addressbook>
XML ve XML Uygulamaları, Selim Akyokuş
contact {
display: block;
width: 350px;
padding: 10px;
margin-bottom: 10px;
border: 4px double black;
background-color: silver;
color: blue;
text-align: center;
}
name {
display: block;
font-family: Times, serif;
font-size: 16pt;
font-weight: bold;
}
address {
display: block;
font-family: Times, serif;
font-size: 14pt;
}
city, state, zip {
display: inline;
font-family: Times, serif;
font-size: 14pt;
}
phone, email, web, company {
display: none;
}
56
XSL (eXtensible Style Language)
• XSL, XML belgelerinin biçimlendirilmesi tasarlanmış bir biçimleme
dilidir.
• CSS’den çok daha güçlü bir yapıya sahip olmasına rağmen XSL yeni
bir teknoloji olduğundan çok fazla yaygın değildir.
• XSL konusundaki standardlaştırma çalışmaları henüz
tamamlanmamıştır.
• XSL dili W3C’nin aşağıdaki spesifikayonlarını kullanır:
– XSLT – http://www.w3.org/TR/xslt
– Xpath – http://www.w3.org/TR/xpath
– XSLF – http://www.w3.org/TR/xsl
XML ve XML Uygulamaları, Selim Akyokuş
57
XSL (eXtensible Style Language)
• XSLT (XSL Transformations), XML belgelerinin bir dönüşümü için
kullanılır.
– XSLT bir yapıdaki XML belgesini, XSL biçim dosyasındaki tanımlamalara
göre başka bir yapıya dönüştür.
– XSLT, XML belgesini HTML diline, diğer bir XML belgesine veya XSLF
formatlama nesnelerine dönüştürebilir.
– XSLT en yaygın olarak XML belgelerinin HTML belgelerine dönüşümünde
kullanılır. Dönüşüm sonuçunda elde edilen HTML belgesi tarayıcılar ile
görsel olarak gösterilebilir.
• Xpath spesifikasyonu parser’ın oluşturduğu XML ağaçının içindeki
düğümleri adreslemek için kullanılır ve ağaçın belirli kısımlarını
adresleyerek ağaç içinde dolaşmamızı sağlar.
• XSLF (XSL Formating), XSL teknolojisinin biçimleme kısmını içerir.
– XSLT , XML belgelerini XSLF biçimlendirme nesnelerine dönüştürür.
– Biçimleme nesneleri belgelerin görsel olarak sunumu sağlar.
– Biçimleme nesnelerinin görüntülenmesi için tarayıcıların XSLF biçimleme
yapısını desteklemesi gerekir.
– XSLF spesifikasyonu henüz geliştirme aşamasında olduğundan bu yapıyı
destekleyen bir tarayıcı yoktur.
XML ve XML Uygulamaları, Selim Akyokuş
58
XML’den HTML’e dönüşüm
•
•
Dönüştürme işlemi XSL biçimleme sayfaları (style sheets) içinde tanımlamış
dönüşüm kuralları ile gerçekleştirilir.
Bu kurallar şablon (template) olarak adlandırılır.
<?xml-stylesheet href="AddressBook.xsl" type="text/xsl"?>
Addressbook.xml
Addressbook.xsl
Şablon
(Template)
Addressbook.html
<isim> Selim Akyokuş </isim>
<xsl:template match=”isim”>
<H2> <xsl:value-of/> </H2>
</xsl:template>
Kalıp
(Pattern)
<H2> Selim Akyokuş </H2>
XML ve XML Uygulamaları, Selim Akyokuş
59
Kök (root)
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html><head><title>Address Book XML
Example</title></head>
<body bgcolor="#FFFFFF">
<xsl:for-each select="addressbook/contact">
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="address"/>
<xsl:apply-templates select="city"/>
<xsl:apply-templates select="state"/>
<xsl:apply-templates select="zip"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template match="name">
<h2><xsl:value-of/></h2>
</xsl:template>
<xsl:template match="address">
<xsl:value-of/><br/>
</xsl:template>
<xsl:template match="city">
<xsl:value-of/>,
</xsl:template>
<xsl:template match="state">
<xsl:value-of/>
</xsl:template>
<xsl:template match="zip">
<xsl:value-of/><br/>
</xsl:template>
</xsl:stylesheet>
XML ve XML Uygulamaları, Selim Akyokuş
<addressbook>
<!-- This is my good friend Frank. -->
<contact>
<name>Frank Rizzo</name>
<address>1212 W 304th Street</address>
<city>New York</city>
<state>New York</state>
<zip>10011</zip>
<phone>
<voice>212-555-1212</voice>
<fax>212-555-1213</fax>
</phone>
<email>[email protected]</email>
<web>http://www.fruity.com/rizzo</web>
<company>Frank&apos;s Ratchet
Service</company>
</contact>
..........
</addressbook>
XML’den HTML’e dönüşüm
60
XML’den HTML’e dönüşüm
Client’da Dönüşüm : Addressbook.xml belgesini Addressbook.xsl
biçimleme sayfasını kullanarak HTML’e dönüşümünü sağlayan
Javascript kodu.
<html>
<body>
<script language="javascript">
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("Addressbook.xml")
// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("Addressbook.xsl")
// Transform
document.write(xml.transformNode(xsl))
</script>
</body>
</html>
XML ve XML Uygulamaları, Selim Akyokuş
61
XML’den HTML’e dönüşüm
Server’de dönüşüm : Addressbook.xml belgesini Addressbook.xsl
biçimleme sayfasını kullanarak HTML’e dönüşümünü sağlayan ASP
kodu.
<%
'Load the XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("Addressbook.xml"))
'Load the XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("Addressbook.xsl "))
Response.Write(xml.transformNode(xsl))
%>
• Sunucu tarafında XML belgeleri HTML’e dönüştürülerek tarayıcılara gönderilir.
• XSL’i desteklemeyen tarayıcılardada XML belgeleri görüntülenebilir.
XML ve XML Uygulamaları, Selim Akyokuş
62
XML BELGELERİNİN İŞLENMESİ
• XML belgelerinin uygulama yazılımları işlenmesi için bir çok yazılım
paketi geliştirilmiştir.
• Bu yazılımlar XML processor veya XML parser olarak
adlandırılmaktadır.
Uygulama
•Sun X package
•IBM XML4J package
•Oracle XML package
•Microsoft MSXML parser
•Open/XML parser
•Lark/Larval XML parser
HTTP
Processor
XML Parser
Databases
XML ve XML Uygulamaları, Selim Akyokuş
XML
Belgeleri
63
XML BELGELERİNİN İŞLENMESİ
• XML parser’ları veya işlemcileri üç değişik model üzerine inşa
edilmiştir.
– Bildiri-tabanlı İşlem modeli (Declaretive processing model):
• Bildiri-tabanlı işlem modelinde hangi işlemlerin gerçekleştirileçeğini
belirtiriz.
• İşlemin nasıl gerçekleştileceğini sistem belirler.
• Örnek : XSLT
– Olay-tabanlı İşlem Modeli (Event-Based Processing model):
• Olay-tabanlı işlem modelinde XML parser’ı XML belgesini okur iken bulmuş
olduğu nesneleri (elemanlar) uygulama programına olay (event) olarak
bildirir.
• Uygulama programı gelen olaylara göre gerekli işlemleri yapar.
• SAX (Simple API for XML)
– Ağaç-tabanlı İşlem Modeli (Tree-based processing model):
• Ağaç-tabanlı işlem modelinde XML parser ilk önce XML belgesini okuyarak
belge yapısına göre sistem belleğinde bir ağaç oluşturur.
• Uygulama progamı bu ağaç yapısı içinde dolaşarak gerekli işlemleri yapar.
• DOM (Document Object Model)
XML ve XML Uygulamaları, Selim Akyokuş
64
XML BELGELERİNİN İŞLENMESİ
•
Olay-tabanlı İşlem Modeli (Event-Based Processing model) :
•
XML Parser XML belgesini okurken karşılaştığı nesneleri (başlangıç etiketi, karaketer
veri veya bitiş etiketi) bir olay olarak uygulama programına iletir.
SAX (Simple API for XML)
<example>
<line>&quo;Hello, world!&quo;</line>
</example>
 start document
 start element: example
 start element: line
 text: “Hello, World!”
 end element: line
Olaylar
(Events)
 end element: example
 end document
XML ve XML Uygulamaları, Selim Akyokuş
65
DOM ve DOM API
•
•
DOM (Document Object Model) Ağaç-tabanlı işlem modeli kullanır.
DOM , XML ve HTML belgerinin işlemesi için W3C
konsorsiyumu tarafından geliştirilmiştir.
<?xml version=”1.0”>
<!—Parse ağaçı örneği -->
<yazarlar>
<yazar>
<ad> Ali </ad>
<soyad> Demir </ad>
</yazar>
</ornek>
Document
Version
nextSibling
XML ve XML Uygulamaları, Selim Akyokuş
Comment
Element
Element
childNodes
previousSibling
parentNode
FirstChild
Element
Element
Text
Text
LastChild
66
DOM ve DOM API
<?xml version="1.0" standalone="no"?>
<!DOCTYPE movies SYSTEM "Movies.dtd">
<movies>
<movie type="comedy" rating="PG-13" review="5" year="1987">
<title>Raising Arizona</title>
<writer>Ethan Coen</writer>
<writer>Joel Coen</writer>
<producer>Ethan Coen</producer>
<director>Joel Coen</director>
<actor>Nicolas Cage</actor>
<actor>Holly Hunter</actor>
<actor>John Goodman</actor>
<comments>A classic one-of-a-kind screwball love story.</comments>
</movie>
<movie type="comedy" rating="R" review="5" year="1988">
<title>Midnight Run</title>
<writer>George Gallo</writer>
<producer>Martin Brest</producer>
<director>Martin Brest</director>
<actor>Robert De Niro</actor>
<actor>Charles Grodin</actor>
<comments>The quintessential road comedy.</comments>
</movie>
.
.
</movies>
Movies.xml
XML ve XML Uygulamaları, Selim Akyokuş
67
DOM ve DOM API
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>List Movies 2 Example HTML Document</title>
<script language="JavaScript">
var xmldoc;
function LoadDoc() {
xmldoc = new ActiveXObject("microsoft.xmldom");
xmldoc.load("Movies.xml");
}
function ListMovies() {
LoadDoc();
root = xmldoc.documentElement;
for (i = 0; i < root.childNodes.length; i++) {
DOCCONTENT.innerHTML += "<b>" +
root.childNodes.item(i).firstChild.text + "</b><br>";
DOCCONTENT.innerHTML +=
root.childNodes.item(i).lastChild.text +
"<br><br>";
MSXMXL Parser
Movies.xml belgesini yükle
Kök Belge Elemanı (movies)
}
}
</script>
</head>
<body>
Click the button to list the movies in the Movies XML document.
<br>
<input type="button" value="List Movies" onclick="ListMovies()">
<div id="DOCCONTENT"></div>
</body>
</html>
XML ve XML Uygulamaları, Selim Akyokuş
Kökün altıntaki eleman (movie) sayısı
Movie altındaki ilk eleman (title)
Movie altındaki son elman
(comments)
68
XML and Veritabanları
• Yeni Veritabanları XML tabanlı bir çok araç içermektedir.
SELECT EMPNO, ENAME FROM EMP WHERE EMPNO = 7654;
Sonuç
XML
formatında
<?xml version="1.0"?>
<ROWSET>
<ROW id="1">
<EMPNO>7654</EMPNO>
<ENAME>MARTIN</ENAME>
</ROW>
</ROWSET>
XML ve XML Uygulamaları, Selim Akyokuş
69
XML and Veritabanları
Veritabanı bilgileri sunumu
emp.xsql
query
file
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="rowcol.xsl"?>
<query connection="demo"
find="%" sort="ENAME"
null-indicator="yes" >
SELECT * FROM EMP
WHERE ENAME LIKE '%{@find}%' ORDER BY {@sort}
</query>
Rowcol.xsl
Style sheet
file
http://localhost/xsql/demo/emp.xsql?find=T&sort=EMPNO
XML ve XML Uygulamaları, Selim Akyokuş
70
XML and Veritabanları
XML ve XML Uygulamaları, Selim Akyokuş
71
XML and Veritabanları
Veritabanı uygulamaları arası veri değişim formatı
XML ve XML Uygulamaları, Selim Akyokuş
72
XML Mesaj Protokolları
•
•
•
Şu ana kadar XML konusunudaki araştırma ve geliştirme çalışmalarının bir
çoğu değişik sektörler için geliştirilen ve uygulamaların aynı dili konuşarak
bilgi değişimini amaçlayan XML sözlükleri konusunda yoğunlaşmıştı.
Son zamanlarda bu araştırma ve geliştirme çalışmalarının ilgi alanı XML
belgelerinin güvenli bir şekilde iş uygulamaları arasında değişimini
sağlayacak XML mesaj protokolları konusuna yönelmiştir.
XML mesaj protokolleri
– XML-RPC : HTTP üzerinden XML taşınmasını sağlayan dilden ve platformdan
bağımsız basit RPC protokolü
– WDDX (Web Distributed Data Exchange) : HTTP üzerinden karmaşık veri
yapılarını taşımak amaçıyla geliştirilen bir protokol.
– ebXML Transport Protokolü : Birleşmiş milletler destekli ebXML gurubunca
geliştirme aşasında olan bir protokol.
– SOAP (Simple Object Access Protocol) : Microsoft, DevelopMentor, IBM, Lotus
Developement Corp firmalarınca desteklenen HTTP üzerinden iletişim sağlayan
nesne tabanlı bir protokol.
XML ve XML Uygulamaları, Selim Akyokuş
73
SOAP (Simple Object Access Protocol)
•
•
SOAP veri ve method çağrılarınının istemcileri ve sunucuları arasında
iletişimini sağlar.
İstek ve Cevaplar XML formatında HTTP protokolü ile taşınır.
XML ve XML Uygulamaları, Selim Akyokuş
74
SOAP (Simple Object Access Protocol)
SOAP Message Embedded in HTTP Request
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML ve XML Uygulamaları, Selim Akyokuş
75
SOAP (Simple Object Access Protocol)
SOAP Message Embedded in HTTP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML ve XML Uygulamaları, Selim Akyokuş
76
MicroSoft BizTalk FrameWork 2.0
•
BizTalk Framework 2.0 SOAP belgelerinin farklı sistemler arasında
taşınmasını sağlamak amaçıyla geliştirilen bir spesifikasyondur.
XML ve XML Uygulamaları, Selim Akyokuş
77
BizTalk Server
• BizTalk Framework Compliant (BFC) Server : BizTalk FrameWork
Specifikasyonununda belirtilen fonkfiyonlara sahip sunucu
XML ve XML Uygulamaları, Selim Akyokuş
78
SONUÇ
• Microsoft, IBM, Sun ve Oracle gibi birçok teknoloji lideri
firma XML ve XML uygulamala standardlarını
desteklemekte ve XML tabanlı yeni ürünlerini bilgi
teknolojisi uygulamalarının kullanımına sunmaktadır.
• Microsoft ODBC ve OLE’den sonra en büyük yatırımını
XML teknolojileri konusunda yapmıştır.
• Bir çok araştırmacı ve yazılım geliştiricisi XML’in yazılım
endüstirisinde radikal değişiklilere sebeb olacağına
inanmaktadır.
“XML is a breakthrough technology.”
Bill Gates – 1997
“Don’t dismiss XML-based standards as futuristic or irrelevant…”
The Gartner Group
XML ve XML Uygulamaları, Selim Akyokuş
79
SONUÇ
• XML elektronik veri değişiminin yeni ASCII
standardı olarak kabül edilmektedir.
“XML is the base protocol for this new era.”
Bill Gates – June 22, 2000
• Önümündeki aylar ve yıllar XML’in bir çok
alandaki uygulamaları hakkında yapılan daha çok
araştırma, geliştirme, yazılım ve yayın
çalışmalarına ve yeni XML ürünlerine sahne
olacak.
XML ve XML Uygulamaları, Selim Akyokuş
80
En geniş Kaynak:
XML Cover Pages
http://www.oasis-open.org/cover/
TEŞEKKÜRLER
Doç. Dr. Selim Akyokuş
Bilgisayar Mühendisliği Bölümü
Doğuş Üniversitesi
XML ve XML Uygulamaları, Selim Akyokuş
81