İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır

JSP ile XML Oluşturulması

XML Dosyalarının Gösterimi

XML dokümanları taşınabilir veir içermektedir.Bu verilen herhangi bir XML dokümanının farklı tarayıcılarda çıktı için işlenmesi demektir.(PC için masaüstü tarayıcı , taşınabilir cihazlar için mikro tarayıcılar).Diğer bir deyişle bir XML dokümanı bir HTML,WML veya herhangi başka bir işaretleme diline dönüştürülebilir.

Aşağıdaki XML dokümanı stocks.xml bu yazımızda örnek teşkil edecektir.

stocks.xmlİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="UTF-8">
  2 <portfolio>
  3   <stock>
  4     <symbol>SUNW</symbol>
  5     <name>Sun Microsystems</name>
  6     <price>17.1</price>
  7   </stock>
  8   <stock>
  9     <symbol>AOL</symbol>
 10     <name>America Online</name>
 11     <price>51.05</price>
 12   </stock>
 13   <stock>
 14     <symbol>IBM</symbol>
 15     <name>International Business Machines</name>
 16     <price>116.10</price>
 17   </stock>
 18   <stock>
 19     <symbol>MOT</symbol>
 20     <name>MOTOROLA</name>
 21     <price>15.20</price>
 22   </stock>
 23 </portfolio>

XML dokümanlarını göstermenin bir yolu dokümana bir dönüştürme işlemi uygulamaktır , ya veri çıkartılır ya da yeni bir dozen oluşturulur(XML verisinin HTML e dönüştürülmesi gibi).Bu dönüştürme ,XSL in bir paröası olan XSLT gibi bir dönüştürülme dili kullanarak yapılabilir.XSL düzenleme anlamlarını belirtmek için XML dağarcığı yazmayı mümkün kılar.Yani XSL'in 2 kısmı bulunmaktadır:

Aşağıdaki örnekte verilen XSL stil sayfası stock.xsl XML örnek dokümanımızdaki portfolio elemanının dönüştürme işlemini gerçekleştirmektedir.HTML işaretlemesini oluşturarak elemanlardan bilgiyi çekmektedir.

stocks.xslİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0">
  2 
  3 <xsl:stylesheet version="1.0" xmlns:xsl=
  4 "http://www.w3.org/TR/WD-xsl">
  5 
  6 <xsl:template match="/">
  7   <html>
  8   <head>
  9   <title>Stocks</title>
 10   </head>
 11   <body bgcolor="#ffffcc" text="#0000ff">
 12     <xsl:apply-templates/>
 13   </body>
 14   </html>
 15 </xsl:template>
 16 
 17 <xsl:template match="portfolio">
 18 
 19    <table border="2" width="50%">
 20      <tr>
 21       <th>Stock Symbol</th>
 22       <th>Company Name</th>
 23       <th>Price</th>
 24      </tr>
 25      <xsl:for-each select="stock">
 26        <tr>
 27          <td>
 28            <i><xsl:value-of select=
 29            "symbol"/></i>
 30          </td>
 31        <td>
 32           <xsl:value-of select="name"/>
 33         </td>
 34        <td>
 35           <xsl:value-of select="price"/>
 36        </td>
 37 
 38         </tr>
 39       </xsl:for-each>
 40     </table>
 41   </xsl:template>
 42 
 43 </xsl:stylesheet>

Bilmeyenler için biraz karışık görünmesine rağmen XSL gösterimi incelendiğinde aslında bu dönüştürümün basit olduğu görülecektir.Aşağıdaki kurallar XSL gösterimi için geçerlidir:

Şimdi aklımıza takılan soru ise bu XSL stil sayfasını asıl xml dokümanımız ile nasıl kullanacağımızdır.Cevap oldukça basittir; xml dokümanımızdaki ilk satırı , gösterimde xml dokümanının stocks.xsl stil sayfasını kullanacak şekilde değiştirilmelidir.Yani xml dokümanının ilk satırı <?xml:stylesheet type="text/xsl" href="stocks.xsl" version="1.0" encoding="UTF-8"?> şeklinde olmalıdır.

Bu basitçe tarayıcıya stocks.xml yüklendiğinde ,verinin gösterimi için karşılık gelen stil sayfasını göstermektedir.XML ve XSL ‘ in desteklendiği bir tarayıcıya değişiklik yapılmış stocks.xml dokümanı yüklendiğinde sonuç aşağıdaki biçimde olacaktır.

JSP ‘den XML oluşturulması

