Laboratuar Notları #2



Benzer belgeler
Laboratuar Notları #3

Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.

Laboratuar Notları #5

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİNGÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ ETKİLEŞİMLİ WEB UYGULAMALARI-4

XML. Ahmet Demirelli Sabancı Üniversitesi 2007

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

XML'in Temelleri. XML veri tanimlamayi saglayan ve verilerin alisverisinde kullanilacak standart bir format olarak kullanilan bir dildir.

HTML (Hyper Text Markup Language)

Öğrenci nesnesi için bir etiket

XML (Extensible Mark-up Language) Hüseyin Kaya

Ç NDEK LER 1 XML E G R fi 1 XML Nedir? 1 XML in Avantajlar 3 HTML ve XML Aras ndaki Farklar 4 XML Dosyalar n Görüntülemek 6 XML Dosyas Oluflturmak 9

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (1. Kısım)

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Laboratuar Notları #7

4. Bağlantı (Köprü) Oluşturma

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (2. Kısım)

2. HTML Temel Etiketleri

Laboratuar Notları #4

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

JavaScript & DOM XML & JSON

Laboratuar Notları #8

HTML içerik oluşturmak için düşünülen bir işaret dilidir. Örnek

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

Html temelleri. Ders 4

e-fatura Uygulaması (Zarf Yapısı) Versiyon : 1.4 2/10

2-Hafta Temel İşlemler

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

Laboratuar Notları #5

JSF Melih Sakarya. Java Server Faces Facelet

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

MODÜL 3 HTML İLE STİL ŞABLONLARI

7. Çerçeveler. Bu bölümü bitirdiğinizde,

İNTERNET PROGRAMLAMA II. Tanımlar

UBL-TR Temel Fatura Senaryosu Mart 2011 Versiyon : 1.2 2/13

DSpace'in OpenAIRE ile Uyumlu Hale Getirilmesi

e-fatura UYGULAMASI (Entegrasyon Kılavuzu) Şubat 2010 ANKARA e-fatura Uygulaması (Entegrasyon Kılavuzu) Şubat 2010 Versiyon : 1.

MASTER PAGE SAYFASI KULLANIMI

Şekil 1. Sitiller ve biçimlendirme

Öğr. Gör. Serkan AKSU 1

HTML Bloklar. CSS Display özelliği

Web Teknolojileri ve Programla

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 2

PAKET TRANSFER SİSTEMİ

Üst Düzey Programlama

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1 1. FORMLAR

e-fatura UYGULAMASI (Zarf Şema Yapısı) Mart 2011 ANKARA e-fatura Uygulaması (Zarf Yapısı) Mart 2011 Versiyon : 1.2 1/10

BIL222 Veri Yapıları ve Algoritmalar

WebInstaller. 1. Kurulum Đçin Gereksinimler

Web Site Tasarımı (Html-Css) (SD0139) Murat KARA 2017

Mobil Cihazlardan Web Servis Sunumu

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

WEB TASARIMINDA TEMEL KAVRAMLAR

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

Atatürk Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü BM Web Programlama ÖDEV 1

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

WEB KULLANICI KONTROLLERİ ve ANASAYFA KULLANMA(Master Page)

BİL-142 Bilgisayar Programlama II

T.C. Başbakanlık Devlet Planlama Teşkilatı Bilgi Toplumu Dairesi Başkanlığı. e-yazışma Projesi. 28 Temmuz 2011

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

HTML TABLO OLUŞTURMA HALİL İBRAHİM AKGÜN

PAKET TRANSFER SİSTEMİ

duralbend.com Web Sayfasının Seo Analiz Raporu

T.C. Başbakanlık. Devlet Planlama Teşkilatı Bilgi Toplumu Dairesi Başkanlığı. e-yazışma Projesi. 7 Temmuz 2011

HALK SAĞLIĞI LABORATUARI WEB MODÜLÜ

Veritabanı. SQL (Structured Query Language)

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

