XML etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
XML etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Cuma, Temmuz 18, 2008

XML (Extensible Mark-up Language)

XML’e Giriş

XML (Extensible Markup Language), W3C (Worl Wide Web Consortium) tarafından geliştirilen bir kaynak hazırlama standartıdır.
XML aslında SGML (Standart Generalized Markup Language) adlı daha geniş ve kapsamlı bir standardın alt kümesi sayılabilir. 1980’den beri var olan SGML çok kapsamlı ve karmaşık yapısıyla bazı zorluklar içeriyordu. XML bu karmaşayı mümkün olduğunca azaltmak ve uygulama kolaylığı sağlamak amacıyla geliştirildi.
XML bir dil olmaktan çok bir dil tanımlama aracıdır. Bu standartı kullanarak kendi dilinizi üretebilir, kendi kurallarınızı koyabilirsiniz.
HTML ile XML aynı şey değildir. HTML’in önceden belirlenmiş kuralları vardır ve HTML ile yazılan bir döküman bu kurallara uymak zorundadır. Mesela <BODY> ve <HEAD> gibi imler HTML’de önceden tanımlıdırlar; bunları değiştiremezsiniz. Fakat XML’de imleri siz tanımlarsınız. Bu sayede <BuyukBaslik>, <KucukBaslik>gibi imler tanımlamanız mümkün olabilir.
XML dokümanlarında elemanlar aşağıdaki gibi yazılırlar:

<Paragraf>
Bu ilk paragraf
</Paragraf>

Yukarıdaki eleman iki im’in arasına yazılmıştır. ˙Imler <ve > sembolleri arasında yazılırlar. Bir im’in etki alanını bitirmek, bir başka deyişle bir im’i kapatmak için / sembolü kullanılır.
Elemanlara bazı özellikler atanabilir.

<Para kur="dolar">34.25</Para>

Bu örnekte <Para>adlı imin kuradlı bir özelliği olduğu anlaşılıyor. XML’de boş elemanlar tanımlanabilir. Buna örnek vermek gerekirse;

<Resim kaynak="/home/user/resim.gif"></Resim>

veya

<Resim kaynak="/home/user/resim.gif"/>

XML’in bazı kurallarından bahsedelim:

· Elemanların özellikleri her zaman tırnak işaretleri içerisinde tanımlanmak zorundadır.

        <Yazi tip="italik">Maslak</Yazi>

· Boş elemanlar hariç bütün elemanlar açma ve kapama imleri arasına yazılmak zorundadır. Bu kurala göre aşağıdaki satırlar XML kurallarına uygun değildir.

·         <Paragraf>Ilk paragraf
·         <Paragraf>Ikinci Paragraf
·         Doğrusu şöyle olmak zorundaydı
·         <Paragraf>Ilk paragraf</Paragraf>
·         <Paragraf>Ikinci Paragraf</Paragraf>

· Içiçe geçen imler doğru yapılmalıdır. Bu kurala göre aşağıdaki tanımlama yanlıştır.

·         <Kalin><italik>Bu satır yanlış</Kalin></italik>

Doğrusu şöyle olmalıydı

<Kalin><italik>Bu satır do¸gru</italik></Kalin>

Yukarıdaki 3 kural XML kullanıcılarının en yaygın olarak çiğnedikleri kurallardır.

Bunun kaynağı ise HTML kullanma alışkanlığıdır. Tarayıcı (Browser) üreticilerinin yazım hatalarını mümkün olduğunca tolere edebilme kaygısı yüzünden kurallara uygun olmayan HTML dökümanları sanaldoku üzerinde sorunsuz yayımlanabilmektedir. Ancak bu kaygı, beraberinde karmaşık yazılımları gerektirdiği için tarayıcıların dökümanları işleme hızlarında dikkate değer bir düşüş yaşanmaktadır.

Bir XML dökümanı sözkonusu olduğunda 3 önemli dosya gündeme gelir.

· XML kaynak dökümanı

· stylesheet’ denilen, dökümanın herhangi bir yayım aracında nasıl gör üneceğini belirleyen dosya .

