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

XML Transformation

XSL Transformer

Java'da XSL kullanarak bir XML document'ini başka bir formata dönüştürmek için Transformer interface'i kullanılır. Tıpku DocumentBuilder gibi, Transformer da TransformerFactory gibi başka class'lar kullanılarak dolaylı yoldan yaratılır.

    TransformerFactory factory=TransformerFactory.newInstance();
    Transformer transformer=factory.newTransformer(....);

Ancak bu kez, Transformer yaratılırken XSL belgesi parametre olarak verilir. Parametre de bir string, file veya URL olarak değil Source interface'i olarak verilir.

    TransformerFactory factory=TransformerFactory.newInstance();
    String xsl="C:\\Lessons\\ExamTest.xsl";
    Source style=new StreamSource(xsl);
    Transformer transformer=factory.newTransformer(style);

Source StreamSource (stream, file veya URL) olabileceği gibi DOMSource (Document nesnesinden) veya SAXSource (SAX Inputu) olabilir.

Transformer elde ettikten sonra bu interface'in transform() method'unu kullanrak XML HTML'e (veya başka bir formata) dönüştürülebilir. Bu method XML'i Source (örneğin StreamSource) alınır. Paralel bir biçimde sonuç olarak üretliecek HTML de Result (örneğin StreamResult) olarak verilir.

    Source data=new StreamSource(xml);
    Result output=new StreamResult(html);
    transformer.transform(data,output);

Bu örnekte kullanılan XML :

ExamTest.xmlİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="ISO-8859-9">
  2 <exam id="math-3">
  3 	<title>Matematik Dersi 2. Ara Sınavı </title>
  4 	<question number="1">
  5 		<text>İki kere iki iki kaç eder?</text>
  6 		<option id="a">22</option>
  7 		<option id="b">3</option>
  8 		<option id="c">4</option>
  9 		<option id="d">5</option>	
 10 	</question>
 11 	<question number="2">
 12 		<text>Kendimi kendimden çıkarsam kaç kalır?</text>
 13 		<option id="a">1</option>
 14 		<option id="b">2</option>
 15 		<option id="c">0</option>
 16 		<option id="d">FD</option>	
 17 	</question>
 18 </exam>

XSL :

ExamTest.xslİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="ISO-8859-9"> 
  2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3 <xsl:template match="/exam">
  4 	<h3><xsl:value-of select="@id"/> : <xsl:value-of select="title"/></h3>
  5 	<xsl:apply-templates select="question"/>
  6 </xsl:template>
  7 <xsl:template match="question">
  8 	<h4> Soru <xsl:value-of select="@number"/> </h4>
  9 	<i> <xsl:value-of select="text"/> </i>
 10 	<xsl:for-each select="option">		
 11 		<br/><b> <xsl:value-of select="@id"/> </b> ) <xsl:value-of select="."/>	
 12 	</xsl:for-each>
 13 </xsl:template>
 14 </xsl:stylesheet>

HTML

ExamTest.htmlİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 <h3>math-3 : Matematik Dersi 2. Ara SInavı</h3><h4> Soru 1</h4><i>İki kere iki iki kaç eder?</i><br/><b>a</b> ) 22<br/><b>b</b> ) 3<br/><b>c</b> ) 4<br/><b>d</b> ) 5<h4> Soru 2</h4><i>Kendimi kendimden çıkarsam kaç kalir?</i><br/><b>a</b> ) 1<br/><b>b</b> ) 2<br/><b>c</b> ) 0<br/><b>d</b> ) FD

Java :

XmlTransformerTest.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 import javax.xml.transform.*;
  2 import javax.xml.transform.stream.*;
  3 public class XmlTransformerTest {
  4   public static void main(String[] args)
  5       throws Exception
  6   {
  7     String xml="C:\\Lessons\\ExamTest.xml";
  8     String xsl="C:\\Lessons\\ExamTest.xsl";
  9     String html="C:\\Lessons\\ExamTest.html";
 10     TransformerFactory factory=TransformerFactory.newInstance();
 11     Source style=new StreamSource(xsl);
 12     Transformer transformer=factory.newTransformer(style);
 13     Source data=new StreamSource(xml);
 14     Result output=new StreamResult(html);
 15     transformer.transform(data,output);
 16   }
 17 }

Dosya Listesi

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