JSP teknolojisi , XML dokümanlarının olulturulması için kullanılabilir.Bir JSP sayfası verilecek örnekteki gibi kodlanarak stocks.xml dokümanımızı response olarak oluşturabilir.JSP ile XML oluşturmanın önemli kuralı JSP sayfasının içeriği doğru olarak belirlemesidir.Örnekte görüleceği gibi içerik tipi text/xml olarak ayarlanmaktadır.Aynı teknik WML gibi farklı işaretleme dili oluşturmak için de kullanılabilir.

genXML.jsp

genXML.jspİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <%@ page contentType="text/xml" %>
  2 
  3 
  4 <?xml version="1.0" encoding="UTF-8"?>
  5 
  6 
  7 <portfolio>
  8   <stock>
  9     <symbol>SUNW</symbol>
 10     <name>Sun Microsystems</name>
 11     <price>17.1</price>
 12   </stock>
 13   <stock>
 14     <symbol>AOL</symbol>
 15     <name>America Online</name>
 16     <price>51.05</price>
 17   </stock>
 18   <stock>
 19     <symbol>IBM</symbol>
 20     <name>International Business
 21     Machines</name>
 22     <price>116.10</price>
 23   </stock>
 24   <stock>
 25     <symbol>MOT</symbol>
 26     <name>MOTOROLA</name>
 27     <price>15.20</price>
 28   </stock>
 29 </portfolio>

Eğer genXML.jsp sayfasını bir web sunucusundan çağırırsanız , XML dokümanının bir tarayıcıya yüklendiği ilk örnekteki gibi bir çıktıyla karşılaşacaksınız.

**** JSP ve JavaBeans kullanılarak XML Oluşturulması ****

XML için gerekli olan veri JavaBeans bileşenlerinden alınabilir.Örneğin , aşağıda verilen JavaBeans bileşeni , PortfolioBean , stok verisi ile bir bean tanımını geröekleştirmektedir.

PortfolioBean.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 ackage stocks;
  2 
  3 import java.util.*;
  4 
  5 public class PortfolioBean implements
  6 java.io.Serializable {
  7    private Vector portfolio = new Vector();
  8 
  9    public PortfolioBean() {
 10       portfolio.addElement(new Stock("SUNW",
 11        "Sun Microsystems", (float) 17.1));
 12       portfolio.addElement(new Stock("AOL",
 13        "America Online", (float) 51.05));
 14       portfolio.addElement(new Stock("IBM",
 15        "International Business Machines",
 16         (float) 116.10));
 17       portfolio.addElement(new Stock("MOT",
 18        "MOTOROLA", (float) 15.20));
 19    }
 20 
 21    public Iterator getPortfolio() {
 22       return portfolio.iterator();
 23    }
 24 }

PortfolioBean sınıfı örneklemelerini oluşturmak için Stock.class sınıfını kullanmaktadır.

Stock.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package stocks;
  2 
  3 public class Stock implements java.io.Serializable {
  4    private String symbol;
  5    private String name;
  6    private float price;
  7 
  8    public Stock(String symbol, String name,
  9     float price) {
 10       this.symbol = symbol;
 11       this.name = name;
 12       this.price = price;
 13    }
 14 
 15    public String getSymbol() {
 16       return symbol;
 17    }
 18 
 19    public String getName() {
 20       return name;
 21    }
 22 
 23    public float getPrice() {
 24       return price;
 25    }
 26 }

Şimdi PortfolioBean den gelen veri ile XML dokümanını oluşturmak için bir JSP sayfası yazabiliriz.

stocks.jspİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <%@ page contentType = "text/xml"%>
  2 <%@ page import = "stocks.*"%>
  3 
  4 <jsp:useBean id = "portfolio" class = "stocks.PortfolioBean"/>
  5 
  6 <%
  7          java.util.Iterator folio = portfolio.getPortfolio();
  8          Stock stock=null;
  9 %>
 10 
 11 <?xml version = "1.0" encoding = "UTF-8" ?>
 12          <portfolio>
 13                  <% while (folio.hasNext()) {%>
 14                           <% stock = (Stock)folio.next(); %>
 15                           <stock>
 16                                    <symbol><%= stock.getSymbol() %></symbol>
 17                                    <name><%= stock.getName() %></name>
 18                                    <price><%= stock.getPrice()%></price>
 19 
 20                           </stock>
 21                  <% } %>
 22          </portfolio>

Eğer <?xml version="1.0" encoding="UTF-8"?> satırını kullanıalcak stil sayfası ile <?xml:stylesheet type="text/xsl" href="stocks.xsl" version="1.0" encoding="UTF-8"?> şeklinde değiştirirseniz o zaman jsp sayfasından girildiği takdirde gösterim stil sayfası örneğindeki gibi olacaktır.

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonraki YokSon
Geriİleri
Yazdır