· XML kaynağının kurallarının yazıldığı DTD adlı dosya. DTD (Document Type Definition) dosyası XML dosyası içinde kullandığınız imlerin tanımlarının yapıldığı dosyadır .

örnek

<?xml version="1.0" standalone="no"?>
<!DOCTYPE Dunya:Turkiye SYSTEM "sample.dtd">
<!-- XML dokumani burada basliyor -->
<Dunya:Turkiye xmlns:Dunya='http://www.Dunya.com/'>
<Dunya:Insanlar>Duygu Caglar</Dunya:Insanlar>
<Dunya:Yas>21</Dunya:Yas>
</Dunya:Turkiye>

Ilk satırda <?xml ve ?> arasında kalan kısım temel tanımların yapıldığı yerdir. versionXML dökümanının versiyonunu belirtir. standaloneseçeneği XML dökümanının dışarıdan verilecek bir DTD dosyasına ihtiyacının olup olmadığını belirler. standalone=”no” buyruğu dökümanın kendisini tanımlayabilmesi için bir DTD’ye ihtiyac duyduğunu söyler. Bu örnekte ihtiyaç duyulan dosyanın sample.dtdadlı dosya olduğu ayrıca belirtiliyor. Aslında DTD ve stylesheet dosyalarını XML dökümanının içine gömmek mümkündür. Ama genelde tercih edilen bir yöntem değildir .

<!DOCTYPE Dunya:Turkiye SYSTEM "sample.dtd">

satırı dökümanın kök elemanını ve kök elemanı içerisinde yazılacak bütüm imlerin tanımlarının yer aldığı DTD dosyasını belirler. Bizim örneğimizde dökümanın kök elemanı Dunya:Turkiye adlı elemandır. SYSTEM anahtar sözc üğü ise DTD dosyasının ayrı bir yerel dosya içerisinde bulunduğunu belirtir.

<!-- ve -->sembolleri içerisinde yer alan bütün cümleler yorum olarak algılanır ve XML yorumlayıcıları tarafından ihmal edilir. Son olarak Dunya:Turkiye,Dunya:Insanlarve Dunya:Yas imlerini kullandık. C¸ oğu XML imi gibi bunlar da kendilerini tanımlayan DTD'ler olmadan anlamsızlardır. Bu imler görüldüğü gibi iki parçadan oluşmaktadır.

Parçalar arasında : sembolü kullanılmış. Bunun sebebi im adlarını seçerken alanadı kullanmamızdır: sembolünün sol tarafı alanadı'nı, sağ tarafı ise imin kendisini ifade eder

Alanadı kullanımı XML dünyasında yeni kullanılmaya başlamıştır. Kabaca im tanımlarının karışmaması için tasarlanmıştır. Örnek vermek gerekirse; Dunya:Turkiye yerine Turkiye imini kullansaydık ve başka bir yayıncı da Turkiye imini kullansaydı, iki üreticinin ürettikleri dökümanları ortak olarak 6 kullanmaları mümkün olamazdı. Alanadları xmlnsanahtar sözcüğü ile belirtilir.

Eşsizlik sağlası amacıyla alanadları olarak genellikle sanaldoku yörelerinin adları kullanılır. Bizim verdiğimiz örnekte http://www.Dunya.com alanadı olarak kullanılmış. Alanadı olarak sanaldoku sayfalarını kullanmanın bir diğer faydası ise kullanılan XML dökümanı ile ilgili dosyaların herkes tarafından bilinen bir yere konulabilmesine imkan tanımasıdır. Buraya XML’i tanımlayan DTD dosyaları konulabileceği gibi, bazı stylesheet dosyalarıda konulabilir. Son olarak eklenmesi gereken bir nokta ise şudur; ilerleyen zamanlarda tarayıcıların XML programlarını istenilen ölçüde tanımaları durumunda ilgili dökümanlar on-line olarak işlenebilecektir. Tarayıcı bir XML dökümanı ile karşılaştığında onu tanımlayan DTD’yi ilgili yerden çekecek ve varsa stylesheet dosyasını kullanarak görüntüleyecektir.

DTD (Document TypeDefinition)

