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 HTML Belli sayıda tag Verinin gösterimini esas alır İ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 (World Wide 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 id="3"> <İsim>Ayşe</İsim> <Çocuklar ids="1 2"></Çocuklar> </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> Tolstoy’un Eserleri Kitaplar 123 1 Can Ali Demir başlık yazar yayınevi isim Makale Kitap Tolstoy ref
XML Ağaçları adres isim email telefon doğumgünü isim soyisim yıl ay
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 <Kisiler> <Kisi> <isim>ali</isim> <telefon>123</telefon> </Kisi> <isim>ayse</isim> <telefon>456</telefon> <isim>fatma</isim> <telefon>789</telefon> </Kisiler> isim telefon ali 123 ayşe 456 fatma 789
<Kisi> <isim>ali</isim> <telefon>123</telefon> <telefon>444</telefon> <telefon>555</telefon> </Kisi> isim telefon ali 123 ayşe 456 fatma 789 ???
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 <!ELEMENT liste (kisi*)> <liste> <kisi> <isim>Ali</isim> <yas>25</yas> <email>ali@mail.com</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, tekrar edebilir 0, 1, veya çok sayıda + Gerekli, tekrar edebilir 1 veya çok
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" <?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: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: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:element name="isim" type="xs:string"/> <xs:element name="yas" type="xs:string"/> <xs:element name="email" type="xs:string"/> <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