Bir Veri Saklama Biçimi Olarak XML



Benzer belgeler
Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.

Qt ile Bir Ağ Uygulaması

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (2. Kısım)

Düzenli İfadeler & Kullanım Alanları

Düzenli İfadeler & Kullanım Alanları

XML (Extensible Mark-up Language) Hüseyin Kaya

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

HTML (Hyper Text Markup Language)

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (1. Kısım)

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

Öğr. Gör. Serkan AKSU 1

Üst Düzey Programlama

İNTERNET PROGRAMLAMA II. Tanımlar

Ç NDEK LER 1 XML E G R fi 1 XML Nedir? 1 XML in Avantajlar 3 HTML ve XML Aras ndaki Farklar 4 XML Dosyalar n Görüntülemek 6 XML Dosyas Oluflturmak 9

Web Programlama Kursu

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

QT Eğitimi - 4 : İkili Saat (Binary Clock)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Sevdiğiniz editörü açın, Notepad, vi, pico vb. Daha sonra da aşağıdaki kodu yazın:

Html temelleri. Ders 4

Python Web 2.0 Python ve Web 2.0 Son. Python ve Web 2.0. Gökmen GÖKSEL, 3 Mayıs 2007

Web Site Tasarımı (Html-Css) (SD0139) Murat KARA 2017

Öğrenci nesnesi için bir etiket

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

XML'in Temelleri. XML veri tanimlamayi saglayan ve verilerin alisverisinde kullanilacak standart bir format olarak kullanilan bir dildir.

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

Elbistan MYO Güz Dönemi Öğr.Gör. Murat KEÇECİOĞLU

XML. Ahmet Demirelli Sabancı Üniversitesi 2007

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

2. HTML Temel Etiketleri

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

XML ve Web Servisleri

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

Veri Tabanı-I 1.Hafta

Veritabanı İşlemleri

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 2

Laboratuar Notları #3

JavaScript & DOM XML & JSON

Atatürk Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü BM Web Programlama ÖDEV 1

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Programlama Dilleri 1. Ders 4: Diziler

Kullanıcı Dökümanı. Flash B2B. Versiyon 0.1

e-fatura UYGULAMASI (Entegrasyon Kılavuzu) Şubat 2010 ANKARA e-fatura Uygulaması (Entegrasyon Kılavuzu) Şubat 2010 Versiyon : 1.


Arayüz Geliştirme Dokümantasyonu

ÖZGÜR YAZILIMLAR İLE J2EE

TC KİMLİK NO SMS GÖNDERİM SOAP API

HTML Etiketleri Genel Özellikler (Global Attributes)

Veritabanı Uygulamaları Tasarımı

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Lyx Nedir? Belge Hazırlama Bir Örnek Ekler L Y X. Esin Çavlan. 5 Mart 2012

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

TBF 110 BİLGİSAYARDA VERİ İŞLEME ve UYGULAMALARI Ha9a- 2 - İnternet

Veri Tabanı-I 1.Hafta

Php Programlama Dili MySQL Uygulamaları

4. Bağlantı (Köprü) Oluşturma

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

İnternet Programcılığı

Temel Bilgisayar Terimleri Yrd. Doç. Dr. Devkan Kaleci

R ile Programlamaya Giriş ve Uygulamalar

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Web Tasarımının Bugünü ve Geleceği

HTML içerik oluşturmak için düşünülen bir işaret dilidir. Örnek

JAVA API v2.0 Belge sürümü: 2.0.2

7. Çerçeveler. Bu bölümü bitirdiğinizde,

BOOTLOADER MANUAL DOCUMENT

1.PROGRAMLAMAYA GİRİŞ

BİL-142 Bilgisayar Programlama II

// hataları işaret eden referans

Web Tasarımının Temelleri

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

XML ile Mesaj İşlemleri

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

Bilgisayar Sistemlerine Genel Bakış

2-Hafta Temel İşlemler

Üst Düzey Programlama

ile Python gibi kod yazma

İNDEKSLEYİCİ İÇİN HTML BELGENİN XML BELGEYE DÖNÜŞTÜRÜLMESİ ÜZERİNE BİR UYGULAMA

