24.3.2015 BTP208 – İnternet Programcılığı II XML ve XML Uygulamaları (2. Kısım) Hazırlayan Öğr. Gör. Özgür ÖZŞEN BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları İçerik • XML DTD Belge Tipi Tanımlamaları 1 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Karakter 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’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 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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 &#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ış referansları veya (&,<,>,",') XML özel karakterlerini göstermek için kullanılır. Varlık referansı : &isim; & <yazar> Didier Martin &amp; Mark Birbeck</yazar> 2 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Karakter ve Varlık Referansları • (&,<,>,",') karakterleri için XML standart 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. BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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” ?> 3 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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) ; ]]> BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Belge Tipi Deklarasyonu • Belge tipi deklarasyonları (Document type declaretion) bir XML belgesinin giriş kısmında tanımlanır ve belgenin kullandığı harici ve dahili DTD SYSTEM ile bu tür XML için özel yapılmış (Document Type Definiton)’i belirtir. bir DTD dosyası olduğunda kullanılır. Eğer daha önce yapılmış bir DTD kullanılmak isteniyorsa SYSTEM yerine PUBLIC yazılmalıdır. <!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;"> ]> 4 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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> <person> <name> <family>Wallace</family> <given>Bob</given> </name> <email>[email protected]</email> </person> Dahili (Internal or inline) DTD <person> <name> <family>Tuttle</family> <given>Claire</given> </name> <email>[email protected]</email> </person> </addressBook> BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları İ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. 5 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Belge Tipi Tanımlamaları - DTD • Belge Tipi Tanımlamaları (Document Type 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 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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 özellikleri tanımlar. ENTITY Belli bir içeriğin bir isme bağlanarak o isimle ilişkilendirilmesini sağlar. NOTATION alabileceği XML harici içeriğin tanımlanmasını sağlar. Bu tanımlanan içerik XML belgesinin bir parçası olarak parse edilmez. 6 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları DTD document Belge Tipi Tanımlamaları - DTD <!ENTITY test SYSTEM “http://ceng.anadolu.edu.tr/test/test.txt”> <worker> <name>&test;</name> </worker> XML document Bu örnekte test adında bir external parameter kullanılmıştır. Kullanıldığı yere test.txt dosyasının içindeki yazılar koyulacaktır. DTD document <!ENTITY photo SYSTEM “http://ceng.anadolu.edu.tr/test/photo.gif” NDATA GIF89a> <!ATTLIST photo src ENTITY #REQUIRED> XML document <worker> <photo src=“&photo;”/> </worker> Burada NDATA(Notation Data), bu datanın parse edilebilir bir data olmadığını gösterir. Dikkat edilmesi gereken bir şey de photo elementinin src attribute’inin tipi Entity olarak verilmelidir. BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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. 7 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Boş Eleman (Empty Element)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 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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 + : Bir veya daha fazla ? : Opsiyonel <!ELEMENT özgeçmiş (giriş, (eğitim | deneyim+)+, hobiler?, referanslar*)> | : Veya * : Sıfır veya daha fazla 8 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Yalnız Eleman İçeren Elemanlar • Eleman tanımlarında kullanılan semboller ve anlamı Eleman Tanımı Anlamı 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. Parantez 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) () (#PDATA) BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Mixed ve Any Elemanı • Karışık (Mixed) Elemanlar: Karışık elemanlar hem karakter veri hem de 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> 9 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Ö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 Ö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. BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Ö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> <!ATTLIST elma renk “kırmızı”> Sabit <elma renk=“kırmızı”> ...... </elma> <elma renk=“yeşil”> ...... </elma> <elma> ...... </elma> Default Değer 10 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Ö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ızca 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”/> BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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 “http://www.xyz.com/readme.txt”> 11 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları 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 karakterleri göstermek için kullanılır. <!ENTITY copyright “&#169” > © BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Notation (Gösterim) • Notation tanımlamaları XML harici verinin ve bu harici ile ilişkilendirilecek 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şlenmesini 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”> 12 24.3.2015 BTP208 İnternet Programcılığı II – XML ve XML Uygulamaları Sorular? 13