BTP208 İnternet Programcılığı II XML ve XML Uygulamaları (1. Kısım) Hazırlayan Öğr. Gör. Özgür ÖZŞEN Konular İşaretleme Dilleri ve Tarihçesi HTML in Sınırlamaları XML Söz Dizimi Kuralları 1
İş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. İşaretleme yapılarını (karakter, sembol, etiket) bir çok ortamda görebiliriz. programlama 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. İşaretleme Dilleri Tarihçesi SGML (Standardized Generalized Markup Language) Bir metin veya belge kümesinde kullanılan dilin gramer ve sözlük yapısını tanımlamakta kullanılan bir metadildir. 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ştirme maliyeti Bu dilin yaygın bir şekilde kullanımını engellemiştir. 2
İşaretleme Dilleri Tarihçesi HTML (Hypertext Markup Language) Internet ortamında standart 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 basityapısı ile son derece başarılı oldu. Everythingshouldbe madeas simpleas possible, and no simpler. (Herşeybasit mümkün olduğu kadar basitleştirişmeli, fakat daha basit olmamalı.) -- Albert Einstein İşaretleme Dilleri Tarihçesi XML (extensible Markup Language Genişleyebilir İşaretleme Dili) Güçlü ve esnek bir yapıya sahip olan SGML inbasitbir 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/) recomendation 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. 3
p (paragraf başı) b (bold) br (line break-satır atlama) P (paragraf sonu) HTML in Sınırlamaları <P> <b> Sn. Özgür ÖZŞEN </b> <br> Anadolu Universitesi <br> Bilgisayar Müh. Bölümü </p> Başlık Ad Soyad Cadde Adı Bina No Đl Posta Kodu Semt HTML dili belgelerin tarayıcılarda biçimlendirilmesi amacıyla tanımlanmış bir standart etiket(tag) kümesi içeren bir dildir. 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 çoğ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. 4
XML de HTML gibi işaretleme etiketleri(tag) kullanır. Uygulamaya bağlı olarak bir çok yeni etiket tanımlayabiliriz. XML in ilk harfi Genişleyebilir (extensible) bunu ifade etmektedir. XML etiketleri bilgi içeriği hakkında bilgi verir. Bilgi hakkında bilgi meta veri veya bilgi(metadata veya metainformation) olarak adlandırılır. Başlangıç etiketi <Ad> Özgür </Ad> <Soyad> ÖZŞEN </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 version="1.0"?> <!DOCTYPE addressbook SYSTEM "AddressBook.dtd" [ <!ENTITY amp "&"> <!ENTITY apos "'"> ]> <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>frizzo@fruity.com</email> <web>http://www.fruity.com/rizzo</web> <company>frank'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>srosenberg@fruity.com</email> <web>http://www.fruity.com/rosenberg</web> <company>rosenberg's Shoes & Glasses</company> </contact> </addressbook> Addressbook XML Belgesi 5
Bir belge tipi tanımlaması, DTD (Document Type Definitions), bir XML belgesinin içinde hangi etiketlergeçebilir, hangi etiketlerhangi etiketleriiçerebilir, etiketlerinsayı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)> <!ELEMENT company (#PCDATA)> Addressbook.dtd Veri anlam ve yapısını içeren(self-describing) basit ve esnek veri formatı XML belgeleri kolayca 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ı 6
addressbook contact contact contact... name address phone Özgür ÖZŞEN... voice fax <addressbook> <contact> <name> Özgür ÖZŞEN</name> <address>... </address>... <phone> <voice> 222 3213550 </voice> <fax> 222 3239501 </fax< </phone>... </contact>... </adsressbook> 222 3213550 222 3239501 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. XML in en çok ilgi çeken tarafı e-ticaret, tedarik zinciri yönetimi ve iş akışı (workflow) yönetimi gibi elektronik iş web ve mobil uygulamalarında bir veri değişim formatı olarak kullanılmasıdır. ÜRETİCİ <SİPARİŞ> <FATURA> TOPTANCI <ÇEKME> <ÖDEME> <ÇEKME> <ÜRÜN BİLGİLERİ> BANKA MÜŞTERİ <ÜRÜN> <SİPAR İŞ> <ÖDEME> BANKA 7
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 Söz Dizimi (Syntax) XML belgeleri işaretleme ifadelerive veri içeriğinden oluşan bir veri dosyasıveya paketidir. İşaretleme ifadeleri elemanlar (elements), varlık referansları(entityrefererences), açıklamalar (comments), işleme komutları(processing instructions), CDATA bölümlerive veri tipi tanımlamalarından (document typedeclaretions) oluşur. <?xml version="1.0"?> <!DOCTYPE e_posta SYSTEM "e-posta.dtd"> <e_posta> <kime>herkese</kime> <kimden> Özgür ÖZŞEN</kimden> <tarih> 7 Eylül 2001</tarih> <konu>xml ve XML Uygulamaları</konu> <mesaj> XML HTML gibi etiket tabanlı bir dildir</mesaj> </e_posta> 8
Elemanlar Başlangıç etiketi, içerik ve bitiş etiketinden oluşan yapı eleman olarak adlandırılır. Elemanlar başka elemanları veya karakter verileri içerebilir. Eleman Eleman ismi <kitap> XML Unleashed </kitap> 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> <Kitap> 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 etiketi de kök etiket(root tag) olarak isimlendirilir. 9
kök Etiket Elemanlar Belge Elemanı <?xml version="1.0"?> <!DOCTYPE e_posta SYSTEM "e-posta.dtd"> <e_posta> <kime>herkese</kime> <kimden> Özgür ÖZŞEN</kimden> <tarih> 7 Eylül 2001</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> <B> <I> improper nesting <I> Ö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> 10
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çerisinde kullanılamaz. HTML denfarklı olarak eleman içindeki boşluklar (whitespace)korunur. Etiket ve özellik tanımlarındaki boşlukları parser kaldırır. <kitap_adı> Professional XML </kitap_adı> Karater veri Karakter ve Varlık Referansları Karakter referansları onluk ve onaltılık sayı sistemi ile karakterleri göstermek için kullanılır. Onluk : &#NNNN; Onaltılık :&#xnnnn; <copyright> Copyright 2000 SAMS Publishing</copyright> <copyright> Copyright 2000 SAMS Publishing</copyright> Varlık referansları (entity references) verilen bir isim ile DTD te tanımlamış referansları veya(&,<,>,",') XML özel karakterlerini göstermek için kullanılır. Varlık referansı : &isim; <yazar> Didier Martin & Mark Birbeck</yazar> & 11
Karakter ve Varlık Referansları (&,<,>,",') karakterleri için XML standart varlık referansları > > < < & ' & ' " " DTD devarlık referansı tanımı <!ENTITY firma "XYZ Bilgisayar A.Ş."> <reklam> &firma;" E-ticaret " hizmetleri sunar. </reklam> XYZ Bilgisayar A.Ş. "E-ticaret" hizmetleri sunar. 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?> 12
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) ; ]]> Sorular? 13