XSLT dapat digunakan untuk mengubah dokumen menjadi XHTML pada browser kita.
Section Artikel
Sebelumnya kita membahas cara XSLT digunakan untuk mengubah dokumen dari XML ke XHTML, caranya adalah dengan cara menambahkan style sheet XSL ke file XML dan membiarkan browser melakukan transformasi.
Meskipun hal ini berfungsi dengan baik, tetapi hal ini tidak selalu diinginkan untuk menyertakan referensi style sheet dalam file XML (misalnya, tidak akan berfungsi di browser yang tidak mendukung XSLT.)
Solusi yang lebih serbaguna adalah menggunakan JavaScript untuk melakukan transformasi.
Dengan menggunakan JavaScript, kita dapat:
Itulah keindahan XSLT! Salah satu tujuan desain XSLT adalah memungkinkan untuk mengubah data dari satu format ke format lain, mendukung browser yang berbeda dan kebutuhan pengguna yang berbeda.
Contoh :
XML :
<?xml version="1.0" encoding="UTF-8"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> . . </catalog>
Tambahkan style sheet XSL :
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th style="text-align:left">Title</th> <th style="text-align:left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title" /></td> <td><xsl:value-of select="artist" /></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
Output :
Perhatikan bahwa file XML tidak memiliki referensi ke file XSL.
PENTING: Kalimat di atas menunjukkan bahwa file XML dapat diubah menggunakan banyak style sheet XSL yang berbeda.
Berikut adalah kode sumber yang diperlukan untuk mengubah file XML menjadi XHTML di klien:
Contoh :
<!DOCTYPE html> <html> <head> <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 xhttp.send(""); return xhttp.responseXML; } function displayResult() { xml = loadXMLDoc("cdcatalog.xml"); xsl = loadXMLDoc("cdcatalog_client.xsl"); // code for IE if (window.ActiveXObject || xhttp.responseType == "msxml-document") { ex = xml.transformNode(xsl); document.getElementById("example").innerHTML = ex; } // code for Chrome, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); resultDocument = xsltProcessor.transformToFragment(xml, document); document.getElementById("example").appendChild(resultDocument); } } </script> </head> <body onload="displayResult()"> <div id="example" /> </body> </html>
Output :
Fungsi loadXMLDoc()
melakukan hal berikut:
Fungsi displayResult()
digunakan untuk menampilkan file XML yang diberi gaya oleh file XSL
transformNode()
untuk menerapkan style sheet XSL ke dokumen xmltransformToFragment()
untuk menerapkan lembar gaya XSL ke dokumen xml