3. şaretleme Dili (Markup Language)
Nedir ?
Ne amaçla kullanılabilir ?
Etiket (Tag) nedir ?
Bildiğimiz işaretleme dilleri neler ?
4. HTML
Hyper Text Markup Language
En çok bilinen işaretleme dili
Düz yazıyı, etiketler yardımıyla daha güzel
görüntülenmesini sağlar
Önceden tanımlamış etiketler kullanır
Browserlar tarafından yorumlanır
5. Neden XML ihtiyacı
Veritabanlarındaki verilerin paylaşılması
Veri tabanındaki bilgilerin dosyalarda
saklanması
Özellikle B2B uygulamalarda verilerin
paylaşımı
Genel veri formatlama sorunu
Çözüm – XML
Neden XML e ihtiyacımız var bir örnekle
görelim
6. Örnek (Veri paylaşımı - B2B)
B şirketi
A şirketi
Dublin
stanbul
Application
Application
(WepApp,Web
(WepApp,Web
Application
Service veya Application
Service veya
Network app)
Network app) •Veriyi oku
•Veriyi çek
•Parse et*
•Formatla *çok önemli
•Veri tabanına yaz
•Gönder
Veriyi neden formatlıyoruz Veriyi neden parse ediyoruz
7. Örnek (Veri paylaşımı - B2B)
B şirketi
A şirketi
Dublin
stanbul
110 : Ahmet : Demirelli n 111 : Hakan : Inan n
110 : Ahmet : Demirelli n
Parse et
111 : Hakan : Inan n
ve
... Fromatla
Veritabanına yaz
.... ve
Gönder
No Ad Soyad ID Lastname Name
110 Ahmet Demirelli 110 Demirelli Ahmet
111 Hakan Inan 111 Inan Hakan
8. Örnek Yorumları
Bu iki şirket başka şirketlerle veri paylaşıyorsa
“:” ve “n” yerine başka ayıraçlar kullanılıyorsa
Veriler tüm dünyaya açılacaksa
Çözüm
Tüm dünya tarafından kabul edilmiş ve herkesin
kolayca anlayabileceği bir veri formatlama standardı
kullanmamız gerekecek
XML
9. XML
eXtensible Markup Language
Bir işaretleme dili
Genişletilebilir *
Verilerin taşınması veya dosyalarda saklanması için
kullanılır
Bütün programlama dillerinin XML desteği var
Tüm veritabanlarının XML desteği var
*Önceden tanımlanmış etiketler kullanmak yerine
kendi etiketlerimizi kullanırız
10. Örnek XML dökümanı
<?xml version=quot;1.0quot;>
<calisanlar>
<kisi>
calisanlar tablosu <no>110</no>
<ad>Ahmet</ad>
No Ad Soyad
<soyad>Demirelli</soyad>
110 Ahmet Demirelli
</kisi>
111 Hakan Inan
<kisi>
<no>111</no>
<ad>Hakan</ad>
<soyad>Inan</soyad>
</kisi>
</calisanlar>
11. HTML vs XML
HTML verinin nasıl görüneceğini belirler
XML verinin ne verisi olduğunu belirler
HTML XML
<i>Bill</i> <aktor>
<u>Lawrence</u> <isim>Zach</isim>
<soyisim>Braff</soyisim>
</aktor>
12. “Element” ler ve “Attribute” lar
Element
<firmaismi>Sun</firmaismi>
–
<firmaismi/> (boş element)
–
Attribute
<calisan id=“9786”>Ahmet</calisan>
–
13. XML yazım kuralları
Bir XML dökümanında;
Sadece bir tane root “element” olmalıdır
Etiket ve atribute isimleri “case sensitive” dir
Bütün elementlerin mutlaka kapanış etiketi olmalıdır
Elementler kesişmemelidir
“Attribute” lar mutlaka tırnak işareti içinde olmalıdır
Bu kurallara uygun yazılmış XML
dökümanlarına “well formed” denir.
15. XSL
XSL(eXtensible Stlysheet Language)
XML dökümanının görünümünün nasıl
olması gerektiğini tanımlayan bir dildir.
Üç bileşenden oluşur;
XSLT – XML dökümanını dönüştürme dili
–
XPath – XML dökümanı içerisinde arama dili
–
XSL-FO – XML dökümanı formatlama dili
–
16. XSL
XSLT ( XSL Transformations )
Xpath i kullanarak XML dökümanını başka bir
–
dökümana dönüştürmek için kullanılır (Ör: html)
XPath
XML dökümanı içerisinde istediğimiz özellikteki
–
element veya attribute ulaşmamızı sağlayan dildir.
(SQL e benzer )
17. XSLT Örnekleri
Basit bir XSL yazmak
XML ve XSL birleşiminden HTML çıktı almak.
XML dökümanına aşağıdaki satırı ekliyoruz
<?xml-stylesheet type=quot;text/xslquot; href=“siparis.xslquot;?>
20. Problem
XML dökümanında hangi element etiketleri
olacak ?
Bu bilgiyi diğer şirketlerlere nasıl bildireceğiz
paylaşacağız ?
ÇÖZÜM
DTD (Document Type Definition)
veya
XSD (XML Schema Definition)
21. DTD
XML dökümanındaki “element” lerin ve
“attribute” ların hangi özelliklerde* olması
gerektiği belirtilen dosya.
*(Element isimleri neler olmalı, kaç defa tekrar etmeli, bir elementin alt
elementleri neler olmalı, attribute ları neler olmalı ...vs )
DTD de belirtilen kurallara uygun yazılmış
XMLdökümanlarına Valid (onaylanmış)
döküman denilir.
22. XML (Well-Formed -- Valid)
-Well Formed-
yazım kurallarına uygun
–
-Valid-
Yazım kurallarına uygun
–
DTD de belirtilmiş kurallara uygun
–
23. Örnek DTD
<!ELEMENT siparisler (siparis)+>
<!ELEMENT siparis (adet, marka,model)>
<!ELEMENT adet (#PCDATA)>
<!ELEMENT marka (#PCDATA)>
<!ELEMENT model (#PCDATA)>
24. DTD bildirimleri (Declarations)
<! ELEMENT
Bir XML elementi bildirimidir
<! ATTLIST
Bir element tipinin alabileceği attribute larının
bildirimidir.
<! ENTITY
Belli bir içeriğin bir isme bağlanarak o isimle
ilişkilendirilmesini sağlar.
<! NOTATION
XML dökümanı haricinde bir veri tipi tanımlamak için kullanılır
25. <! ELEMENT
<! ELEMENT elementadı içerikTipi>
(diğer element isimleri) -- ismi yazılan elementleri içerir
EMPTY – Boş element
ANY – Herhengi bir element veya veri içerir
(#PCDATA) – Karakter veri içerir
26. Semboller
( ElementAdı ) – Element sadece bir kere tekrar etmeli
ElementAdı ? – Element bir kere veya hiç tekrar etmeyebilir
ElementAdı + -- Element 1 veya daha fazla tekrar etmeli
ElementAdı * -- Element 0 veya daha fazla tekrar etmeli
Element1, Element2 – Element2 , Element1 den sonra gelmeli
( Element1 | Element2 ) – Element1 veya Element2 den bir tanesi olmalı
27. <! ATTLIST
<! ATTLIST elementAdı attributeAdı attributeTipi
defaultDeğeri>
#REQUIRED – attribute her zaman olmalıdır
#IMPLIED – attribute zorunlu değildir
#FIXED değer– attribute değeri sabit değeri
alabilir (eğer element içerisinde attribute
kullanılmazsa bu değer alınır)
değer – attribute, element içerisinde kullanılmamış
ise orada yazılı değeri tanımlanmamış ise default
değeri alır
<! ATTLSIT urun urunKodu CDATA #REQUIRED >
28. Örnekler
DTD ve ona uygun yazılmış DTD örneği.
Basit bir DTD yazmak
29. DTD amaç ve eksiklikleri
DTD nin kullanım amaçları ;
XML dökümanın yazılım kurallarını belirlemek ve bunu diğer
kişilerle/kurumlarla paylaşmak
XML dosyasını kullanmadan önce onaylamak(Validation)
Bazı element veya attribute lar için default değerler atamak
DTD nin eksiklikleri;
Çok sınırlı veritipi (datatype) desteği
Veri tabanlarında kullanılan veri tiplerini desteklememesi
XML yazım kurallarına uygun olmaması (non-XML Format)
31. XML Schema (XSD)
DTD nin eksikliklerini gidermek için geliştrildi
Dosya uzantısı .xsd dir
Root element <schema>
XML yazım kurallarına uygun yazılmalıdır
32. Simple ve Complex elementler
“Simple” element bir değer dışında hiçbir şey
içermeyen elementdir.
Attribute içermez
–
Başka elementler içermez
–
Boş olamaz
–
Eğer bir element “simple” değil is “complex” tir.
Attribute ları olabilir
–
Boş olabilir
–
Başka elementler veya text içerebilir ya da her ikisini aynı
–
anda da içereblir
33. Simple ve complex elementler
<musteri> complex element
<adres>
<sokak>5. Sokak</sokak>
<şehir> stanbul</şehir>
<ülke>Türkiye</ülke>
</adres>
</musteri> simple element
34. Simple element tanımı
Simple element tanımı ;
<xs:element name=“elementAdıquot; type=“tipquot; />
Burada:
name elementin ismi
–
Ençok kullandığımız element tipleri (type)
–
xs:boolean xs:integer
xs:date xs:string
xs:decimal xs:time
Simple elementin alabileceği attribute ler:
default=quot;default value“ değer verilmezse alacağı değer
–
fixed=quot;value“ başka bir değer almasını istemiyorsak
–
35. Attribute tanımı
Attribute lar simple elementler gibi tanımlanır
Bir attribute tanımı;
<xs:attribute name=quot;namequot; type=quot;typequot; />
name ve type element tanımındaki gibidir
–
Attibute tanımıda bulunabilecek diğer attribute lar:
default=quot;default valuequot; değer verilmezse alacağı değer
–
fixed=quot;valuequot; başka bir değer almasını istemiyorsak
–
use=quot;optionalquot; attribute kullanmak zorunlu değil ise
–
(default)
use=quot;requiredquot; attribute kullanmak zorunlu ise
–
36. Kısıtlamalar
Eğer element veya attribute ların alacağı değerleri
kısıtlamak istersek:
<xs:element name=“adquot;> (veya xs:attribute)
–
<xs:restriction base=“tipquot;>
... kısıtlamalar ...
</xs:restriction>
</xs:element>
For example:
<xs:element name=“yaşquot;>
–
<xs:restriction base=quot;xs:integerquot;>
<xs:minInclusive value=quot;0quot;>
<xs:maxInclusive value=quot;140quot;>
</xs:restriction>
</xs:element>
37. Sayısal kısıtlamalar
minInclusive – alabileceği değer ≥ value
minExclusive – alabileceği değer > value
maxInclusive -- alabileceği değer ≤ value
maxExclusive -- alabileceği değer < value
totalDigits -- değer value basamaklı olmalı
fractionDigits -- alabileceği değerdeki ondalık bölüm value
basamaklı olmalı
38. String (kelime) kısıtlamaları
length -- kelime value harfli olmalı
minLength -- kelime en az value harfli olmalı
maxLength -- kelime en fazla value harfli olmalı
pattern -- value regular expression
whiteSpace – whitespace karakterlerini ne yapması gerektiği
kalsın
value=quot;preservequot;
–
whitespace leri boşluk ile değiştir
value=quot;replacequot;
–
Tekrar eden whitespace karakterleri tek
value=quot;collapsequot;
–
bir boşluk haline getir
40. Complex element ler
Bir complex (karmaşık) tip tanımlanırken
<xs:element name=“adıquot;>
<xs:complexType>
... Complex tip ile ilgili bilgiler...
</xs:complexType>
</xs:element>
Örnek:
<xs:element name=“kişiquot;>
<xs:complexType>
<xs:sequence>
<xs:element name=“adıquot; type=quot;xs:stringquot; />
<xs:element name=“soyadıquot; type=quot;xs:stringquot; />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:sequence> elementler bu sırayla yazılmalı
41. Global ve local tanımlar
<xs:schema> etiketinin hemen altına tanımlanan “top level”
elementler şemanın heryerinde geçerlidir (global)
<xs:complexType> aetiketinin içerisinde tanımlanan elementler
sadece o kompleks tip için geçerlidirler (local)
Örnek:
<xs:element name=“kişiquot;>
<xs:complexType>
<xs:sequence>
<xs:element name=“adquot; type=quot;xs:stringquot; />
Local elements <xs:element name=“soyadquot; type=quot;xs:stringquot; />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:schema> altında “top level” tanımlanan elementlerin sırası
önemli değildir
42. Complex element kullanımı
Tanımlamış olduğumuz bir complex element
i artık normal bir tip gibi type=quot;...“ attribute
ları içerisinde kullanabiliriz
örnek:
–
<xs:element name=“öğrenciquot; type=“kisiquot;/>
<xs:element name=“öğretmenquot; type=“kisiquot;/>
Bir elemente ait local tipleri başka bir element
–
içerisinde kullanamayız
43. <xs:sequence
Bir complex tip içerisindeki elementlerin
sırasını ve isimlerini belirtmek için kullanırız:
<xs:element name=quot;personquot;>
<xs:complexType>
<xs:sequence>
<xs:element name=quot;firstNamequot; type=quot;xs:stringquot; />
<xs:element name=quot;lastNamequot; type=quot;xs:stringquot; />
</xs:sequence>
</xs:complexType>
</xs:element>
44. <xs:all
<xs:all elementleri herhangi bir sıralanması
kısıtlamaz
<xs:element name=quot;personquot;>
<xs:complexType>
<xs:all>
<xs:element name=quot;firstNamequot; type=quot;xs:stringquot; />
<xs:element name=quot;lastNamequot; type=quot;xs:stringquot; />
</xs:all>
</xs:complexType>
</xs:element>
<xs:all grup elementleri 1 veya hiç tekrar etmeyebilir
Eğer tekrar kısıtlaması yapmak istersek minOccurs=quot;nquot;
ve maxOccurs=quot;nquot; kullanabiliriz(default değer 1 dir)
Yukarıdaki örnekte <xs:all elementleri 0 veya 1 defa tekrar
–
edebilir
45. Attribute`u olan Elementler
Eğer bir elementin attributeları varsa artık o element
simple type değildir.
<xs:element name=quot;populationquot;>
–
<xs:complexType>
<xs:simpleContent>
<xs:extension base=quot;xs:integerquot;>
<xs:attribute name=quot;yearquot; type=quot;xs:integerquot;>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
–
46. Boş element ler
Boş elementler “complex” tir. ☺
<xs:complexType name=quot;counterquot;>
<xs:complexContent>
<xs:extension base=quot;xs:anyTypequot;/>
<xs:attribute name=quot;countquot; type=quot;xs:integerquot;/>
</xs:complexContent>
</xs:complexType>
47. Extensions
BiR complex tip tanımlarken başka bir
complex tip baz alınabilir.(inheritance ?)
<xs:complexType name=quot;newTypequot;>
<xs:complexContent>
<xs:extension base=quot;otherTypequot;>
...new stuff...
</xs:extension>
</xs:complexContent>
</xs:complexType>
48. string tipleri
Bir string tipi olarak aşğıdakileri kullanabiliriz:
xs:string – herhangi bir string
–
xs:normalizedString – “tab”, yeni satır ve satır başı
–
karakterleri içermeyen string
xs:token – tek boşluk karakteri haric hiç bir whitespace
–
karakteri içermeyen string
Stringlere uygulanabilecek kısıtlamalar:
enumeration, length, maxLength, minLength, pattern,
–
whiteSpace
49. date ve time tipleri
xs:date -- CCYY-MM-DD, şeklindeki tarih formatı,
örnek: 2002-11-05
xs:time -- hh:mm:ss şeklindeki zaman formatı (saat,
dakika, saniye)
xs:dateTime -- CCYY-MM-DDThh:mm:ss birleştirilmiş
tarih ve zaman formatı
date ve time tiplerinde kullanılabilecek kısıtlamalar:
enumeration, minInclusive, maxExclusive, maxInclusive,
–
maxExclusive, pattern, whiteSpace