SlideShare a Scribd company logo
1 of 52
Download to read offline
XML
 Ahmet Demirelli
 Sabancı Üniversitesi
 2007
Konular

  XML
  XSL
  DTD
  XML Schema ( XSD )
şaretleme Dili (Markup Language)

Nedir ?
Ne amaçla kullanılabilir ?
Etiket (Tag) nedir ?
Bildiğimiz işaretleme dilleri neler ?
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
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
Ö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
Ö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
Ö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
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
Ö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>
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>
“Element” ler ve “Attribute” lar

 Element
     <firmaismi>Sun</firmaismi>
 –
     <firmaismi/> (boş element)
 –

 Attribute
     <calisan id=“9786”>Ahmet</calisan>
 –
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.
Stylesheet
eXtensible
     Language


             XSL
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
 –
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 )
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;?>
<?xml version=quot;1.0quot; encoding=quot;ISO-8859-1quot;?>
<xsl:stylesheet version=quot;1.0quot;
xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot;>
<xsl:template match=quot;/quot;>
  <html>
                                          XSLT
  <body>
  <h2>Order List</h2>
    <table border=quot;1quot;>
      <tr bgcolor=quot;#9acd32quot;>
                                          XPath
        <th align=quot;leftquot;>Count</th>
        <th align=quot;leftquot;>Brand</th>
        <th align=quot;leftquot;>Model</th>
      </tr>
      <xsl:for-each select=“siparisler/siparisquot;>
      <tr>
       <td> <xsl:value-of select=“adetquot;/> </td>
       <td> <xsl:value-of select=“markaquot;/> </td>
        <td> <xsl:value-of select=“modelquot;/> </td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
Document Type Definition



           DTD
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)
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.
XML (Well-Formed -- Valid)

 -Well Formed-
     yazım kurallarına uygun
 –

 -Valid-
     Yazım kurallarına uygun
 –
     DTD de belirtilmiş kurallara uygun
 –
Örnek DTD

<!ELEMENT siparisler (siparis)+>
  <!ELEMENT siparis (adet, marka,model)>
  <!ELEMENT adet (#PCDATA)>
  <!ELEMENT marka (#PCDATA)>
  <!ELEMENT model (#PCDATA)>
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
<! 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
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ı
<! 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 >
Örnekler

 DTD ve ona uygun yazılmış DTD örneği.
 Basit bir DTD yazmak
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)
XML Schema Definitions




          XSD
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
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
Simple ve complex elementler

<musteri>                          complex element
     <adres>
           <sokak>5. Sokak</sokak>
           <şehir> stanbul</şehir>
           <ülke>Türkiye</ülke>
     </adres>
</musteri>                         simple element
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
 –
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
 –
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>
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ı
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
Enumeration (Liste kısıtlaması)

Elementin alabileceği değişkenleri liste halinde
belirler
Example:
     <xs:element name=“mevsimquot;>
 –
        <xs:simpleType>
            <xs:restriction base=quot;xs:stringquot;>
               <xs:enumeration value=“Yazquot;/>
               <xs:enumeration value=“Kışquot;/>
               <xs:enumeration value=“Sonbaharquot;/>
               <xs:enumeration value=“ lkbaharquot;/>
             </xs:restriction>
        </xs:simpleType>
     </xs:element>
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ı
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
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
<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>
<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
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>
 –
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>
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>
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
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
Sayısal (numeric) tipler

  Sayısal ifadelerde aşağıdaki tipler kullanılabilir:
xs:decimal                   xs:positiveInteger
xs:byte                      xs:negativeInteger
xs:short                     xs:nonPositiveInteger
xs:int                       xs:nonNegativeInteger
xs:long
  Sayısal ifadelerdeki kısıtlamalar:
      enumeration, minInclusive, maxExclusive, maxInclusive,
  –
      maxExclusive, fractionDigits, totalDigits, pattern,
      whiteSpace
Örnekler

 XSD ve ona uygun yazılmış XML örneği
 Eclipse te XSD yazmak.
 XML e uygun şema üretmek.
 Validate etmek.
 ....vs
ahmetdemirelli@sabanciuniv.edu

More Related Content

Featured

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Featured (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

XML

  • 1. XML Ahmet Demirelli Sabancı Üniversitesi 2007
  • 2. Konular XML XSL DTD XML Schema ( XSD )
  • 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.
  • 14. Stylesheet eXtensible Language XSL
  • 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;?>
  • 18. <?xml version=quot;1.0quot; encoding=quot;ISO-8859-1quot;?> <xsl:stylesheet version=quot;1.0quot; xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot;> <xsl:template match=quot;/quot;> <html> XSLT <body> <h2>Order List</h2> <table border=quot;1quot;> <tr bgcolor=quot;#9acd32quot;> XPath <th align=quot;leftquot;>Count</th> <th align=quot;leftquot;>Brand</th> <th align=quot;leftquot;>Model</th> </tr> <xsl:for-each select=“siparisler/siparisquot;> <tr> <td> <xsl:value-of select=“adetquot;/> </td> <td> <xsl:value-of select=“markaquot;/> </td> <td> <xsl:value-of select=“modelquot;/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
  • 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
  • 39. Enumeration (Liste kısıtlaması) Elementin alabileceği değişkenleri liste halinde belirler Example: <xs:element name=“mevsimquot;> – <xs:simpleType> <xs:restriction base=quot;xs:stringquot;> <xs:enumeration value=“Yazquot;/> <xs:enumeration value=“Kışquot;/> <xs:enumeration value=“Sonbaharquot;/> <xs:enumeration value=“ lkbaharquot;/> </xs:restriction> </xs:simpleType> </xs:element>
  • 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
  • 50. Sayısal (numeric) tipler Sayısal ifadelerde aşağıdaki tipler kullanılabilir: xs:decimal xs:positiveInteger xs:byte xs:negativeInteger xs:short xs:nonPositiveInteger xs:int xs:nonNegativeInteger xs:long Sayısal ifadelerdeki kısıtlamalar: enumeration, minInclusive, maxExclusive, maxInclusive, – maxExclusive, fractionDigits, totalDigits, pattern, whiteSpace
  • 51. Örnekler XSD ve ona uygun yazılmış XML örneği Eclipse te XSD yazmak. XML e uygun şema üretmek. Validate etmek. ....vs