Bu bölümde DTD kavramını kabaca bir örnek üzerinden anlatmaya çalışaca ğız. Örnek DTD dosyası aşağıda verilmiştir.

<!-- Örnek bir DTD dosyası -->
<!ELEMENT Dunya:Turkiye (Dunya:Insanlar, Dunya:Yas)>
<!ELEMENT Dunya:Insanlar (#PCDATA)>
<!ELEMENT Dunya:Yas (#PCDATA)>

Bu DTD dosyasının amacı bir önceki bölümde yazdığımız XML kaynağını tanımlamaktır. <!ELEMENT buyruğu XML dökümanı içerisinde kullanılan büt ün imleri tanımlamak için kullanılır. Dunya:Insanlar ve Dunya:Yas imleri Dunya:Turkiye iminin içerisinde ve belirlenen sıra ile kullanılmak zorundadır .

Bu iki im’e Dunya:Turkiye iminin çocukları denir.

Dunya:Insanlar ve Dunya:Yas imlerinin tanımlarında ise #PCDATA sözcüğü kullanılmıştır (PCDATA=’Parsed Character Data’). Bunun anlamı Dunya:Insanlar ve Dunya:Yas imleri arasında < ve & hariç bütün karakter veya karakter kümesini kullanabilirsiniz. Mesela <Dunya:Insanlar>Dunya Turkiye</Dunya:Insanlar> satırı doğru bir XML satırıdır .

XSL (Extensible Stylesheet Language)

Yazdığımız DTD ile XML dökümanını tanımlamış olduk. Bu çerçeve içinde elimizdeki dökümana doğru tanımlanmıştır (valid) diyebiliriz. Ancak dök ümanın görüntülenişi hakkında hiçbirşey yapmadık. Bu iş için stylesheet kullanmamız gerekecek. Stylesheet olarak şu an yaygın olarak kullanılan CSS (Cascading Style Sheet) aracını kullanabilirsiniz. CSS daha çok HTML dökümanlarını biçimlendirmek için kullanılmakla birlikte XML’i de desteklemektedir.

Biçimlendirme için kullanılabilecek ikinci bir araç ise XSL (Extensible StyleSheet Language) adı verilen ve kendinize özgü stylesheet kodları oluşturabilmenize olanak sağlayan dildir. XML kullanmamızın sebebi yanlızca sanaldoku olmadığı için biz XSL kullanmayı tercih edeceğiz. Bu bölümde XSL kavramını kabaca bir örnek üzerinden anlatmaya çalışacağız. Örnek XSL dosyası aşağıda verilmiştir.

<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns:fo="http://www.w3.org/TR/WD-xsl/FO">
<xsl:template match="/">
<fo:block font-size="18pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
</xsl:stylesheet>

Bu örnekte dikkati çeken ilk şey bir XSL dosyasının aynı zamanda düzgün tanımlı bir XML dökümanı olmasıdır. XML dökümanını biçimlendirecek buyruklar <xsl:stylesheet> ve </xsl:stylesheet> imleri arasında yer alırlar. Genel olarak bakıldığında XML dökümanı içerisinde yer alan imlerin formatları <xsl:template> ve </xsl:template> imleri arasında tanımlanır.

<xsl:template match="/">

Yukarıdaki satır, / ile belirtilen im için bir şekil tanımlar. /sembolü kök elemana karşılık gelir. Bizim örneğimizde kök eleman Dunya:Turkiye idi. Bizim XSL örneğimize göre kök elemanı içerisindeki yazıların font büyüklükleri 18pt olmak zorunda.

Bu XSL dosyasını XSL yorumlayıcılarından birinden geçirirsek XML dosyasının görüntüsünü elde edebiliriz.

Bir XML dökümanının doğru olması için gereken şartlar:

· Bir XML dökümanı ya DTD kullanmalı ya da dökümanın başında <?xml version="1.0" standalone="no"?> deklerasyonu yer almalıdır.

· Elemanların bütün özellikleri çift tırnaklar içinde belirtilmelidir.

· Bütün elemanlar açma ve kapama imleri arasında yazılmalıdırlar.

· Boş bir im kullanılacaksa im’in bitiminden önce \ işareti kullanılmalıdır.

·         <Resim kaynak="duygu.jpg"/>

Bazı XML buyrukları

<?xml...?>
<?xml version="number"
[encoding="encoding"]
[standalone="yes[no]"] ?>

version XML dökümanının versiyonu gösterir ve kesinlikle yazılması gerekir. encoding Kullanılacak karakter kümesini belirtir US-ASCII, iso-8859-1 gibi. standalone Eğer ’no’ ise, dökümanı tanımlayan bir DTD belirtmek zorunludur. Bunun için <!DOCTYPE> buyruğu kullanılır.

<!DOCTYPE>
<!DOCTYPE root-element SYSTEM|PUBLIC
["name"] "URI_of_DTD">

Bu buyruk XML dökümanını tanımlayan DTD kaynağını belirtmek için kullanılır. İki şekilde kullanılılabilir.

<!DOCTYPE root-element SYSTEM "URI_of_DTD">
<!DOCTYPE root-element PUBLIC "name" "URI_of_DTD">

SYSTEM DTD dökümanının yerini belirtir.

<!DOCTYPE <Book>
SYSTEM "http://www.domain.com/dtd/mydoctype.dtd">

PUBLIC Eğer kullanılan DTD çok büyük bir yaygınlık kazandı ise özel bir isimlendirme şeması kullanılır. XML işlemcisi bu tanımı gördüğü zaman ilgili DTD kaynağını sistemde kayıtlı olduğu yerlerden bulmaya çalışacaktır. Eğer ilgili dosyayı bulamaz ise SYSTEM buyruğu ile tanımlanmış DTD’yi kullanacaktır.

<!DOCTYPE <Book> PUBLIC
"-//Dunya/DTD/EN"
"http://www.Dunya.com/dtd/xmlbk.dtd">
<![CDATA[...]]>

XML dilinde özel anlamları bulunan karakterleri özel anlamları haricinde kullanmaya yarar. ’...’ ile belirtilen yere yazılan herşey XML işlemcisi tarafından salt metin olarak algılanacaktır

<![CDATA[
Burada XML dilinde özel anlamları bulunan karakterleri
bir problem olmadan rahatça kullanabiliyorum. Meselâ
<?xml version="3.145678"?> yazmam bir hata mesajı
üretmeyecektir.
]]>
<!--....-->

XML dokümanı içerisine bazı açıklamalar veya yorumlar yazabilmemizi sağlar.

XML’e Has Özelikler

xml:lang
xml:lang="iso_639_identifier>

xml:lang özeliği bütün elemanlar için kullanılabilir. Elemanın hangi dilde yazıldığını belirtmek için kullanılır.

<Paragraf xml:lang="en">Hello</Paragraf>
<Paragraf xml:lang="fr">Bonjour</Paragraf>

xml:space

xml:space="default|preserve"

Elemanın içerisinde yer alan boşluk veya tab karakterlerinin dikkate alınıp alınmamsını belirler. Eğer ’preserve’ seçeneği kullanılırsa boş ve tab karakterleri dikkate alınacaktır.

xml:link
xml:link="link_türü

Elemanın bir link olduğunu belirtmek için kullanılır.

Özel Karakterler

XML’de özel manaları bulunan karakterleri ifade edebilmek için değişik bir metod kullanılır. XML’de yaygın olarak kullanılan 5 özel karakter şöyle gösterilir.

· & &

· < <

· > >

· " "

· ' '

Kolaylıkla görüleceği gibi özel karakterleri ifade etmek için & ve ; işaretleri beraber kullanılır.

DTD ˙Içinde Eleman Tanımları

XML dökümanı içerisinde kullandığınız elemanların tanımlarını DTD dosyaları içerisinde yapmak zorunluluğu vardır. Bunun için şu kalıp kullanılır.

<ELEMENT eleman_ismi kural>

Eleman isminin içerisinde < ve > karakterleri olmamalıdır. Eleman isimleri karakter veya _ sembolü ile başlamalıdır. Ayrıca eleman isimleri xml ile başlamamlıdır. Bu son kurala uyulmaması aslında ciddi bir probleme yol açmayabilir. Ancak xml sözcüğü ile başlayan ve XML yapısı içerisinde özel anlamları olan bir takım imler bulunmaktadır. Bu imlerde çakışma olasılığı bulunduğundan ötürü bu kısıtlamaya uyulması çok yerinde olacaktır.

111 ANY ve PCDATA 222 En basit eleman tanımı ANY buyruğu ile yapılır.

<!ELEMENTkutuphaneANY>

’ANY’ sözcüğü ile <kutuphane> ve </kutuphane> imleri arasında herhangi bir karakterin veya karakter katarının veya başka imlerin bulunabilmesi sağlanır. Eğer iki im arasında sadece özel bir takım karakterlerin tanımlanması isteniyorsa ’PCDATA’ anahtar sözcüğü kullanılır.

<!ELEMENTkutuphane(#PCDATA)>

Bu buyruk ile <kutuphane> ve </kutuphane> imleri arasında eleman isimleri hariç diğer karakterlerin yer alabileceği belirtilir. Bir örnek vermek gerekirse

<kutuphane>KTU Kütüphanesi</kutuphane>
<kutuphane></kutuphane>

kullanımları doğru olduğu halde

<kutuphane>
<universite>KTU</universite>
Kütüuphanesi
</kutuphane>

kullanımı yanlıştır.

Bununla beraber bir elemanın içerisinde başka elemanların bulunma zorunlulu ğu şu şekilde belirtilir.

<!ELEMENT Insan (Baslik>>
<!ELEMENT Baslik (#PCDATA>>
Yukarıdaki örnekte Insan imi içerisinde Baslik imi bulunmak zorundadır.
15
<!ELEMENT Insan (Baslik, Tarih)>
<!ELEMENT Baslik (#Baslik)>
<!ELEMENT Tarih (#Tarih)>

Yukarıdaki örnekte ’Insan’ im’i içerisinde ’Baslik’ ve ’Tarih’ imleri olmak zorundadır ve belirtilen sıraya uymak zorundadır.

<!ELEMENT Insan (Baslik|Tarih)>
<!ELEMENT Baslik (#Baslik)>
<!ELEMENT Tarih (#Tarih)>

Yukarıdaki örnekte ’Insan’ im’i içerisinde ’Baslik’ veya ’Tarih’ imlerinden birisi olmak zorundadır. Ancak ikisi birden bulunamaz.

Gruplama ve Yineleme

Imlerin XML dökümanı içerisinde yer alma sırasını belirlemek mümkündür.

<!ELEMENT Insanlar ((baslik, yazar)| aciklama)>
<!ELEMENT baslik (#PCDATA)>
<!ELEMENT yazar (#PCDATA)>
<!ELEMENT aciklama (#PCDATA)>

Yukarıdaki örnekte ’Insanlar’ im’i içerisinde ya ’aciklama’ im’i olmak zorundadır ya da ’baslik’ ve ’yazar’ im’i ardarda olmak zorundadır. Ayrıca bu imlerin kaçar defa yer alabileceğini belirleyebilirsiniz.

? Ya bir kere, ya hiç
+ En az bir kere
* Bir çok kere veya hiç
<!ELEMENT yazar (yazarismi+)>
<!ELEMENT yazarismi (#PCDATA)>

Yukarıdaki örnekte ’yazar’ im’i içerisinde ’yazarismi’ im’i ya bir kere yer alacaktır veya hiç kullanmayacaktır. Buna benzer fakat daha karmaşık tanımlamalar yapmak mümkündür .

Boş İmler

XML dökümanı içerisinde yer alan boş elemalar ayrıca tanımlanmak zorundadır.

<!ELEMENT elemanismi EMPTY>
Entities

<I>General Entities</I>

Bir karakter kümesi için makro tanımlamak için kullanılır.

<!ENTITY isim "karsilik">

<, >, &, 've " karakterleri i»cin gereken tanımlamalarıkendi DTD dökümanınız içerisinde yapmak zorunda değilsiniz. Bunlar XML işlemcisi tarafından önceden yapılmıştır. Copyright sembolu için bir makro tanımı aşağıdaki gibi yapılabilir. Bu sembolün Unicode karşılığı 169 (Hexadecimal 0xA9) ’dur.

<!ENTITY copyright "&#xA9;">

<I>Parameter Entities</I>

Bir önceki gibi makrolar tanımlamak için kullanılır ancak tanımlanan makrolar sadece DTD içinde kullanılmak içindir. Bu şekilde tanımlanan bütün makro isimlerinin başına % sembolü konulur. Bu sembol makronun sadece DTD içerisinde kullanılabileceğini gösterir.

<!ENTITY % isim "karsilik">

<I>External Entities</I>

Dısarıdan yapılan linkler için kullanılır.

<!ENTITY alinti SYSTEM
"http://www.Dunya.com/stocks/quoates.xml">

Eğer ‘alinti’ adli makro, XML dökümanı içerisinde kullanılacak olursa, işaret edilen URL’den yani http://www.Dunya.com/stocks/quoates.xml adresinden içerik alınacak ve XML dökümanı içerisine gömülecektir.

Örnekler

Örnek 1

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE Insan SYSTEM "file:///bilisim/duygu/doc/xml/prog01.dtd">

<Insan>Beginning XML</Insan>

<!ELEMENT Insan (#PCDATA)>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<xsl:value-of select="."/>

</xsl:template>

</xsl:stylesheet>

Örnek 2

<?xml version="1.0" standalone="no"?>

<!DOCTYPE Insan SYSTEM "file:///bilisim/Duygu/doc/xml/prog02.dtd">

<Insan> Insan

<Baslik>Duygu Caglar XML</Baslik>

</Insan>

<!ELEMENT Insan (Baslik)>

<!ELEMENT Baslik (#PCDATA)>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<xsl:value-of select="."/>

</xsl:template>

<xsl:template match="Baslik">

<xsl:value-of select="."/>

</xsl:template>

</xsl:stylesheet>

Örnek 3

<?xml version="1.0" standalone="no"?>

<!DOCTYPE Kisi SYSTEM "file:///bilisim/Duygu/doc/xml/prog03.dtd">

<Kisi> Duygu Caglar </Kisi>

<!ELEMENT Kisi (#PCDATA)>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<HTML>

<xsl:value-of select="."/>

</HTML>

</xsl:template>

</xsl:stylesheet>

Örnek 4

<?xml version="1.0" standalone="no"?>

<!DOCTYPE Insan SYSTEM "file:///bilisim/Duygu/doc/xml/prog04.dtd">

<Insan>

<Baslik>System Duygu Caglar</Baslik>

</Insan>

<!ELEMENT Insan (Baslik, Konu)>

<!ELEMENT Baslik (#PCDATA)>

<!ELEMENT Konu (#PCDATA)>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<HTML>

<xsl:value-of select="."/>

</HTML>

</xsl:template>

</xsl:stylesheet>

Örnek 5

<?xml version="1.0" standalone="no"?>

<!DOCTYPE Insan SYSTEM "file:///bilisim/Duygu/doc/xml/prog05.dtd">

<Insan>

<Baslik>Duygu Caglar</Baslik>

</Insan>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

20

<xsl:template match="/">

<HTML>

<xsl:apply-templates/>

</HTML>

</xsl:template>

<xsl:template match="Baslik">

<HEAD>

<xsl:value-of select="."/>

</HEAD>

</xsl:template>

</xsl:stylesheet>

Örnek 6

<?xml version="1.0" standalone="no"?>

<!DOCTYPE Insan SYSTEM "file:///bilisim/Duygu/doc/xml/prog06.dtd">

<Insan>

<Baslik>System Duygu Caglar</Baslik>

<Konu>System Yonetici Nitelikleri</Konu>

</Insan>

<!ELEMENT Insan (Baslik, Konu)>

<!ELEMENT Baslik (#PCDATA)>

<!ELEMENT Konu (#PCDATA)>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<HTML>

<xsl:apply-templates/>

</HTML>

</xsl:template>

21

<xsl:template match="Baslik">

<HEAD>

<xsl:value-of select="."/>

</HEAD>

</xsl:template>

<xsl:template match="Konu">

<P>

<xsl:value-of select="."/>

</P>

</xsl:template>

</xsl:stylesheet>