e-fatura UYGULAMASI (Gümrük İşlemleri Kılavuzu) Aralık 2015 ANKARA e-fatura Uygulaması (Yolcu Beraber Eşya Kılavuzu) Ağustos 2015 Versiyon : 1.

1. Web Sitesine Giriş 1. Giriş Yapmak için tıklayın tıklanır.

DESTEK DOKÜMANI KAYIT NUMARALAMA ŞABLONLARI

4 Front Page Sayfası Özellikleri

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

BİLGİSAYAR 4 MOLEKÜLER BİYOLOJİ VE GENETİK BÖLÜMÜ YARD. DOÇ. DR. MEHTAP YALÇINKAYA

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

VET ON KULLANIM KLAVUZU

Laboratuar Notları #5

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ?

1.1 Web Kavramlar URL terimini tanımlayınız ve anlayınız.

KAYSO GLOBAL PROJECT OPENING MEETING PRESS REPORT (34 news) NEWSPAPER (17) MAGAZINE (2) TELEVISION (4) INTERNET (11)

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html>

BİLGİSAYAR DESTEKLİ TASARIM II

HSancak Nesne Tabanlı Programlama I Ders Notları

Sunum İçeriği. Programlamaya Giriş

Kopya Hakkı 2005 The European Computer Driving Licence Foundation Ltd

FATURA ŞABLONU TASARLAMA KILAVUZU

HAVAYOLU ELEKTRONİK BİLET RAPORU

Cite While You Write özelliği

Üst Düzey Programlama

Web Tasarımının Bugünü ve Geleceği

TÜİK e-vt Teknik Kılavuz

IPACK LADDER. Arayüz Dökümantasyonu

Transkript:

The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module 4: Semantic Web Modül 4: Anlamsal Ağ Laboratuar Notları #2 A project implemented by CyberSoft Bilişim Teknolojileri Ltd. This project is funded by European Union. The contents of this publication are the sole responsibility of Cybersoft Bilişim Teknolojileri Ltd. and can in no way be taken to reflect the views of the European Union.

İçerik Bölüm 1: XML Şema ve XSL 1. XML Şema... 1 2. XML Şemanın İçyapısı... 1 3. XSL (Extensible Stylesheet Language)... 4 3.1. XPATH (XML Adresleme Dili)... 4 3.2. XSLT (Extensible Stylesheet Language Transformation)... 7

