|
|
||||||||||||
|
|
XML Şemalarına Giriş
DTD'nin aksine Şemaların XML biçiminde olması şemanın programlanabilir olmasını sağlar. Ayrıca XML şemalarında DTD'ye göre daha çok denetim yapılması mümkündür. Şemalar veritabanlarında yaygın kullanılan sayı, metin, tarih gibi veri tiplerini destekler. Bununla birlikte zengin kısıtlama seçenekleri de sunmaktadır. Karakter uzunluklarını, değer aralıklarını sınırlandırmak, öğelerin kullanım sıralarını ve adetlerini belirlemek DTD'lerle değil, şemalarla mümkündür. Öğelerin kullanım sıralarının belirlenebilmesi DTD'de dolaylı olarak ve sade, şemada kolayca ve zengin seçeneklerle yapılabilen işlemler arasındadır. DTD'de olduğu gibi başlangıçta geçerli değerlerin atanması, verilerin bulunma zorunluluklarıyla ilgili koşullarının belirtilebilmesi şemalarda da geçerlidir. Seçimlik değerler listesi oluşturmak da aynı şekilde şemalarda vardır. Karakter dizesi eşlemeleri ve oluşturulan özel tiplerin birçok kez kullanılabilmesi şemaların DTD'ye göre üstünlüklerindendir. Kursumuzda bahsetmediğimiz varlık başvuruları gibi DTD'deki birtakım özellikler, dolaylı olarak şemaların bazı yeteneklerine kısmen ulaşabilir. Tabii ki XML şemaları olduğu sürece, DTD bundan sonra kullanmayacaklarımız arasındadır. XSD BELGELERİ OLUŞTURMAK XML şema dosyaları geçerli olarak XSD uzantısını alırlar. XSD dosyaları da XML belgesi içinde DTD ve XSL belgelerine benzer şekilde tanımlanır. Fakat kimi durumlarda XSD tanımlarını çabuk anlamak için sonraki yazımızda bahsedeceğimiz sözlük alanlarını iyi biliyor olmak gerekecektir. Basit bir XSD dosyasının içeriğine bakmadan önce aşağıdaki XSD tanımı eklenmiş kisi.xml belgesinin içeriğini inceleyin. kisi.xml <?xml version="1.0"?> <KISI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNameSpaceLocation="kisi.xsd"> <AD>Lale</AD> <MESLEK>Doktor</MESLEK> <SEHIR>Istanbul</SEHIR> <TELEFON>0216 612 ...</TELEFON> </KISI> KISI öğesine ait noNameSpaceLocation özniteliği bağlı bulunan XSD şema dosyasının yerini ve adını bildirir. Öncesindeki xmlns:xsi özniteliğinin değeri şema kullanılan her xml belgesinde aynıdır (XSD'nin çıkabilecek yeni sürümü kullanılmayacaksa). Bu deyim yorumlayıcıya xsi ile başlayan öğelerin şema ile ilgili tanımlar olduğunu bildirir. Önceki derslerimizden hatırlayacağınız gibi KISI belgesinin DTD tanımı aşağıdakine benzer olacaktır. <!ELEMENT KISI (AD, MESLEK, SEHIR, TELEFON)> <!ELEMENT AD (#PCDATA)> <!ELEMENT MESLEK (#PCDATA)> <!ELEMENT SEHIR (#PCDATA)> <!ELEMENT TELEFON (#PCDATA)> Şemalar ise DTD belge tanımlarından daha yetenekli olmalarına nazaran daha karmaşıktırlar. kisi.xsd <?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="KISI">
<xsd:complexType>
<xsd:element name="AD" type="xsd:string" />
<xsd:element name="MESLEK" type="xsd:string" />
<xsd:element name="SEHIR" type="xsd:string" />
<xsd:element name="TELEFON" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Şemalarda çocuk öğesi olan her öğe için mutlaka complexType tanımlaması yapılmalıdır. Bu bağlamda şemalar, öğeleri basit ve karmaşık olarak nitelendirmektedir ve yukarıda KISI öğesinden sonra complexType getirilmiştir. Kursumuzun sonraki dersinde, bu ay kısa bir giriş yaptığımız şemaları
ayrıntılı olarak ele alacağız. DOSYALAR:
Serkan ŞAHİNOĞLU |