Transcript 4. XML

XML
eXtensible Markup Language
Bilgi Sistemleri – 2010
Dr. Galip Aydın
eXtensible Markup Language
 Yapısal veriler taşıyan dökümanları biçimlemek (markup)
için geliştirilmiş bir dil.
 W3C XML Specification
 http://www.w3.org/TR/REC-xml/
 Standard Generalized Markup Language (SGML) kullanılarak
geliştirilmiş
 İnternette veri değişimi ile ilgili eksikliği kapatmak
amaçlanmış
XML vs HTML
 XML
 İhtiyaca göre arttıtılabilir
tag’ler
 İçerik yönelimli
 Standart veri değişim biçimi
 Farklı çıktı biçimlerine izin
verir
• HTML
• Belli sayıda tag
• Verinin gösterimini esas
alır
• Veri doğrulama
yeteneği yok
• Tek tür, standart çıktı
XML Ne İçin Kullanılır
 İnternette verilerin bir yerden başka bir yere aktarılması için
 XML alt dilleri veya lehçeleri (subsets, dialects) özel alan uygulamaları için
geliştirilebilir
RSS, internette haberleri paylaşmak için
GML (Geography Markup Language) coğrafi verilerin değişimi için
MathML (Mathematical Markup Language) matematiksel verilerin tarifi için
CML (Chemical Markup Language) Kimyasal veriler, moleküler bilgilerin
anlatılması için
 GeneXML (Gene Expression Markup Language), DNA mikro dizileri ve Gen
verileri için
 MusicML, müzik verileri, notalar vs tarifi için




 W3C (WorldWide Web Consortium) tarafından kaydedilen birçok XML dili
farklı alanlarda veri değişimi için standart formatlar tanımlar
XML’in Avantajları
 Veriyi HTML’den ayırır
 Dinamik HTML oluşturma,
 Gösterimle ilgili kısımlardan bağımsız veri dokümanları
 Veri paylaşımını basitleştirir
 Bilgisayarlar ve veritabanları birbiriyle uyumsuz biçimlerde
verileri saklar
 XML plain text biçiminde veriyi sakladığı için veriler yazılım ve
donanımdan bağımsız olarak depolanabilir
XML’in Avantajları
 Veri değişimini basitleştirir
 Geliştiriciler için en fazla zaman alan işlerden biri birbiriyle
uyumsuz formatlardaki verilerin farklı sistemler arasında
değişimidir
 XML farklı uygulamalar tarafından okunabildiği için veri
değişimi kolaylaşır
 Platform değişikliklerini kolaylaştırır
 Uygulama veya işletim sisteminin veriden bağımsızlaştırılması
yenileme veya güncellemeyi kolaylaştırır
XML’in Avantajları
 Verinin daha fazla tüketiciye açık olmasını sağlar
 Farklı uygulamalar, programlar veriye sadece HTML
sayfalarında değil XML veri kaynaklarında da ulaşabilir
 XML ile veri birçok farklı okuma makinelerine açık hale gelir
(el bilgisayarları, haber beslemeleri, cep telefonları vs.)
XML Örnek
<?xml version="1.0" encoding="UTF-8"?>
<Kitap>
<İsim>Anna Karenina</İsim>
<Yazar>Lev Tolstoy</Yazar>
<Yayınevi>Can</Yayınevi>
<Yayınyılı>2008</Yayınyılı>
<ISBN>12345678910</ISBN>
<Fiyat>38.5</Fiyat>
</Kitap>
XML Kuralları
 Bir XML dökümanı bir veya birden fazla element içerir
 Her elementin bir ismi vardır. Başka elementler
barındırabilir ve nitelikler (attribute) taşıyabilir
 Etiketler (tag) başlama-etiketi ve bitiş-etiketi olmak üzere
çift olarak yazılır
 İç içe etiketler doğru yazılmalıdır:
 <Kitap><İsim></Kitap></İsim> hatalı yazım
 <Kitap><İsim></İsim></Kitap> doğru yazım
XML Kuralları
 Boş etiketler kısaltılabilir
 <Kitap></Kitap> şeklindeki bir boş etiket
 <Kitap/> şeklinde kısaltılabilir
 XML etiketleri büyük-küçük harflere duyarlıdır
 <KİTAP>, <Kitap>, <kitap> farklı etiketlerdir
 Nitelikler (Attribute) eşit işaretiyle ayrılmış isim-değer
çiftleridir:
 <Öğrenci
No="12345">Ali Demir</Öğrenci>
 Nitelikler elementlere ikincil, ek bilgileri eklemek için
kullanılırlar
 Bir XML dökümanı tek bir kök (root) element taşır
Well-Formed XML
 Bir XMl dökümanı bütün kurallara uyarak yazılmışsa doğru-
biçimlendirilmiş (well-formed) denir
 XML parser programları öncelikle bu kurallara uyulup
uyulmadığını kontrol ederler
 İnternet tarayıcıları XML parser programları içerirler