1.XML Şema (XML Schema) Bir uygulamadaki XML belgesinin hangi etiketleri içerebileceği, etiketlerin sahip olabileceği özellikleri, hangi elemanların diğer hangi elemanları içerebileceği gibi dil yapısı bilgileri o uygulama için geliştirilmiş olan XML DTD (Document Type Definition Veri Tipi Tanımlama) veya "XML schema" olarak adlandırılan belge tanımlama dosyalarında belirtilir. Daha onceki derste XML DTD leri incelemiştik. XML şema da tıpkı DTD lerde olduğu gibi belge içindeki elementlerin ve içerik modellerinin tanımlanması işlemini ve dolayısıyla belgenin geçerlenmesini sağlar. Ancak XML şema elemanların bu tanım işleminde zengin bir veri tipi çesitliliği ve özellik desteği sağlamaktadır. DTD içerisinde, eleman içeriği string ve diğer birkaç veri tipi ile sınırlıdır. XML şema çok geniş bir veri tipi desteği sağlamaktadır (integer,floating point sayılar,date,time,gibi). XML şema ayrıca açık içerik modeli(open content model) ve isim uzayı(namespace integration) gibi ek özellikler de sunmaktadir. XML şema belgeleri oluşturulması sırasında XML sözdizimi kullanılmaktadır. Bu DTD lere göre çok belirgin bir üstünlüktür çünkü yeni bir sözdizim öğrenmemiz yerine XML in XML şemaya özel komutlarını öğrenmek yeterli olur. Aşağıda XML şemanın DTD ye göre olan yararları liste halinde verilmiştir: XML şemalar XML sözdizimini temel olarak alır.özel bir sözdizimi gerektirmez. Diğer XML belgeleri gibi parse edilip üzerinde işlem yapılabilir. Çok geniş bir veri tipi desteği sağlar. Open-ended bir veri modeli sunar.bu model sayesinde elemanlar arasındaki ilişkilerin kurulmasi ve vocabulary haznesinin genişletilmesi sağlanır. Namespace desteği sağlar.bu özellik şema içerisindeki bildirimler için ayrı node ları birleştirmeye yarar. Özellik gruplarını destekler. Böylece özellikler mantıksal olarak gruplanabilir. 2. XML Şema nin İçyapısı XML şema nın kendisi de bir XML uygulamasıdır, yani kendisi de bir XML vocabulary olarak değerlendirilebilir. XML şema kullanarak şemaların oluşturulması tıpkı diğer XML belgelerinin oluşturulmasına benzer. Bu sınırlamalara rağmen XML şema vocabulary yapısının anlaşılabilmesi için XML şema DTD yi incelemekte yarar vardır. Bunun için Schema Element ve Elementtype Element kavramları örneklerle anlatılacaktır. Schema Element Schema elementi XML Schema belgeleri için kök eleman olarak hizmet verir ve diğer schema içeriğine taşıyıcılık yapar. Schema elementi iki tane özelliğe sahiptir: Name xmlns name özelliği schema için bir isim belirtilmesine yarar. xmlns özelliğinin ise son derece önemli bir görevi vardir. Schema için bir namespace oluşturulmasına yarar. Bu özellik örneğin Microsoft un schema belirtimlerini kullanabilmesi için urn:schemas-microsoftcom: xml-data değerine set edilmesi gerekir.aşağıdaki örnekte XML schema belgesi için name ve xmlns attribute larının nasıl kullanılacağı basitçe gösterilmiştir. <Schema name="myschema" xmlns= urn:schemas-microsoft-com:xml-data"> <! - -Schema içergi buraya yazilir- -> </Schema> 1

namespace ler XML belgesinde görev alan eleman ve özelliklerin biricik isimlere sahip olmasını sağlar.bir belge veya eleman için namespace olanağı sağlayan xmlns özelliği bir işlem bilgisi olarak(processing instruction) düşünülebilir. xmlns özelliğine ek olarak namespace in veri tipinin de belirtilmesi gerekir ve bunun için xmlns:dt değeri urn:schemas-microsoft-com:datatypes olarak set edilir.örneği inceleyelim: <Schema name="myschema" xmlns= urn:schemas-microsoft-com:xml-data"> xmlns:dt= xmlns= urn:schemas-microsoft-com:xml-datatypes"> <! - -Schema içergi buraya yazilir- -> </Schema> Schema elementi, AttributeType,ElementType ve description elementlerini child element olarak içerebilir. ElementType Element Schema elementlerinin tip belirtimleri için ElementType elementi kullanılır. Bu element ise yapısında datatype,element,group,attributetype,attribute ve description child elementlerini bulundurabilir. ElementType elementi eleman tipinin belirtilebilmesi için bazı özellikler içerir. Bunlar: name:elementin ismini belirtir. model:içerik modelin açık yada kapalı oluşunu belirtir. content:element içerisindeki içeriğin tipi order:element içerisinde bulunan child element ve group ların sırasını belirtir. dt:type :Elementin tipini belirtir. Şimdi bunlari bir örnek üzerinde görelim: <ElementType name="duration" content="textonly" dt:type="time"/> <ElementType name="distance" content="textonly" dt:type="float"/> <ElementType name="session" model="closed" content="eltonly" order="seq"> <element type="duration"/> <element type="distance"/> </ElementType Dikkat edilecek olursa duration ve distance elementleri önce ElementType elemanının kullanılmasıyla bildirilmiş ve daha sonra session elemanının içerik modeli içerisinde element elemanı kullanılarak tanımlanmıştır. Aşağıda elektronik posta örneği için tanımlanmış bir DTD dosyası bulunmaktadır. Bu dosyada bu DTD ye göre oluşturulmuş bir adres listesinde hangi etiketlerin bulunabileceği, bu etiketlerin hangi etiketleri içerebileceği gibi bilgiler verilmektedir. Örnek 1. <!ELEMENT e_posta (kime, kimden, tarih, konu, mesaj)> <!ELEMENT kime (#PCDATA)> <!ELEMENT kimden (#PCDATA)> <!ELEMENT tarih (#PCDATA)> <!ELEMENT konu (#PCDATA)> <!ELEMENT mesaj (#PCDATA)> 2

XML şemaları XML belgelerinin yapısını DTD te olduğu gibi tanımlada kullanılan yeni bir yöntemdir. DTD nin bazı sınırlamaları nedeniyle yeni bir alternatif olarak XML-Data note yayınlanmıştır. Bu yeni belge yapısı tanımlama yöntemi XML şema (XML Schema) olarak adlandırılmakta ve daha yaygın olarak desteklenmektedir. XML şemaları bir XML sözlüğü olarak tanımlandığından normal bir XML belgesi olarak işlenebilir ve ayrıştırılabilir. Bunun yanında birçok veri tipini desteklemesi, açık bir model olarak genişleyebilmesi, katılım (inheritance) ilişkilerini desteklemesi gibi avantajları vardır. Bu yöntem, gelişme aşamasında olması nedeniyle henüz son şeklini alamamıştır. Aşağıda elektronik posta örneği için tanımlanmış bir XML şeması bulunmaktadır. <?xml version="1.0"?> <Schema name="elektronikposta" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="kime" content="textonly"/> <ElementType name="kimden" content="textonly"/> <ElementType name="tarih" content="textonly"/> <ElementType name="konu" content="textonly"/> <ElementType name="mesaj" content="textonly"/> </Schema> Örnek 2. Aşağıda DTD si verilen dökümanın XML Şemasını çıkarınız. ADRESBOOK 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)> ADRESBOOK XML ŞEMASI <?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"/> 3