PHP 1. Hafta 1. Sunum

Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama

Dr. Fatih AY Tel: fatihay@fatihay.net

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

MASTER PAGE SAYFASI KULLANIMI

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Merkezi İşlem. Birimi

WEB TASARIMINDA TEMEL KAVRAMLAR

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

SOAP API. Mobildev Toplu Mesajlaşma API

çindekiler 01. Kurulum

e-logo e-fatura Özel Entegratör Sistemi

HTTP & HTML BİRİNCİ BÖLÜM. HTTP Nedir? HTTP Safhaları Nelerdir? Protokol ve Eklentiler. HTTP Servisleri. HTTP Nedir? HTML Nedir?

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Transkript:

Bir Veri Saklama Biçimi Olarak XML Gürer Özen <madcat@e kolay.net> Bu belgeyi Free Software Foundation tarafından yayınlanmış bulunan GNU Özgür Belgelendirme Lisansının 1.2 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Lisans'ın bir kopyasını http://www.gnu.org/copyleft/gfdl.html adresinde bulabilirsiniz. Bu belgedeki bilgilerin kullanımından doğacak sorumluluklar ve olası zararlardan belge yazarı sorumlu tutulamaz. Bu belgedeki bilgileri uygulama sorumluluğu uygulayana aittir. Tüm telif hakları aksi özellikle belirtilmediği sürece sahibine aittir. Belge içinde geçen herhangi bi terim, bir ticari isim ya da kuruma itibar kazandırma olarak algılanmamalıdır. Bir ürün ya da markanın kullanılmış olması ona onay verildiği anlamında görülmemelidir.

Extensible Markup Language (XML), XML metinleri adı verilen veri yapılarını tanımlamaya ve yaratmaya yarayan, SGML'den türemiş bir anlamlandırma dilidir. Tasarlanma amacı Internet üzerinde kullanılabilen Çeşitli uygulamalara uygun SGML ile uyumlu Programlar tarafından kolayca işlenebilen İnsanlar tarafından okunup anlaşılabilen Dillerin ve metinlerin hızla hazırlanabildiği bir dil yaratmak. W3C (World Wide Web Consortium) XML Working Group tarafından 1996 da geliştirildi.

XML dökümanı, metinden (character data) ve anlamlandırma etiketlerinden (markup) oluşur: Merhaba < isim > Memet < / isim > nasılsın? Metin içerisinde özel karakterler varlık (entity) adı verilen elemanlar yardımıyla kullanılabilir: <açıklama> a < b matematikte a, b'den k üçüktür anlamına gelir </a çıklama> Önceden tanımlı varlıklar: & & < < > > " ' &apos; Karakterler sayısal kodları ile de çağırılabilirler: Ӓ Metin içerisindeki boşlukların (boşluk karakteri, tab, satır dönüşleri, vs) anlam taşıyıp taşımadığı dökümanı kullanacak olan uygulamaya bağlıdır. İmler içinde boşluklar özel bir anlam taşımaz, birbirleri yerine kullanılabilir. Metin uygulamaya verilirken satır sonları için aşağıdaki çevrim yapılır: \r\n > \n

Etiketler (tag) metnin istediğimiz kısımlarına isimler ve özellikler atamamızı sağlarlar: BASIC dilinde <komut> PRINT </komut> ile ekrana yazı yazdırabilirsiniz. <a href='senlik.linux.org.tr'> Linux Şenliği Web Sayfası </a> <resim dosya='foto.jpg' parlaklık='1.2'/> XML metni içinde okuyanlara yönelik açıklamalar konabilir: <! bu bir açıklamadır > İşlem komutları (PI Processing Instruction) adı verilen etiketler metnin parçası olmamakla birlikte uygulamalara aynen aktarılır. XML adıyla başlayan işlem komutları standarda aittir ve özel bir tanesi döküman başlangıcı olarak kullanılır: <?xml version='1.0' encoding='utf 8' standalone='yes'?> Döküman başlangıcında şu parametreler verilebilir: version encoding standalone dökümanın hangi XML standardına uyduğunu gösterir dökümanda kullanılan karakter setini belirtir dökümanın doğru işlenebilmesi için harici bir döküman tipi tanımı gerekli mi?

