BTP208 – İnternet Programcılığı II XML ve XML Uygulamaları (2

advertisement
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 © 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>
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ı
>
<
&
'
"
>
<
&
'
"
• DTD’ de varlık referansı tanımı
<!ENTITY firma "XYZ Bilgisayar A.Ş.">
<reklam> &firma; " E-ticaret " 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 "&">
<!ENTITY apos "'">
]>
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
Download