<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> 3. XSL (Extensible Stylesheet Language) XSL (Extensible Stylesheet Language), W3C tarafından geliştirilmiş XML tabanlı stil sayfası dilidir. XSL, XML belgelerinin nasıl görüntüleneceğini tanımlar. XSL, üç kısımdan oluşur. XPATH (XML Path Language) : XML belgelerinde gezinmek (navigate), veri bulmak için kullanılan dildir. Diğer bir anlatımla XML ağacının içindeki düğümleri adreslemeyi ve ağacın belirli kısımlarını adresleyerek ağaç içinde dolaşmamızı sağlayan dildir. XSLT (Extensible Stylesheet Language Transformations) : XML belgelerini dönüştürmek (trasform) için kullanılan dildir. XSL-FO (XSL Formatting Objects ) : XML belgelerini biçimlendirmek (format) için kullanılan dildir. 3.1 XPATH (XML Adresleme Dili) Xpath ile XML belgesi içindeki eleman, özellik gibi düğümler arasında dolaşmak mümkündür. XPath adres (yol) tanımlamaya benzer bir gösterim kullanır. Temel Xpath sözdiminde kullanılabilecek ifadeler aşağıdaki tabloda verilmiştir. 4

İfade Anlamı / /kitaplar ifadesi <kitaplar> elemanını tanımlar. /kitaplar/kitap ifadesi <kitaplar> elemanın yavru elemanı olan her <kitap> elemanını seçer. @ Bir düğümün özelliğini seçer. /kitaplar/kitap/@id ifadesi <kitap> elemanın id isimli özelliğini seçer. // Nerede olduğuna bakmaksızın seçimle eşleşen yürürlükteki (current) düğümden itibaren belge içindeki düğümleri seçer. @ Bir düğümün özelliğini seçer. /kitaplar/kitap/@id ifadesi <kitap> elemanın id isimli özelliğini seçer. * Yol tanımlamasındaki tüm yavru elemanları seçer. /kitaplar/kitap/* ifadesi <kitap> elemanın tüm yavru elemanlarını seçer.. Yürürlükteki düğümü gösterir... Ana düğümü gösterir. Eğer yürürlükteki düğüm <ad> ise.. ifadesi <kitap> düğümünü gösterir. [ ] Bir seçim kriteri tanımlar. /kitaplar/kitap[yazar= Mevlana ] ifadesi kritere uyan <yazar> elemanını içeren <kitap> elemanlarını seçer. startswith position count Bir eleman metninin başlangıç karakterlerine bakarak elemanları seçer. /kitaplar/kitap[starts-with(yazar, 'R')] ifadesi R harfi ile başlayan metni içeren <yazar> elemanına sahip tüm <kitap> elemanlarını bulur. Konuma bakarak elemanları seçer. /kitaplar/kitap[position()=2] ifadesi ikinci <kitap> elemanını seçer. Belirtilen düğümün sayısını hesaplar. count(kitap) ifadesi <kitap> elemanlarının sayısını döndürür. Tablo 1.1: Temel XPath Sözdizimi Örnek 3. <?xml version="1.0" encoding="utf-16"?> <!DOCTYPE library PUBLIC "library.dtd"> <library location="bremen"> <author name="henry Wise"> <book title="artificial Intelligence"/> <book title="modern Web Services"/> <book title="theory of Computation"/> </author> <author name="william Smart"> <book title="artificial Intelligence"/> </author> <author name="cynthia Singleton"> 5