XML’de Referans vermek
<?xml version="1.0" encoding="UTF-8"?>
<Soyağacı>
<Kişi id="1">
<İsim>Ali</İsim>
</Kişi>
<Kişi id="2">
<İsim>Veli</İsim>
</Kişi>
<Kişi id="3">
<İsim>Ayşe</İsim>
<Çocuklar ids="1 2"></Çocuklar>
</Kişi>
</Soyağacı>
XML Veri Modeli: Ağaçlar
<Kitaplar>
<Kitap id="123">
<İsim>Anna Karenina</İsim>
<Yazar>Lev Tolstoy</Yazar>
<Yayınevi>Can</Yayınevi>
<Yayınyılı>2008</Yayınyılı>
<ISBN>123456789</ISBN>
<Fiyat>35</Fiyat>
</Kitap>
<Makale ref="123" id="1">
<Yazar>
<isim>Ali Demir</isim>
</Yazar>
<Başlık>Tolstoy'un Eserleri</Başlık>
</Makale>
</Kitaplar>
Kitaplar
Kitap
Makale
ref
123
isim
yazar
yayınevi
Tolstoy
Can
1
yazar
başlık
Ali Demir
Tolstoy’un Eserleri
XML Ağaçları
adres
isim
isim
email
soyisim
telefon
yıl
doğumgünü
ay
gün
XML Ağaçları
 XML Dokümanları tek bir kök elemana sahiptir.
 XML veri ağacı genel sıralı bir ağaçtır
 Bir elemanın herhangi sayıda çocuk elemanları olabilir
 Çocuk elemanların kendi çocukları olabilir
 Root elemandan başlayarak ağaç üzerinde yürünerek ağacın
yapısı çıkarılabilir
 Elamanların hiyerarşik düzeni verinin yapısı ve ilişkileri ile
ilgili bilgi verir
İlişkisel veritabanı - XML
isim
telefon
ali
123
ayşe
456
fatma
789
<Kisiler>
<Kisi>
<isim>ali</isim>
<telefon>123</telefon>
</Kisi>
<Kisi>
<isim>ayse</isim>
<telefon>456</telefon>
</Kisi>
<Kisi>
<isim>fatma</isim>
<telefon>789</telefon>
</Kisi>
</Kisiler>
isim
telefon
ali
123
ayşe
456
fatma
789
<Kisi>
<isim>ali</isim>
<telefon>123</telefon>
<telefon>444</telefon>
<telefon>555</telefon>
???
</Kisi>
Document Type Definitions (DTD)
 DTD XML dilinin bir parçasıdır ve yazıldığı XML
dokümanları için gramer olarak işlev görür.
 <!ELEMENT isim [veri_tipi]> şeklinde yazılır
DTD
<liste>
<kisi>
<isim>Ali</isim>
<yas>25</yas>
<email>[email protected]</email>
</kisi>
<kisi>………</kisi>
</liste>
<!ELEMENT liste (kisi*)>
<!ELEMENT kisi (isim, yas, email)>
<!ELEMENT isim (#PCDATA)>
<!ELEMENT yas (#PCDATA)>
<!ELEMENT email (#PCDATA)>
DTD
İşaret
Kaç defa geçiyor
(işaret yok)
Gerekli
Sadece bir
?
Seçmeli
Bir veya Sıfır
*
Seçmeli,
0, 1, veya çok
tekrar edebilir sayıda
Gerekli, tekrar 1 veya çok
edebilir
+
XML Schema
 XML Schema aynı zamanda XML dokümanıdır
 DTD’lerden sonra geliştirilmiş ve doküman hakkında daha
fazla bilgi sunar.
 Tanımlanmış birçok veri türü vardır: integer, decimal, string,
boolean, date, time
 Elemanlar simple ve complex türler olarak ikiye ayrılmıştır
 Ağaç yapısının nasıl olacağı ve bir elemanın kaç çocuğu
olacağına karar verilebilir
XML Schema Örnek
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="liste">
<xs:complexType>
<xs:sequence>
<xs:element name="kisi" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="isim"
type="xs:string"/>
<xs:element name="yas" type="xs:string"/>
<xs:element name="email"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML Schema Complex Types
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="liste">
<xs:complexType>
<xs:sequence>
<xs:element name="kisi" type="kisiType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="kisiType">
<xs:sequence>
<xs:element name="isim" type="xs:string"/>
<xs:element name="yas" type="xs:string"/>
<xs:element name="email" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="kisi" type="kisiType"/>
</xs:schema>
XSLT
Extensible Stylesheet Language Transformations
 XSLT bir xml dokümanını başka birisine (genelde HTML)
dönüştürmek için kullanılır
 XSLT dönüşümü programları bir xml dosyasını giriş olarak
alıp başka bir xml dosyasını çıktı olarak verir.
 Eğer çıktı HTML ise web tarayıcıları ile görüntülenebilir
 XML verisini kolaylıkla göstermek için güzel bir yol
XSLT Örnek
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="adress">
<html><head><title>Adresler</title></head>
<body>
<xsl:value-of select=“isim"/>
<br/><xsl:value-of select="email"/>
<br/><xsl:value-of select=“telefon"/>
<br/><xsl:value-of select=“dogumgunu"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT
 XSLT dönüşümü web tarayıcısı tarafından yapılabilir
 Fakat farklı tarayıcılar farklı HTML çıktısı verebileceği için,
dönüşüm sunucu tarafında da yapılabilir
 XSLT dönüşümü için kullanılan programlama diline uygun
kütüphaneler kullanılır
Java - XSLT