Laboratuar Notları #3 - the CyberSoft Bilişim Teknolojileri Home Page

Transkript

Laboratuar Notları #3 - the CyberSoft Bilişim Teknolojileri Home Page
The European Union’s “Making the Labour Market more
Inclusive III” programme For “North Cyprus”
Upgrading Internet Technology skills
of Information and Communication
Technologies (ICT) Professionals
Module 4: Semantic Web
Modül 4: Anlamsal Ağ
Laboratuar Notları #3
A project implemented by
CyberSoft Bilişim Teknolojileri Ltd.
This project is funded by European Union. The
contents of this publication are the sole responsibility
of Cybersoft Bilişim Teknolojileri Ltd. and can in no
way be taken to reflect the views of the European
Union.
İçerik
Bölüm 3: XSL Transformasyon
1. XSLT ................................................................................................................................................ 1
2. XML Dökümanıyla Bağlantı............................................................................................................ 1
3. XSL Templates (Extensible Stylesheet Language) .......................................................................... 3
3.1. XSL’de Template Kullanımı ..................................................................................................... 3
3.2. <xsl:value-of> Elementi............................................................................................................ 4
3.3. <xsl:for-each> Elementi............................................................................................................ 5
4.
5.
6.
7.
XSL Sort........................................................................................................................................... 6
XSL Filter Sorgulaması .................................................................................................................... 7
XSL’de IF Koşulu ............................................................................................................................ 8
XSL’de Choose Koşulu.................................................................................................................... 9
ÇALIŞMA ........................................................................................................................................ 10
1. XSL – Transformasyon (XSLT)
Dökümanın bir XSL stytlesheet olduğunu gösteren kök element
<xsl:stylesheet> veya<xsl:transform>.
Note: <xsl:stylesheet> ve <xsl:transform> tamamen aynıdır. İstediğinizi kullanabilirsiniz!!!!
Bir XSL dosyasının W3C XSLT göre tanımlanması şu şekilde olmalıdır:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
a.
XML Dökümanıyla Başlangıç:
XML dökümanıyla HTML içindeki istediğiniz transformasyon sağlanır: Örneğin XML dökümanımız
(cdcatalog.xml) aşağıdaki gibi olsun:
<?xml version="1.0" encoding="UTF-8"?>
<KATALOG>
<CD>
<BASLIK>Empire Burlesque</BASLIK>
<SANATCI>Bob Dylan</SANATCI>
<ULKE>USA</ULKE>
<FIRMA>Columbia</FIRMA>
<FIYAT>10.90</FIYAT>
<YIL>1985</YIL>
</CD>
<CD>
<BASLIK>Greatest Hits</BASLIK>
<SANATCI>Dolly Parton</SANATCI>
<ULKE>USA</ULKE>
<FIRMA>RCA</FIRMA>
<FIYAT>9.90</FIYAT>
<YIL>1982</YIL>
</CD>
<CD>
<BASLIK>Hide your heart</BASLIK>
<SANATCI>Bonnie Tyler</SANATCI>
<ULKE>UK</ULKE>
<FIRMA>CBS Records</FIRMA>
<FIYAT>10.90</FIYAT>
<YIL>1988</YIL>
</CD>
<CD>
<BASLIK>Still got the blues</BASLIK>
<SANATCI>Gary Moore</SANATCI>
<ULKE>UK</ULKE>
<FIRMA>Virgin Records</FIRMA>
<FIYAT>10.20</FIYAT>
<YIL>1985</YIL>
</CD>
<CD>
<BASLIK>Eros</BASLIK>
<SANATCI>Eros Ramazzotti</SANATCI>
<ULKE>EU</ULKE>
<FIRMA>BMG</FIRMA>
<FIYAT>9.90</FIYAT>
<YIL>1997</YIL>
</CD>
</KATALOG>
1
b.
Bir XSL Dökümanının Yaratılması :
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WDxsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>BASLIK</th>
<th>SANATCI</th>
</tr>
<xsl:for-each select="KATALOG/CD">
<tr>
<td><xsl:value-of select="Baslik"/></td>
<td><xsl:value-of select="Sanatci"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Eğer İnternet Explorer 5 ve üzerini kullanıyorsanız, bu XSL dökümanın browserdaki çıktısı aşağıdaki gibi
olacaktır.
2
2.
XML Dökümanıyla Bağlantı:
XSL Style Sheet'i XML dökümanının içine şu şekilde aktarılır.
<?xml-stylesheet type="text/xsl"href="ornek1.xsl"?> satırı eklenir.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="ornek1.xsl"?>
<KATALOG>
<CD>
<BASLIK>Empire Burlesque</BASLIK>
<SANATCI>Bob Dylan</SANATCI>
<ULKE>USA</ULKE>
<FIRMA>Columbia</FIRMA>
<FIYAT>10.90</FIYAT>
<YIL>1985</YIL>
</CD>
.
.
.
Eğer İnternet Exlporer gib bir XSL browserına sahipseniz , XSL dökümanı içeren XML çıktısı aşağıdaki gibi olur.
3. XSL - Templates
3.1 XSL 'de Template Kullanımı
Aşağıda Katalog CD si için kullandığımız ornek1.xsl dökümanında yarattığımız basit bir template görülüyor:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="1">
3
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<tr>
<td>.</td>
<td>.</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Burdaki XSL dökümanı için XML dökümanına transforme ettiğimizde aşağıdaki görüntü elde edilir.
Baslik
Sanatci
.
.
3.2 <xsl:value-of> Elementi
XSL'de <xsl:value-of> elementi seçilmiş XML elementlerinin içinde XML dökümanı arasında
transformasyonu sağlamak için kullanılır.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<tr>
<td><xsl:value-of select="KATALOG/CD/BASLIK"/></td>
<td><xsl:value-of select="KATALOG/CD/SANATCI"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Not: Burada "/" işareti alt folderlara ulaşmak için kullanılır.
Bu XSL template'i ile aşağıdaki XML çıktısı elde edilir:
4
3.3 <xsl:for-each> Elementi
Bir önceki örnekte XML dökümanından tek bir satır getirdi karşımıza.
XSL <xsl:for-each> elementi her bir XML elementi için kullanılmaktadır.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WDxsl">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<xsl:for-each select="KATALOG/CD">
<tr>
<td><xsl:value-of select="BASLIK"/></td>
<td><xsl:value-of select="SANATCI"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Böylece aşağıdaki gibi her bir XML elementi çağırılarak sonuç elde edilir:
4.
XSL Sort:
XML dökümanlarının HTML içinde sıralamasını yapmak için xsl kullanılır.
<xsl:for-each select="KATALOG/CD" order-by="+ SANATCI">
kodu ile Sanatçıları alfabetik sıraya göre sıralama imkanımız olur. Burda (+) baştan sonra, (-) ise sondan başa
doğru sıralamamızı sağlar.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
5
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<xsl:for-each select="KATALOG/CD"
order-by="+ SANATCI">
<tr>
<td><xsl:value-of select="BASLIK"/></td>
<td><xsl:value-of select="SANATCI"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Yukarıdaki XSL kullanılarak oluşan XML çıktımız aşağıdaki gibidir.
5.
XSL Filter Sorgulaması:
XML dökümanının filtrelemek basit filterlar kullanılabilir. Örneğin:
<xsl:for-each select="KATALOG/CD[SANATCI='Eros Ramazzotti']">
Geçerli filter opetaratörleri :
!= (not equal)
&lt; less than
&gt; greater than
Aşağıda filter kullanılmış XSL dökümanı görülmektedir:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
6
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<xsl:for-each select="KATALOG/CD[SANATCI='Eros Ramazzotti']">
<tr>
<td>
<xsl:value-of select="BASLIK"/>
</td>
<td>
<xsl:value-of select="SANATCI"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
6. XSL' de IF KOŞULU
Aşağıdaki gibi bir if koşuluyla istenilen bilgi gösterilir.
<xsl:if match=".[SANATCI='Bob Dylan']">
... aradegerler ...
</xsl:if>
Örneğin:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
7
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<xsl:for-each select="KATALOG/CD">
<xsl:if match=".[SANATCI='Bob Dylan']">
<tr>
<td><xsl:value-of select="BASLIK"/></td>
<td><xsl:value-of select="SANATCI"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
7. XSL'de Choose Koşulu:
Choose komutuyla istenilen bir XML dökümanındaki bilgi farklı bir şekilde gösterilebilir:
<xsl:choose>
<xsl:when match=".[SANATCI='Bob Dylan']">
... arakodlar ...
</xsl:when>
<xsl:otherwise>
... arakodlar ....
</xsl:otherwise>
</xsl:choose>
Örneğin XSL'miz aşağıdaki gibi olsun:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Baslik</th>
<th>Sanatci</th>
</tr>
<xsl:for-each select="KATALOG/CD">
<tr>
<td><xsl:value-of select="BASLIK"/></td>
<xsl:choose>
<xsl:when match=".[SANATCI='Bob Dylan']">
8
<td bgcolor="#ff0000">
<xsl:value-of select="SANATCI"/>
</td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="SANATCI"/></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Html'deki browser çıktısı ise aşağıdaki gibi olur.
ÇALIŞMA:
Aşağıda verilen courses_students.xml dosyası öğrenciler, dersler ve öğrencilerin aldığı dersler hakkında bilgi içermektedir.
Bu dosyayı temel olarak kullanarak aşağıdaki işlemleri yapınız:
1.
2.
Dosyayı en az 5 öğrenci ve 4 ders bilgisi olacak şekilde genişletiniz. Aynı zamanda her öğrenci 3 ders almalıdır.
XML dosyasını HTML dökümanına dönüştürecek XSLT stylesheet yaratınız. Yaratılan HTML dosyası şu şekilde
olmalıdır:
o Bütün dersleri bir tabloda listeleyin. Tablo course code, course name, description sütünlarını
içermelidir.
o Bütün öğrencileri bir tabloda listeleyiniz. Tablo student ID, Name, sex, date of birth sütünlarını
içermelidir.
o Toplam öğrenci sayısını ekrana yazdırınız.
o Toplam ders sayısını ekrana yazdırınız.
o Bütün öğrencileri name’ine göre sıralayınız. Mesela, örnek çıktı şu şekilde olmalıdır:
Courses Taken By Students:
1.
2.
Ayse Ozer
a. CMPE351 Database systems I
b. CMPE111 Introduction to C
Bircan Korkmaz
a. CMPE418 Internet Programming
9
b.
CMPE111 Introduction to C
<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type = "text/xsl" href = "transformStudents.xsl"?>
<school>
<student studentID="123">
<dateOfBirth> 1-1-1990 </dateOfBirth>
<name> Ayse Ozer </name>
<sex> F </sex>
<takes> CMPE351 </takes>
<takes> CMPE111 </takes>
</student>
<student studentID="456">
<dateOfBirth> 2-2-1992 </dateOfBirth>
<name> Bircan Korkmaz </name>
<sex> F </sex>
<takes> CMPE418 </takes>
<takes> CMPE111 </takes>
</student>
<course courseCode="CMPE351">
<courseName>
Database systems I
</courseName>
<description>
First course in databases
</description>
</course>
<course courseCode="CMPE111">
<courseName>
Introduction to C
</courseName>
<description>
First course in programming
</description>
</course>
<course courseCode="CMPE352">
<courseName>
Database systems II
</courseName>
<description>
Second course in databases
</description>
</course>
<course courseCode="CMPE418">
<courseName>
Internet Programming
</courseName>
<description>
Programming for the Internet.
</description>
</course>
</school>
10

Benzer belgeler