<book title="the Semantic Web"/> <book title="browser Technology Revised"/> </author> </library> 1. Bütün author elementlerini tanımlar. /library/author 2. Bir önceki örneğe alternatif olarak //author 3. library elementindeki bütün location lar /library/@location 4. title'ı Artificial Intelligence olan bütün kitaplar //book[@title="artificial Intelligence"] 5. Dökümandaki ilk author elementi //author[1] 6. İlk author elementinin son kitabı //author[1]/book[last()] 7. title özelliği olmayan bütün book elementleri //book[not (@title)] Şekil 1. Library dökümanın ağaç gösterimi 6

Örnek 4. <?xml version="1.0"> <items> <philosphy> <book id="13" title="the Main Principles Of Philosphy"/> <book id="12" title="the Traditional Turkish Philosphy"/> <book id="43" title="the Great Turkish Thinkers"/> <dictionary title="the Dictionary Of Philosphy"/> </philosphy> <psychology> <book id="14" title="an Introduction To Psycho-Analysis"/> <book id="47" title="the Life Of Freud"/> </psychology> <sociology> <book id="54" title="the Contribution of Ibn Haldun To Sociology"/> <book id="44" title="the Main Characteristics of Turkic Peoples"/> </sociology> <items> Yukarıdaki xml dosyasını kullanarak aşağıdaki verileri seçen ifadeleri yazınız. 1. Philosphy'de ki ikinci item /items/philosphy[2] 2. Bütün Sözlükler /items/*/dictionary 3. Id'si 12 olan kitabın title'ı /items/*/book[@id="12"]/@title 4. Sociology kitaplarının sayısı count(/items/sociology/book) 5. Son psychology kitabı /items/psychology[last()] 6. İçerisinde Turk geçen bütün maddeler /items/*/[contains(@title,"turk")] 3.2 XSLT (Extensible Stylesheet Language Transformations) XML belgesini diğer XML belgesine veya diğer formatlara (HTML, XHTML) dönüştürmek için kullanılır. Kaynak belgeyi değiştirmeden bir hedef belge oluşturur. XML belgesini HTML belgesine dönüştürme işleminde XML belgesi kaynak belge, HTML belgesi hedef belgedir. XML de veri ile verinin sunumunun birbirinden ayrılması bir avantaj oluşturmaktadır. Bu avantaj XML verilerinin XSLT ile birleştirilerek dinamik olarak dönüşümün gerçekleştirilip herhangi bir formatta verilerin sunulabilmesidir. Yani veriler her zaman XML belgesinde tutulup, isteğe göre farklı şekillerde kullanıcıya sunulabilmektedir. XSLT, bir XML belgesinin dönüşümü için ilk önce belgeyi ayrıştırarak (parse) bir ağaç yapısı oluşturur. Oluşan ağaç yapısının kök elemanından başlayarak ağacı tarar ve XSL 7