Karakter Setleri UNICODE, kar amacı gütmeyen Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı tanımlayan bir standarttır. Evrensel Karakter Seti (UCS) olarak bilinen ISO/IEC 10646 standardı her iki organizasyonun işbirliği ile aynı sayısal karşılıkları taşımaktadır. Unicode kodlarından oluşan karakter dizilerini bilgisayarda verimli bir şekilde saklayabilmek amacıyla bazı karakter kodlamaları (encoding) geliştirilmiştir: UTF 8 kodlaması UCS karakterlerini 1 ile 6 byte uzunluğunda diziler halinde kodlar. ASCII kodlaması içinde kalan 0 ile 127 arasındaki karakterler aynen kendi kodları ile kullanılır. Diğerleri byte dizileri haline gelir: UCS karakterleri UTF 8 byte dizileri 0000 0000 0000 007F 0xxxxxxx 0000 0080 0000 07FF 110xxxxx 10xxxxxx 0000 0800 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx 0001 0000 001F FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx UTF 8 geriye uyumluluk ve batı dilleri için en verimli şekilde bellek kullanımı sağlar. UTF 16 ise her karakter için iki byte kullanır. Karakterlerinin büyük kısmı ASCII sınırları dışında kalan dillerde UTF 8 e göre büyük bellek tasarrufu ve hız sağlar.

Metin tipi tanımlaması (DTD) bir sınıf metin için gramer kurallarını içerir. XML metinleri hangi kurallara uyduklarını <!DOCTYPE... > etiketi ile belirtirler. Kurallar metnin içinde ve/veya harici bir kaynakta bulunabilir <!DOCTYPE sunum SYSTEM sunum.dtd > <!DOCTYPE sunum PUBLIC //OASIS//DTD XML Catalogs V1.0//EN http://www.oasisopen.org/committees/entity/release/1.0/catalog.dtd > <!DOCTYPE sunum [ <!ELEMENT sunum (lisans, slayt+, taslak?)> <!ELEMENT lisans (#PCDATA)> <!ELEMENT slayt (ba şlık, logo?, paragraf*)> <!ELEMENT paragraf (#PCDATA k i url resim)*> <!ELEMENT taslak EMPTY> <!ATTLIST paragraf yana şık (sol sağ orta) sol > <!ATTLIST resim url CDATA #REQUIRED alt CDATA #IMPLIED> <!ATTLIST lisans gfdl CDATA #FIXED evet > <!ATTLIST slayt numara ID #REQUIRED ]>

