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