stil dosyasında tanımlanan kurallara göre belgeyi dönüştürür. XSLT, dönüşüm işlemini her XML elemanını (X)HTML elemanına dönüştürerek gerçekleştirir. XSLT, ağaç yapısını tararken Xpath ifadelerini kullanarak ağacın farklı kesimlerine erişir. Bir XML belgesini başka bir XML belgesine dönüşümüne örnek olarak cep telefonlarındaki uygulama verilebilir. Cep telefonlarındaki WAP uygulamalarında kullanılan WML (Wireless Markup Language) cep telefonlarındaki kısıtlamalar düşünülerek XML dilinde tanımlanmış bir işaretleme dilidir. XML belgeleri XSLT kullanılarak WML e dönüştürülür ve cep telefonlarında görüntülenir. XSLT ile çıktı dosyasına eleman ve özellik eklenebilir, çıkış dosyasından eleman ve özellik çıkartılabilir. Ayrıca elemanları sıralanabilir, tekrar düzenlenebilir, elamanlar gizlenebilir. XSLT, XML belgelerinde veri aramak, gezinmek için XPath i kullanır. Dönüşüm işleminde XSLT, şablonlarla eşleşmesi gereken kaynak belgenin kısımlarını Xpath vasıtasıyla bularak tanımlar. CSS yle kıyaslandığında XSLT nin kullanımı daha çok tavsiye edilir. Örnek 5. Aşağıdaki kitaplar.xml isimli dökümanı HTML ye dönüştürmek için bir XSL stylesheet hazırlamalıyız. <?xml version="1.0" encoding="utf-8"?> <kitaplar> <kitap> <nu>1</nu> <ad>nutuk</ad> <yazar>m.kemal Atatürk</yazar> <yayinevi>kanarya</yayinevi> </kitap> <kitap> <nu>2</nu> <ad>mesnevi'den Seçmeler</ad> <yazar>mevlana</yazar> <yayinevi>serçe</yayinevi> </kitap> <kitap> <nu>3</nu> <ad>çalıkuşu</ad> <yazar>reşat Nuri Güntekin</yazar> <yayinevi>doğan</yayinevi> </kitap> </kitaplar> Önce XML yi HTML ye dönüştürmek için kullanılan xsl dosyasını oluşturalım. kitaplar1.xsl <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> 8

<html> <body> <table border="1"> <tr bgcolor="#ffccff"> <th>sıra No</th> <th>kitap Adı</th> <th>yazar Adı</th> <th>yayınevi</th> </tr> <xsl:for-each select="kitaplar/kitap"> <tr> <td><xsl:value-of select="no" /></td> <td><xsl:value-of select="ad" /></td> <td><xsl:value-of select="yazar" /></td> <td><xsl:value-of select="yayinevi" /></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> XSL stil sayfası, şablon adı verilen bir veya daha fazla kurallar setinden oluşur ve eşleşen düğüme (node) uygulanacak kuralları içerir. <xsl:template> elemanı şablonları yapılandırmak için kullanılır. Match özelliği XML elemanı ile şablonu ilişkilendirmek için kullanılır. Match, tüm XML belgesi için bir şablon tanımlamak amacıyla da kullanılabilir. Match özelliğinin değeri bir XPath ifadesidir. Örnekteki match="/" ifadesi tüm belgeyitanımlar. Diğer bir ifadeyle XML belgesinin kök elemanı ile şablonu ilişkilendirir. <xsl:foreach> elemanı XML belgesi içindeki elemanlara bir döngü içerisinde erişmemizi sağlar. <xsl:value-of > belirtilen elemana erişim sağlayarak değerini almayı mümkün kılar. XSL stil sayfasının kendisi de bir XML belgesi olduğundan XML bildirimi ile başlamıştır : <?xml version="1.0" encoding=" utf-8"?> <xsl:stylesheet> elemanı bu belgenin XSLT stil sayfası belgesi olduğunu belirtir. XSLT eleman ve özelliklerine erişmek için XSLT ad alanı ve versiyon numarası bildirilir. Sayfadaki xmlns:xsl="http://www.w3.org/1999/xsl/transform" ifadesi W3C XSLT ad alanını belirtir. Belgenin sonundaki </xsl:stylesheet> satırıyla bu eleman kapatılmıştır. <xsl:template> içinde çıktıyı oluşturmak için HTML elemanları kullanılmıştır. <xsl:template match="/"> belgenin köküne uygulanacak şablonu tanımlamaktadır. Bu eleman </xsl:template> satırıyla kapatılmıştır. 9

