300 likes | 536 Views
XML e X tensible M arkup L anguage. Bilgi Sistemleri – 2010 Dr. Galip Aydın. e X tensible M arkup L anguage. 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/
E N D
XMLeXtensibleMarkupLanguage Bilgi Sistemleri – 2010 Dr. Galip Aydın
eXtensibleMarkupLanguage • 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 GeneralizedMarkupLanguage (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ılabilirtag’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 (GeographyMarkupLanguage) 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 plaintext 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 XMldö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ı>
Kitaplar Kitap Makale ref 123 1 isim yazar yazar başlık yayınevi Ali Demir Tolstoy Tolstoy’un Eserleri Can 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'unEserleri</Başlık> </Makale> </Kitaplar>
XML Ağaçları adres isim email telefon doğumgünü isim soyisim yıl 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 <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>
<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>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)>
XML Schema • XML Schemaaynı 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 version="1.0" encoding="UTF-8"?> <xs:schemaxmlns: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 version="1.0" encoding="UTF-8"?> <xs:schemaxmlns: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>
XSLTExtensible 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