Diğer DTD etiketleri: <!ENTITY % draft 'INCLUDE'> <!ENTITY % final 'IGNORE'> <!ENTITY % font SYSTEM font.entity > <ELEMENT paragraph (#PCDATA %font; )*> <![%draft;[ <!ELEMENT book (comment*, title, body) > ]]> <![%final;[ <!ELEMENT book (title, body) > ]]> Etiketler içeren metin parçaları CDATA bölümleriyle kolayca metne eklenebilir: Metinde kullanılmak üzere varlıklar tanımlanabilir: <![CDATA[ <koşul> a < b & c = 5 </koşul> ]]> <!ENTITY sürüm 1.0 > Bu metin XML standardının &s ürüm; sürümüne dayanılarak yazılmıştır.

İsim alanları (Namespace) farklı uygulamalara ait XML anlamlandırmalarının tek bir XML metni içinde kullanılabilmesini sağlar.etiketlere ve etiket özelliklerinin başına : karakteri ile ayrılarak eklenir: <bk:book> Etiketlere eklenen xmlns özelliği ile o etiketin ve içindeki etiketlerin kullanabileceği isim alanları belirlenir: <?xml version="1.0"?> <bk:book xmlns:bk='urn:loc.gov:books' xmlns:isbn='urn:isbn:0 395 36341 6'> <bk:title>cheaper by the Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book> Eğer bir alan ismi verilmezse xmlns ön tanımlı alanı belirler: <?xml version="1.0"?> <book xmlns='urn:loc.gov:books' xmlns:isbn='urn:isbn:0 395 36341 6'> <title>cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> </book> III. Linux ve Özgür Yazılım Şenliği

<?xml version="1.0" encoding="utf 8"?> <!DOCTYPE abiword PUBLIC " //ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd"> <abiword xmlns:fo="http://www.w3.org/1999/xsl/format" xmlns:svg="http://www.w3.org/2000/svg" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns="http://www.abisource.com/awml.dtd" > <! This file is an AbiWord document. > <styles> <s type="p" name="normal" followedby="current Settings" props="text indent:0in; margin top:0pt; margin left:0pt; font stretch:normal; line height:1.0; text align:left; bgcolor:transparent; lang:en US; margin bottom:0pt; text decoration:none; fontweight:normal; font variant:normal; color:000000; text position:normal; font size:12pt; margin right:0pt; font style:normal; font family:times New Roman"/> </styles> <pagesize pagetype="letter" orientation="portrait" width="8.500000" height="11.000000" units="in" page scale="1.000000"/> <section props="page margin footer:0.5in; page margin header:0.5in"> <p style="normal">merhaba <c props="font style:italic">linux</c>!!!</p> </section> </abiword> III. Linux ve Özgür Yazılım Şenliği

XML SchemaXML metinlerinin uyması gereken biçim kurallarını tanımlayan bir XML dilidir. <xsd:schema xmlns:xsd= http://www.w3.org/2001/xmlschema > <xsd:element name= istek type= istektipi /> <xsd:complextype name= istektipi ><xsd:sequence> <xsd:element name= alıcı type= xsd:string /> <xsd:element name= ürün > <xsd:simpletype><xsd:restriction base= xsd:positiveinteger > <xsd:maxexclusive value= 100 /> </xsd:restriction></xsd:simpletype> </xsd:element> </xsd:sequence></xsd:complextype> </xsd:schema> XPath XML metinleri içinde belirli kısımları adresleyebilmeyi sağlar. /kitap/sayfa/* //kitap/descendant::sayfa //*[starts with(name(),'s')] //*[count(resim)=2]

XPointer XPath'ın uzak kaynaklara bağlantıları göstermek için geliştirilmiş bir türevidir. http: // www.foo.org/bar.xml#xpointer(article/section[position()<=5]) XLink XML metinleri arasında bağlantıları işaretlemek için kullanılır. <link xlink:type= simple xlink:href=... xlink:show= embed /> <link xlink:type= extended > <a xlink:type= locator xlink:href= cars.xml#bmw xlink:label= car /> <b xlink:type= locator xlink:href= tires.xml#pirelli xlink:label= tire /> <arc xlink:type= arc xlink:from= car xlink:to= tire /> </link> XQuery XML metinleri üzerinde sorgulamalar yapmaya yarayan bir sorgu dilidir. <neyemeli> { distinct values( for $r in document( tarifler.xml )//tarif for $i in $r//malzeme/@isim for $j in document( buzdolap.xml )//yiyecek[text()=$i] return $r/isim ) } </neyemeli>

XSLT Bir XML metnini başka bir XML metnine dönüştürecek transformasyonları yazmaya yarayan bir XML dilidir. <?xml version='1.0'?> <xsl:stylesheet version='1.0' xmlns:xsl= http://www.w3.org/1999/xmsl/transform > <xsl:template match= / > <html><body><h1>cd Listem</h1> <xsl:apply templates/> </body></html> </xsl:template> <xsl:template match= cd ><p> Albüm: <b> <xsl:value of select= title /> </b> Sanatçı: <i> <xsl:value of select= artist /> </i> </p></xsl:template> </xsl:stylesheet> XSL FO XML etiketlerinin görsel olarak nasıl gösterileceğini belirlemeye yarayan bir XML dilidir.

Karmaşık ya da ilerde karmaşıklaşabilecek veriler, yerelleştirme desteği gerektiren veriler etiketler ile gösterilmelidir. Ayrıca DTD ya da Schema ile kontrol edilmesi istenen veriler için etiket tercih edilmelidir. <mektup önem='acil' gönderen='ali Can' ba şlık='meeting Call'>... </mektup> <mektup> <acil/> <başlık>meeting Call</ba şlık> <başlık xml:lang='tr'>toplantı Çağrısı</başlık> <gönderen> <isim>ali Can</isim> <g örev>müdür yardımcısı</görev> </gönderen>... </mektup> Özellikler bu durumların dışında XML metnini yalın ve okunaklı kıldıkları durumlarda kullanılmalıdır. <a><href>senlik.linux.org.tr</href><b>linux Şenlik Sayfası</b></a> <a href='senlik.linux.org.tr'>linux Şenlik Sayfası</a>

Etiket, özellik ve özellik değeri isimlerini seçerken kısaltmalardan kaçınmalı, anlamlı isimler tercih edilmelidir. <a3f01 1='a'/> <m g='ali Can'><b>Merhaba</b>... </m> Varolan standartlar olabildiğinde kullanılmalı, herşeyi yeniden icat etmekten kaçınmalıdır. XML FO SVG DOCBOOK MATHML Özgür olmayan yazılımlarda çok rastlanan kötü kullanım örnekleri: <?xml version='1.0'?> <mydoc>2af34evr4htr4ugdf9uj4tj... </mydoc> <?xml version="1.0" encoding="utf 8"?> <!DOCTYPE plist PUBLIC " //Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/dtds/propertylist 1.0.dtd"> <plist version="1.0"><dict> <key>animatesnaptogrid</key> <string>true</string> <key>emptytrashprogresswindowlocation</key> <string>79, 44</string> </dict></plist>

Verinin bir ağaç yapısında olduğu durumlarda XML veri ile gösterim arasında birebir uyum sağlar. <glade interface> Glade <widget class="gtkwindow" id="window1"> <property name="title" translatable="yes">window1</property> <child> <widget class="gtkvbox" id="vbox1"> <child> <widget class="gtkmenubar" id="menubar1">... </child> <child> <widget class="gtkscrolledwindow" id="scrolledwindow1"> <child> <widget class="gtktextview" id="textview1"> <property name="text">deneme</property> </child> </widget> </child> <child> <widget class="gtkstatusbar" id="statusbar1">...

DOCBOOK http://www.oasis open.org/docbook/ III. Linux ve Özgür Yazılım Şenliği <?xml version='1.0'?> <!DOCTYPE article PUBLIC " //OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis open.org/docbook/xml/4.2/docbookx.dtd"> <article lang='tr'><title>deneme</title><sect1><title>deneme</title> <para>burada <emphasis>yalnızca</emphasis> ihtiya ç duyulacak bilgiler aktarılmıştır. Fazlası için <ulink url="http://w3.org">w3.org</ulink> sayfasına bakınız. </para> <procedure><title>sunum hazırlamak</title> <step performance="required"> <para>konuyu belirleyin.</para> <substeps> <step performance="required"> <para>güncel ve hedef kitlenizin ilgisini çekecek bir konu bulun.</para> </step> <step performance="optional"> <para>anlatımın sıkıcı olmaması i çin ne kadar sürmesi gerektiğini hesaplayın. Hesapta ihtiyaç duyabileceğiniz fiziksel parametreler:</para> <table frame="all"><title>fizik sabitleri</title> <tgroup cols="2"> <thead><row> <entry>sabit adı</entry><entry>değeri</entry> </row></thead> <tbody> <row> <entry>euler sabiti</entry> <entry>e= <subscript>k</subscript> x<subscript>k</subscript>/k! = 2.718281828459</entry> </row> <row> <entry>boltzmann sabiti</entry> <entry>k = 1. 3806503(24) 10<superscript> 23</superscript> J K<superscript> 1</superscript></entry> </row> </tbody> </tgroup></table> </step> </substeps> </step> <step performance="required"> <para>slaytları hazırlayın.</para> </step> </procedure> </sect1></article>

Verinin çeşitli uygulamalar ve farklı mimariler üzerinden erişilebilmesi XML ile çok kolaydır. OpenOffice.org OpenOffice.org dosyaları aşağıdaki dosya ve dizinleri barındıran birer ZIP dosyalarıdır. META INF/manifest.xml Diğer dosyaların adları ve tiplerine ilişkin bilgileri içerir. <manifest:file entry manifest:media type="text/xml" manifest:fullpath="content.xml"/> mimetype meta.xml application/vnd.sun.xml.impress Belgenin yazarı, hazırlanma tarihi gibi bilgiler. styles.xml İçerikte kullanılan biçim stilleri. <style:style style:name="standard" style:family="graphics"> <style:properties draw:stroke="solid" svg:stroke color="#000000" fo:marginleft="0cm"/> <text:list style> <style:style style:name="gr1" style:family="graphics" style:parent stylename="standard"> <style:properties draw:stroke="none" draw:fill gradient name="linear blue/white"/> </style:style> III. Linux ve Özgür Yazılım Şenliği

content.xml Belgenin içeriğini taşır. <draw:page draw:name="başlık" draw:style name="dp1" draw:id="1" draw:master page name="arkaplan"> <draw:text box draw:style name="gr1" draw:text style name="p2" draw:layer="layout svg:width="26.847cm" svg:height="3.427cm" svg:x="0.698cm" svg:y="2.141cm"> <text:p text:style name="p1"> <text:span text:style name="t1">bir Veri Saklama Biçimi Olarak XML</text:span> </text:p> </draw:text box>... </draw:page> III. Linux ve Özgür Yazılım Şenliği OpenOffice.org dosya biçiminin getirileri: Linux (x86/ppc), Solaris (x86/sparc), Windows, MacOS X mimarilerinde çalışıyor. Metin, sunum ve hesap tablosu verilerini tek tek veya bir arada tutabiliyor. Dış verileri (resim, multimedya, vs) taşıyabiliyor. Erişim performansı yüksek, dosyalar az yer kaplıyor. Varolan standartları kullanıyor, genişlemelere açık. Diğer uygulamalar tarafından kolayca erişelebiliyor ve yaratılabiliyor. Basit shell komutları ya da perl programları ile bile kolayca dosya içeriklerine ulaşmak mümkün.

Jabber Jeremie Miller'ın 1999 yılında başlattığı bir özgür yazılım projesi (http: //jabber.org). Uygulamaların email benzeri bir sunucular/istemciler mimarisinde XML yoluyla veri aktarımı yapabilmelerini ve diğer uygulamalar tarafından bulunabilirliklerini sağlar. IETF'nin 2002 yılında kurduğu XMPP (extensible Messaging and Presence Protocol) çalışma grubu tarafından geliştirilip bir internet protokolü durumuna getirildi. Jabber bu protokol üzerinde çalışan bir anında iletişim (instant messaging) sistemi, her platformda istemcileri, çeşitli diller için protokol kitaplıkları ve çeşitli sunucuları var (http://jabberstudio.org). İstemci Sunucu <?xml version='1.0'?> <stream:stream to='example.com' xmlns='jabber:client' <?xml version='1.0'?> xmlns:stream='http://etherx.jabber.org/streams' <stream:stream from='example.com' version='1.0'> xmlns='jabber:client' <message to='zeynep@jabber.org'> <body>merhaba, nasılsın?</body> </message> </stream:stream> xmlns:stream='http://etherx.jabber.org/streams' version='1.0' id ='someid'> <message from='zeynep@jabber.org'> <body>iyiyim, sen nasılsın?</body> </message> </stream:stream>

<message from='yal çın@js.com.tr' type='chat'> <subject>xml</subject> <body>hi, have you prepared your presentation?<body> <body xml:lang='tr'>selam, sunumunu hazırladın mı?</body> <smiley xmlns='http://foo.org/jabber/smiley.dtd'>tela şlı</smiley> </message> <presence to='ahmet@firma.com' type='subscribe'/> <presence from='madcat@jabber.org'> <show>dnd</show> <status>çalışıyorum</status> </presence> <iq type='get' id='1234'><query xmlns='jabber:iq:roster'></iq> <iq type='result' id='1234'><query xmlns='jabber:iq:roster'> <item jid='ahmet@firma.com' name='ahmet Can' subscription='both'/> <item jid='madcat@jabber.org' name='gürer' subscription='to'><group>arkada şlar</group></item> </query></iq> <iq type='set'><query xmlns='jabber:iq:roster'> <item jid='ahmet@firma.com subscription='remove'/> </query></iq>

Veriye ait meta verinin her veri parçasında farklı olduğu ve/veya öngörülmeyecek biçimde değiştiği durumlarda XML basit bir g österim şekli, geriye ve ileriye uyumluluk sa ğlar. <ayarlar> <yedekleme> <otomatik s üre='5'/> <uzantı>.bak</uzantı> </yedekleme> <arabirim> <toolbar/><ipuçları/> <renkpaleti>yüksek kontrast</renkpaleti> </arabirim> </ayarlar> Özellikle uygulamanın diğer veriler için de XML kullandığı durumlarda ayar dosyalarının işlenmesi bedavaya gelmektedir. Bununla birlikte ayarların çok basit olması, fazla değişmeyecek olması veya genel ayarlar olmaları durumunda INI dosyası biçimi kullanmak basitlik sağlar ve ayarların temel metin komutlarıyla işlenmesini çok daha kolaylaştırabilir. # basit INI ayar dosyası otoyedekleme=5 uzantı=.bak araççubuğu=açık ipuçları=açık renkpaleti=yüksek konstrast

Verinin meta veri içermediği durumlarda XML herhangi bir getiri sağlamadan kaynak israfına yol açar. Grafik, ses, multimedya verileri meta verilerini de içeren kendi başlarına veri biçimlerine sahiptir. Sayı dizisi ve matrislerinden oluşan verilerin meta verileri verinin bütününü kapsar ve çok azdır. Liste ve tablo gibi veri yapılarının meta verisi dizideki tüm elemanlar için sabittir. Yazar Kitaplar İlişkisel Veritabanı Nicolai Hartmann Gürsel Korat Kitap Ontolojinin Işığında Bilgi Zaman Yeli 0. byte 20. byte 100. byte ptr += 100 (tek cpu komutu ile sonraki kayıt) ptr = yazar_ptrs[++index] (bir arttırma, bir bellek erişimi ile sonraki kayıt) SELECT yazar FROM kitaplar Kitaplar.xml <?xml version='1.0'?> <kitaplar> <kitap> <yazar>nicolai Hartmann</yazar> <ad>ontolojinin Işığında Bilgi</ad> </kitap> <kitap><yazar>gürsel Korat</yazar> <ad>zaman Yeli</ad></kitap> </kitaplar> Kayıtları dolaşmak kaç cpu işlemi gerektirir?

Seri Erişim (SAX Serial Access) XML metni işlenirken karşılaşılan her element için programın önceden belirttiği yordamlar çağrılır. Veriler üzerinde geriye veya ileriye dönük referanslar tutmadığı için bellek kullanımı en az düzeydedir. <?xml version= 1.0?> <kitap ad= Kedi Beşiği yazar= Kurt Vonnegut > Daha genç olduğum sıralarda, adını sıralarda, adını ) <k>dünyanın son günü</k> koymaya karar verdiğim bir kitap için belgeler toplamaya başladım. </kitap> etiket (kitap, ad, Kedi Beşiği, yazar, Kurt Vonnegut ) metin ( Daha genç olduğum etiket (k) metin ( Dünyanın son günü ) etiket_sonu (k) metin ( koymaya karar verdiğim bir kitap için belgeler toplamaya başladım ) etiket_sonu (kitap)

Metin Nesne Modeli (DOM Document Object Model) XML metnini bir ağaç yapısına dönüştürüp programa aktarır. Dosyadaki veriler ve ağaç yapısının meta verileri bellekte yer kaplar. <?xml version= 1.0?> <kitap ad= Kedi Beşiği yazar= Kurt Vonnegut > Daha genç olduğum sıralarda, adını <k>dünyanın son günü</k> koymaya karar verdiğim bir kitap için belgeler toplamaya başladım. </kitap> Daha genç olduğum sıralarda <kitap> ad = Kedi Beşiği yazar = Kurt Vonnegut <k> koymaya karar verdiğim bir kitap için belgeler toplamaya başladım. Dünyanın son günü

libxml http://xmlsoft.org Standart GNOME XML kitaplığı XML, HTML, URI, SAX, DOM, XML Reader, DTD, XML Catalog, XPath, XPointer, XInclude, Iconv libxslt, libxmlsec gibi ekstra kitaplıklar, C++, python, perl arabirimleri int main(int ac, char **av) { xmldocptr doc; xmlxpathobjectptr res; xmlxpathcontextptr ctxt; } doc = xmlreadfile (av[1], NULL, 0); ctxt = xmlxpathnewcontext (doc); ctxt >node = xmldocgetrootelement (doc); res = xmlxpathevalexpression(bad_cast av[2], ctxt);... xmlxpathfreeobject(res); xmlxpathfreecontext(ctxt); xmlfreedoc (doc); xmlcleanupparser(); return(0); int main (int ac, char **av) { xmltextreaderptr reader; } reader = xmlreaderforfile (av[1], NULL, 0); while (xmltextreaderread (reader) == 1) { printf ("Etiket %s Derinlik %d Tip %d\n", xmltextreaderconstname (reader), xmltextreaderdepth (reader), xmltextreadernodetype (reader)); } xmlfreetextreader (reader); xmlcleanupparser(); return 0;

iksemel http://iksemel.jabberstudio.org SAX, DOM, XML Stream, Jabber desteği Modüler, tutarlı, kolay öğrenilen ANSI C dilinde, Posix, Windows, Symbian uyumlu sistemlerde çalışıyor XML 1.0, DTD desteği yok, yalnızca UTF 8 int bas; int etiket (void *u, char *ad, char **ozel, int tip) { if (strcmp (ad, "bas") == 0) { if (tip = IKS_TYPE_OPEN) bas = 1; else bas = 0; } } int metin (void *u, char *veri, int boy) { if (bas) puts (veri); } int main (int ac, char *av[]) { iksparser *prs; int err; prs = iks_sax_new (NULL, etiket, metin); iks_parse (prs, av[1], 0, 1); iks_parser_delete (prs); return err; } int main (int ac, char *av[]) { iks *x; int err; x = iks_tree (av[1], 0, &err); if (err == IKS_OK) { printf ("TEST etiketinin içeriği:\n%s\n", iks_string (NULL, iks_find (x, "TEST"))); } return err; } iksparser *prs; int node_hook (void *u, int tip, iks *node) { if (tip == IKS_NODE_START) iks_auth_sasl (prs, 0, "madcat", "şifre"); else... } int main (int ac, char *av[]) { prs = iks_stream_new (IKS_NS_CLIENT, NULL, node_hook); iks_connect_tcp (prs, "jabber.org", IKS_JABBER_PORT); while (iks_recv (prs, 1) == IKS_OK); }

expat http://expat.sf.net 1998'de James Clark tarafından geliştirildi, basit SAX tabanlı, DTD yok xerces http://xml.apache.org C++, Java dilleri için, SAX, DOM, DTD, XML Schema desteği xalan xindice xerces üzerinde XPath ve XSLT desteği sağlayan C++, Java kitaplığı xerces/xalan üzerinde XML veri tabanı, sorgulamalar için XPath, değişiklikler için XUpdate kullanan Java kitaplığı, ufak ve orta büyüklükte XML metinleri için <xupdate:insert after select='/adresler/adres[1]'> <xupdate:element name='adres'> <xupdate:attribute name='id'>2</> <isim>ali Can</isim> <il>istanbul</il> <postakodu>81010</postakodu> </xupdate:element> <x/update:insert after> berkeley db xml http://www.sleepycat.com/products/xml.shtml BerkeleyDB içinde tutulan XML metinleri üzerinde XPath sorgulamaları yapmayı sağlar C++, Java dillerini destekler, xerces tabanlıdır Hızlı sorgulama için metinler üzerinde indeks oluşturur, metin değişikleri yeniden indeksleme gerektirir

KxmlEditor 1.0 http://kxmleditor.sf.net

Conglomerate 0.7.12 http://conglomerate.sf.net

MLView 0.6.2 http://www.mlview.org

Sorular