<xsl:for-each select="kitaplar/kitap"> satırı ile kitap düğümü içinde bir döngü oluşturulmuştur. <xsl:value-of select= > satırlarıyla no, ad, yazar, yayinevi elemanlarına erişim sağlanarak değerleri alınmıştır. XML belgesinden stil sayfasına bağlanmak için kitaplar.xml belgesinin ikinci satırına <?xml-stylesheet type="text/xsl" href="kitaplar1.xsl"?> satırını ekleyelim. Ardından tarayıcıda görüntüleyelim. Şekil 2. Kitaplar1.xsl ile dönüştürülmüş kitaplar.xml nin tarayıcıdaki görüntüsü Görüldüğü gibi XML belgesinin sadece veri içermesine rağmen tarayıcıda html sayfasından farksız görüntülenmesinin nedeni, belgeye bağlanmış bir xsl belgesinin de yüklenip biçimlendirme için şablon olarak kullanılmasıdır. NOT: Örneklerde kitaplar.xml belgesine satırlar eklenmektedir. Bu eklenen satırlar sadece o örnek içindir. Diğer örneklerde kitaplar.xml belgesinin özgün (orijinal) hali kullanılacaktır. Örnek olarak kitaplar.xml belgesi için farklı XSL belgeleri (kitaplar2.xsl, kitaplar3.xsl) kullanıp aynı verinin farklı görünümlerini içeren sayfalar elde edelim. Örnek 6. kitaplar2.xsl <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <html> <body> <h2>kitaplar</h2> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="kitap"> <p> <xsl:apply-templates select="ad"/> <xsl:apply-templates select="yazar"/> </p> </xsl:template> <xsl:template match="ad"> Kitap adı : <span style="color:#ff0000"> 10

<xsl:value-of select="."/></span> <br /> </xsl:template> <xsl:template match="yazar"> Yazar adı : <span style="color:#0099ff"> <xsl:value-of select="."/></span> <br /> </xsl:template> </xsl:stylesheet> Şekil 3. Kitaplar2.xsl ile dönüştürülmüş kitaplar.xml nin tarayıcıdaki görüntüsü Örnek 7. Kitaplar3.xsl <?xml version="1.0" encoding="utf-8"?> <html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns="http://www.w3.org/1999/xhtml"> <body style="font-family:arial;fontsize:12pt;backgroundcolor:# CCFFCC"> <xsl:for-each select="kitaplar/kitap"> <div style="backgroundcolor:#66ccff;color:white;padding:4px"> <span style="font-weight:bold"><xsl:value-of select="nu"/></span> - <xsl:value-of select="ad"/> </div> <div style="margin-left:20px;marginbottom:1em;fontsize:10pt"> <xsl:value-of select="yazar"/> <span style="font-style:italic"> - <xsl:value-of select="yayinevi"/> Yayınevi </span> </div> </xsl:for-each> </body> </html> 11

Şekil 4. Kitaplar3.xsl ile dönüştürülmüş kitaplar.xml nin tarayıcıdaki görüntüsü 12