BilgiTeknoloji.net    
b i l g i   t e k n o l o j i   y a z ı l ı m

Ana Sayfa

Marjinal XML Access Pratik Uygulamalar Projeler Ekonometri Dilimiz Çetrefil İletişim
 

XML Şemaları ve Geçerlilik


Geçen ay kısa giriş yaptığımız XML şemaları için bu ay XML belgelerinin şemalara uygun olup olmadığının nasıl denetlendiğini inceliyoruz.
 

GEÇERLİLİĞİ DENETLEMEK

Şemaların amacı gerçekte XML belgelerinin belli bir kalıba uymasını sağlamaktır. Bunun için şemaların da doğru yazılmış, şema yazım kurallarının dışına çıkılmamış olması gerekir.

Bir XML belgesini bir şemaya uygunluğa zorlamak için XML belgesinde yerel şema tanımlaması yapmak yeterlidir.

kisi.xml
<?xml version="1.0"?>

<KISI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:noNamespaceSchemaLocation="kisi.xsd">

    <AD>Lale</AD>
    <MESLEK>Doktor</MESLEK>
    <SEHIR>Istanbul</SEHIR>
    <TELEFON>0216 612 ...</TELEFON>

</KISI>
kisi.xsd
<?xml version="1.0" ?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="KISI">
    <xsd:complexType>
      <xsd:sequence>
        <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:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>


MSXML'deki DOMDocument bileşeni belgeyi yüklerken belgenin geçerliliğini ve doğruluğunu denetler.

Belgenin şemaya uygun olup olmadığı Load ile yükleme aşamasında denetlenir. Belge uygun değilse yükleme aşamasında iken, DOM'un ParseError alt sınıfına ilgili hata kaydı eklenmiştir.

[VB]

Dim dom As New MSXML2.DOMDocument40

dom.async = False
dom.Load "c:\kisi.xml"

If dom.parseError.errorCode = 0 Then
  MsgBox "Hata yok."
Else
  MsgBox "Hata: " & dom.parseError.errorCode & vbCr & _
         "Satır: " & dom.parseError.Line & vbCr & _
         dom.parseError.srcText & vbCr & vbCr & _
         dom.parseError.reason
End If


BASİT VE KARMAŞIK ÖĞELER

Şemalarda öğeler basit ve karmaşık şeklinde ikiye ayrılıyor. Kısaca alt (çocuk) öğe içermeyen, özniteliği olmayan, yalnızca bir değer içeren öğeler basit öğe, bunların dışındakiler karmaşık öğe olarak kabul edilir.

Yukarıdaki kisi.xsd belgesinde KISI öğesinden sonra xsd:ComplexType ve xsd:Sequence deyimlerinin getirildiğine dikkat edin.

Kisi öğesi alt öğeler içerdiği için ComplexType kullandık. Her zaman zorunlu olmasa da alt öğelerin seri halinde kullanılmasını sağlamak için de Sequence kullanmak gerekiyor.

XML şemalarına daha sonra devam edeceğiz.
 

DOSYALAR:
kisi.xml
kisi.dtd
kisi.xsd

Serkan ŞAHİNOĞLU
(Chip Dergisi, Ocak 2003)


http://BilgiTeknoloji.net