Metruk Root Admin
Mesaj Sayısı : 351 Kayıt tarihi : 02/04/10 Yaş : 33
| Konu: İnternette XML Kullanmak Salı Nis. 06, 2010 3:07 pm | |
| İnternet uygulamaları için xml kullanıldığında, istemci ve sunucu taraflarında programlama yapmak mümkün olmaktadır. Tabii bunu sağlayan şey xml’nin kendisi değil, onu yorumlayan ve işleyen bileşenlerdir. Sunucu ve istemci tarafında MSXML kitaplığındaki ActiveX bileşenleri kullanılabilmektedir. Ayrıca istemci tarafında belgelerin biçimlendirilip görüntülenmesini sağlayan DOM gibi altyapılar sözkonusudur. İNTERNET SİTELERİNDE XML KULLANMAK İnternet sitelerinde xml belgelerini kullanmanın görüntüleme açısından çeşitli avantajları vardır. Tabii bu avantajların kaynağı sihirli bir xml dünyası değil, belge paylaşımı ve gösterimi konusunda altyapı geliştiricilerin xml’yi genel olarak kabul etmiş olmalarıdır. Ortada her işi yapan sihirli bir değnek olmadığına göre sunucu tarafında veya istemci tarafında xml kullanmak için çeşitli araç ve yöntemlere başvurmak gerekir. XML belgelerinin internet siteleri için kullanılması aşağıdaki şekillerde olabilir: - Sunucu tarafında bilgi saklamak veya almak için, karmaşık ya da düz bir veritabanı tablosu olarak xml belgesi kullanmak. - Özelleşmiş sayfalar üretmek için sunucu veya istemci tarafında şablon belgesi olarak xml dosyası kullanmak. - Sunucu tarafında yalnızca veri gönderme amaçlı olarak xml belgesi yayınlamak. - İstemci tarafında xml biçimindeki veri topluluğunu sunucu tarafına göndermek. - XML belgelerinin uygunluğunu denetlemek ve birtakım öndeğerler sağlamak için şema belgeleri kullanmak. Bir internet sitesinde birbirine bağlı xml ve xsl belgelerinin birlikte yayınlanması, biçimlendirme işleminin istemci tarafında yapılacağı anlamına geliyor. İstemci, sayfayı görmek için xml belgesine ulaşmaya çalıştığında, bağlı xsl belgesini de bir taraftan yükler. Hatta xsl belgesinin yüklenmesi daha önceliklidir, zira xml’deki veriler yüklendikçe biçimlendirme devam etmelidir. Önce [Linkleri görebilmek için üye olun veya giriş yapın.] belgesini açmayı deneyin ve sonra sayfa kodunu görüntüleyin. [Resimleri görebilmek için üye olun veya giriş yapın.]Belgenin gözatıcıda html sayfalarından farksız görüntülenmesinin nedeni, belgeye bağlanmış bir xsl belgesinin de yüklenip, biçimlendirmek için şablon olarak kullanılmasıdır. Sizin bunun farkına varmanıza bile gerek yoktur. Kursumuzun müdavimleri bu işin nasıl yürütüldüğünü zaten bilmekteler. Bilmeyenler için aşağıdaki tanımlama bilgisinin xml belgesine yerleştirilmesinin yeterli olduğunu söyleyelim. <?xml-stylesheet type="text/xsl" href="kitaplar.xsl"?> Kitaplar.xml belgemiz aşağıdaki gibi başlıyor: <?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="kitaplar.xsl"?><KITAPLAR> <KITAP SAYFA="350"> <KOD>1</KOD> ... ...ŞABLONLAR XML ile HTML’yi kıyaslamak doğru değildir. Karşılaştırma yapmak gerekiyorsa HTML+CSS ve XML+XSL ikililerini birlikte karşılaştırmak gerekir. Bir XSL belgesi farklı XML belgeleri için şablon olarak kullanılabilir. Aynı zamanda bir XML belgesi için farklı XSL belgeleri kullanılıp, aynı verinin farklı görünümlerini içeren sayfalar elde edilebilir. Üyeler için özelleştirilmiş sayfaların görüntülendiği internet siteleri için bunlar kolaylaştırıcıdır. Üyenin kişiselleştirdiği kendi ana sayfası yalnızca belirli şablonlarla kısıtlı kalmaz, tamamen üyenin kendisine özgü şablonlar üretilebilir. Tabii ki bu şablonlara ait metinler veritabanında ya da dosya halinde saklanabilir. XSL belgelerini şablon olarak kullanmak için temelde iki yol vardır. Ya XSL belgesinin içeriği HTML kalıplarıyla örülüp doğrudan görüntülenir ya da genel HTML ya da ASP belgesi içinde XSL ve XML işlenip sonuç yansıtılır. Bunların örneklerini kursumuzda şimdiye kadar devamsızlık yapmamış okuyucularımız görmüştür. Daha önce yayınladığımız kitap listesi uygulamalarının birinde başlangıç sayfası HTML biçiminde idi ve ekteki XML ve XSL belgeleri bu sayfa içinde işlenip sonuç metni HTML içindeki bir bölgeye yazdırılıyordu. <script language="vbscript">dim xmlbelge, xslbelgeset xmlbelge=CreateObject("MSXML2.DomDocument.4.0")set xslbelge=CreateObject("MSXML2.DomDocument.4.0")xml belge.async=falsexslbelge.async=falsexmlbelge.load "kitaplar.xml"xslbelge.load "kitaplar.xsl"bölge_adını_yazın.innerhtml= xmlbelge.transformnode(xslbelge)</script>Bazı durumlarda ise daha yukarıda bahsettiğimiz gibi XSL belgesinin yolunu XML içinde belirterek biçimlendirme yapmıştık. Tabii iki durum için açılış dosyalarının farklı ayarlanması gerektiğini belirtelim. Bu ne demek? XML içinde XSL adı belirtildiğinde başlangıç dosyası XML olur. Yani biçimlendirilmiş çıktıyı görmeniz için XML dosyasını doğrudan çağırmalısınız. Yukarıdaki kod ise başlangıç sayfası olarak HTM (dosya biçimi olarak HTML ile farkı yok) çağrıldığında işe yarar. Sayfa tasarımları için XSL kullanmak istediğinizde her iki yöntemi de uygulamanız gerekebilir. XSL İLE BİÇİMLENDİRMEK Biçimlendirmek için XML ile birlikte salt XSL kullanıldığında karmaşık sayfalar hazırlamak mümkündür. Ama XSL ve XML ikilisini başka bir yerden kullanmak biraz daha serbestlik sağlar. Yukarıdaki kodda Load ile yükleme yaptıktan sonra şablon metninde her türlü değişiklik yapılabilir. Kitap listemiz için sıralama alanı olarak KITAPADI yerine başkasını kullanmak istediğinizde gerekli müdahaleleri bu esnada yapmalısınız. XML içeriğini biçimlendirmek için yalnızca XSL kullanıldığında aşağıdaki yol izlenir. Ya internet gözatıcıda HTML biçiminde doğrudan görüntüleme yapılacak, ya da biçimlendirildikten sonra yayınlanacak bir çıktı oluşturulacaktır. Önce sizde zaten var olan kitaplar.xml dosyasının içeriğini anımsayın. kitaplar1.xm<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="kitaplar1.xsl"?><KITAPLAR> <KITAP SAYFA="350"> <KOD>1</KOD> <KITAPADI>Stratejik İttifak</KITAPADI> <YAZAR>Alptekin Dursunoğlu</YAZAR> <YAYINEVI>Anka</YAYINEVI> </KITAP> <KITAP SAYFA="300"> <KOD>2</KOD> <KITAPADI>Kılıç Yarası Gibi</KITAPADI> <YAZAR>Ahmet Altan</YAZAR> <YAYINEVI>Can</YAYINEVI> </KITAP> ... ...</KITAPLAR><?xml-stylesheet .. ?> satırı XML belgesinin gözatıcıda doğrudan açılacağı durumlar için gereklidir. Bu ifade HRef ile belirtilen dosyanın şablon olarak kullanılacağını gösterir. Zaten biz de bunu istiyoruz. (Aslında biçimlendirme işlemi dışarıda yapıldığında, aynı xsl dosyasının yolunu ayrıca bildirmek her zaman gerekmeyecektir.) kitapla1.xsl<?xml version="1.0" encoding="ISO-8859-9"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="/"> <xsl:apply-templates select="/KITAPLAR/KITAP"> <xsl:sort select="KITAPADI"/> </xsl:apply-templates></xsl:template><xsl:template match="/KITAPLAR/KITAP"> <xsl:value-of select="position()"/>. <xsl:value-of select="KITAPADI"/>, </xsl:template></xsl:stylesheet>İçeriği üstte verilen XSL belgesini kullanarak kitapların adını ve sırasını listeliyoruz. [Resimleri görebilmek için üye olun veya giriş yapın.]Görüntüdeki gerçekten biçimlendirilmiş bir metne mi ait? XSL sayfa biçimlendirme dili olduğuna göre ürettiği herhangi bir şey biçimlendirilmiş bir çıktıdan başkası değildir. XSL ile her türlü düz metinler, HTML içerikleri, ikili veriler hatta yeni XML içerikleri dahi üretilebilir. Kitaplar1.xsl ile yalnızca düz bir metin elde ettik. Sonucu canlı görmek için kitaplr1.xm dosyasını açmayı deneyin. Resimde gözatıcının başlığında dosyanın konumunun yazılı olduğuna dikkat edin. Bu belgede yer almasa da hemen her türlü HTML içeriği kurallara uymak şartıyla XSL içine eklenebilir. Bu durumda belgeyi tam bir HTML’ye dönüştürüp başlık (head/title) bilgisi verilmelidir. Bir xsl belgesinin çıktısını html ile tam uyumlu yapmak mümkündür. Ana döngüye karşılık gelen ilk template bloğuna gerekli öğe ve etiketleri yerleştirmek gerekir. <?xml version="1.0" encoding="ISO-8859-9"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="/"><!-- Genel görünüm burada başlıyor --><html><head> <title>Kitaplar.xml</title> </head><body bgcolor="#FFFFFF"> <h1>Kitaplar</h1> ... <xsl:apply-templates select="/KITAPLAR/KITAP"> <xsl:sort select="KITAPADI" data-type="text" /> </xsl:apply-templates> ...</body></html><!-- Genel görünüm burada bitti --></xsl:template>......Bu şekilde oluşacak çıktı tam anlamıyla html verisi olacaktır. [Resimleri görebilmek için üye olun veya giriş yapın.] | |
|