Şu anda XML belgelerinin görüntülenmesi için en yaygın yöntem XML belgesinin HTML biçimleme diline dönüştütlmesidir. Dönüştürme işlemi XSL biçimleme sayfaları (style sheets) içinde tanımlamış dönüşüm kuralları ile gerçekleştirilir. Bu kurallar şablon (template) olarak adlandırılır. Şablonlar XML belgesi içindeki eleman ve özellikleri kalıplar (pattern) ile karşılaştırarak eşleştirilir. Kalıplar Xpath spesifikasyonuna göre XML belgesinin istediğimiz kısımlarına erişmemizi sağlar. Örneğin “/” kök kalıbı bütün belgeyi adresler. “isim” kalıbı XML belgesi içinde geçen bütün isim elemanlarını ifade eder. “adressbook/contact” kalıbı adressbook elemanı altındaki contact elemanını adresler. Eşleştirilen kalıplara şablonlar uygulanarak dönüştürme işlemi gerçekleşir. Örneğin aşağıdaki XML elemanına bakalım:
XML:
<isim> Selim Akyokuş </isim>
İsim elemanını aşağıdaki HTML ifadesine dönüştürmek isteyelim.
Bu dönüştürme işlemi için aşağıdaki XSLT şablonunu kullabiliriz.
XML:
<xsl:template match=”isim”>
<H2> <xsl:value-of/> </H2>
</xsl:template>
Bu ifade bir XML belgesi içinde geçen isim elemanlarını bularak elemanın içindeki değeri <xsl:value-of/> ifadesi ile alır ve H2 etiketi içerisinde yazar.
Aşağıda sık olarak kullanılan XSLT diğer bazı şablon yapıları verilmiştir:
• Xsl:if
• Xsl:apply-templates
• Xsl:for-each
Xsl:if ifadesi şartlı eşleme işlemleri gerçekleştirilir. Örneğin aşağıdali ifade fiyat özelliği (attribute) 1000 olan ürünler için urun sablonunu uygulayacaktır.
XML:
<xsl:template match=”@fiyat=1000”>
<xsl:apply-templates select=”urun” />
</xsl:template>
Xsl:apply-templates XSL biçim sayfası içinde tanımlanmış şablonları uygulamamızı sağlar.
Xsl:for-each ifadesi bir XML belgesi içindeki elemanlara bir döngü içerisinde erişmemizi sağlar. Örneğin aşağıdaki ifade vehicles elemanı içindeki vehicle elemanlarına price elemanına göre sıralayarak erişmemizi sağlar.
XML:
<xsl:for-each order-by="+ price" select="vehicles/vehicle">
<tr>
<td><xsl:value-of select="@year"/></td>
<td><xsl:value-of select="@make"/></td>
<td><xsl:value-of select="@model"/></td>
<td><xsl:value-of select="mileage"/></td>
<td><xsl:value-of select="color"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:for-each>
ÖRN:
XML:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html><head><title>Address Book XML Example</title></head>
<body bgcolor="#FFFFFF">
<xsl:for-each select="addressbook/contact">
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="address"/>
<xsl:apply-templates select="city"/>
<xsl:apply-templates select="state"/>
<xsl:apply-templates select="zip"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template match="name">
<h2><xsl:value-of/></h2>
</xsl:template>
<xsl:template match="address">
<xsl:value-of/><br/>
</xsl:template>
<xsl:template match="city">
<xsl:value-of/>,
</xsl:template>
<xsl:template match="state">
<xsl:value-of/>
</xsl:template>
<xsl:template match="zip">
<xsl:value-of/><br/>
</xsl:template>
</xsl:stylesheet>
Adressbook.xsl biçimleme sayfası (style sheet) [4]
Adressbook.xsl biçimleme sayfasına göre adressbook.xml belgesini biçimlendirmek için aşağıdaki işlem komutunun XML belgesinin başlagıçına konulması gerekir. Internet Explorer 5.0 bu komutu kullanarak belge ile biçimleme sayfasını eşleştirir ve XML belgesinin HTML formatına dönüşümünü sağlar.
XML:
<?xml-stylesheet href="AddressBook.xsl" type="text/xsl"?>
XML belgelerinin XSL biçimleme sayfaları ile HTML’e dönüşüm işlemi isternirse Javascript kullanılarakta yapılabilir. Dönüştürme işlemi XMLDOM COM nesnesi ile yapılır. Şekil 10’da Addressbook.xml belgesini Addressbook.xsl biçimleme sayfasını kullarak HTML’e dönşümünü sağlayan Javascript kodu verilmiştir.
XML belgelerinin HTML’e dönüştürme işlemi isternirse Web sunucusu makinasınada yapılabilir. Bu yapıda sunucu tarafında XML belgeleri HTML’e dönüştürülerek tarayıcılara gönrilir. Böylece XSL’i desteklemeyen tarayıcılardada XML belgelerinin görüntülenmesi sağlanır. Şekil 11’da Addressbook.xml belgesini Addressbook.xsl biçimleme sayfasını kullarak HTML’e Web sunucusunda dönüşümünü sağlayan ASP kodu verilmiştir.
HTML:
<html> <body> <script language="javascript"> // Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("Addressbook.xml")
// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("Addressbook.xsl")
// Transform
document.write(xml.transformNode(xsl))
</script> </body> </html>
Addressbook.xml belgesini Addressbook.xsl biçimleme sayfasını kullarak HTML’e dönşümünü sağlayan Javascript kodu
asp:
<%
`Load the XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("Addressbook.xml"))
`Load the XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("Addressbook.xsl "))
Response.Write(xml.transformNode(xsl))
%>
Addressbook.xml belgesini Addressbook.xsl biçimleme sayfasını kullarak HTML’e Web sunucusunda dönşümünü sağlayan ASP kodu