Xml Dosyalarının Schema Dosyaları ile Kontrolu
xml January 24th, 2008->
Xml teknolojileri ve xml şemaların tamamı yazılım geliştiriciler için çok kullanışlıdır. Sonunda xml belgelerimize veri tip bilgisini de ilave edebiliyoruz.
Xml şemaya göz atalım önce. Xml 1.0 standardı bilgi açıklamaları ve kontrol için “Document Type Definitions” (DTD) olarak bilinen standartla geldi. DTD standardı her zaman olmasa da genelde ihtiyaçlara cevap verebilen ve XML gibi o da “Standart Generalized Markup Language” (SGML) ailesinden türemişti.
DTD, XML belgenin yapısını tanımlamamıza izin veriyordu. Örneğin aşağıdaki XML belgesine ve tanımlanmasına bakalım :
-
<?xml version="1.0" ?>
-
-
Mehmet
-
-
2004-01-01
-
-
1000
Bir de bu dosyanın DTD tanımlamasına bakalım :
-
<!ELEMENT isci (adi, girisTarihi, maas)>
-
-
<!ATTLIST isci no CDATA #REQUIRED>
-
-
<!ELEMENT adi (#PCDATA)>
-
-
<!ELEMENT girisTarihi (#PCDATA)>
-
-
<!ELEMENT maas (#PCDATA)>
Bu tanımlamayı ise şu şekilde ilişkilendiririz :
-
<?xml version="1.0" ?>
-
-
<!DOCTYPE isci SYSTEM "isci.dtd"
-
-
Mehmet
-
-
2004-01-01
-
-
1000
DTD kullanımının en önemli amacı “geçerlilik kontrolü” dür. XML geçerlilik kontrolünda dosya okunur ve ilişkilendirilmiş DTD dosyasına uyulur. DTD kontrolü kullandığınız zaman uygulama içerisinde yaptığınız pek çok hatayı bu kontrol sayesinde azaltabilirsiniz.
DTD SGML kökenli elektronik yayınlanan uygulamalar için iyi bir şekilde hazırlanmış olmasına rağmen günümüzün daha modern uygulama alanlarında bazı sınırlılıkları kolayca ortaya çıkmakta. En önemli kısıtlaması, DTD yazım kuralları XML ile uyumlu olmaması. Bunun yanında DTD isim boşluklarına (namespace), programa dillerindeki tanımlamalara ve karmaşık tip tanımlamalarına izin vermez.
DTD bir XML dokümanı olmadığından dolayı programsal tanımlama yapılamaz. DTD’nin kullanımı bu yüzden genelde geçerlilik kontrolü desteğidir fakat tanımlama bilgilerine programsal erişime destek yoktur.
Aslında XML isim boşluğu kavramı DTD standardının oluşumundan sonra olmuştur. Bu bakımdan birlikte çalışamamaları sürpriz değildir. DTD dosyasında isim boşluğu tanımlamaya çalışmak, “havanda su dövmek” ten farklı bir şey değildir. Bu yüzden pek çok yazılım geliştirici DTD veya isim boşluğu kullanmak konusunda bir seçim yapmak zorunda kaldı.
DTD aynı zamanda, fazla data tipinin olmadığı doküman merkezli yazılımlar için özellikle tasarlanmıştır. Sadece bu tür yazılımlarda çok kullanılan tipler tanımlanmıştır bu yüzden. Dikkat ederseniz programlama dillerinde kullandığımız tür tanımlamalar da yoktur. (belki tek işimize yarayan CDATA olmuştur.) Uygulamalarımızda oluşturduğumuz özel tipler ise DTD’nin tamamen dışındadır. Yazılım geliştiriciler XML şema (schema) standardı yayınlanana kadar DTD’nin limitleriyle çalışmak zorunda kaldılar.
XML Şemanın Temelleri
XML Şema, çalışma anında veya daha önceden oluşmuş XML bilgisinin tanımlama sözlüğüdür. Neden böyle bir kavram kullandık? Bu yapıyı sınıf – nesne arasındaki ilişkiye benzetebiliriz. Şema tip tanımlamasına, yani sınıfa karşılık gelirken XML dokümanı nesneye karşılık gelir. Çalışma anında aynı yapıda pek çok XML dokümanı olabilir. Referans şemada yapılan tanımlamadır.
-
<?xml version="1.0" encoding="utf-8" ?>
-
-
xmlns:xs="http://www.w3.org/2001/XMLSchema">
Kullanımda şema tanımlamasının “http://www.w3.org/2001/XMLSchema“’dan geldiği belirtilir.
Şema tanımlamasında XML kök elemanı “xsd:schema” olarak belirtilir. Kök eleman pek çok eleman (element) içerebilir. xsd:element, xsd:attribute ve xsd:complexType gibi tipler de limitsiz olarak eklenebilir.
Şema tanımlaması ilk olarak geliştirilen DTD’nin sınırlama sorununa çözüm oldu. Şema tanımlama işlemlerini XML 1.0 araçları ile, DOM, SAX, XPath, ve XSLT gibi servislerle yapabilmekteyiz. Şemalar her türlü karmaşık tiplere basit çözümler şeklinde karşımıza çıkmakta.



























February 19th, 2008 Saat 9:36 pm
xsd dosyasını localhostta çalıştırmak için ayrıca bir program kurulumu gerekirmi?