एक्सएसएलटी - क्लाइंट पर
XSLT का उपयोग आपके ब्राउज़र में दस्तावेज़ को XHTML में बदलने के लिए किया जा सकता है।
एक जावास्क्रिप्ट समाधान
पिछले अध्यायों में हमने बताया है कि कैसे XSLT का उपयोग किसी दस्तावेज़ को XML से XHTML में बदलने के लिए किया जा सकता है। हमने एक्सएमएल फाइल में एक्सएसएल स्टाइल शीट जोड़कर ऐसा किया और ब्राउज़र को ट्रांसफॉर्मेशन करने दिया।यहां तक कि अगर यह ठीक काम करता है, तो एक्सएमएल फ़ाइल में स्टाइल शीट संदर्भ शामिल करना हमेशा वांछनीय नहीं होता है (उदाहरण के लिए यह एक गैर एक्सएसएलटी जागरूक ब्राउज़र में काम नहीं करेगा।)
परिवर्तन करने के लिए जावास्क्रिप्ट का उपयोग करना एक अधिक बहुमुखी समाधान होगा।
जावास्क्रिप्ट का उपयोग करके, हम यह कर सकते हैं:
- ब्राउज़र-विशिष्ट परीक्षण करें
- ब्राउज़र और उपयोगकर्ता की जरूरतों के अनुसार अलग-अलग स्टाइल शीट का उपयोग करें
यही है एक्सएसएलटी की खूबसूरती! XSLT के लिए डिज़ाइन लक्ष्यों में से एक डेटा को एक प्रारूप से दूसरे प्रारूप में बदलना, विभिन्न ब्राउज़रों और विभिन्न उपयोगकर्ता आवश्यकताओं का समर्थन करना संभव बनाना था।
एक्सएमएल फाइल और एक्सएसएल फाइल
पिछले अध्यायों में आपने जो 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>
और साथ में एक्सएसएल स्टाइल शीट:
<?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>
ध्यान दें कि XML फ़ाइल में XSL फ़ाइल का संदर्भ नहीं है।
महत्वपूर्ण: उपरोक्त वाक्य इंगित करता है कि एक एक्सएमएल फ़ाइल को कई अलग-अलग एक्सएसएल स्टाइल शीट्स का उपयोग करके परिवर्तित किया जा सकता है।
ब्राउज़र में एक्सएमएल को एक्सएचटीएमएल में बदलना
क्लाइंट पर एक्सएमएल फ़ाइल को एक्सएचटीएमएल में बदलने के लिए आवश्यक स्रोत कोड यहां दिया गया है:
उदाहरण
<!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.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>
युक्ति: यदि आप नहीं जानते कि जावास्क्रिप्ट कैसे लिखना है, तो कृपया हमारे जावास्क्रिप्ट ट्यूटोरियल का अध्ययन करें ।
उदाहरण समझाया:
loadXMLDoc () फ़ंक्शन निम्न कार्य करता है:
- XMLHttpRequest ऑब्जेक्ट बनाएं
- सर्वर को अनुरोध भेजने के लिए XMLHttpRequest ऑब्जेक्ट के खुले () और भेजें () विधियों का उपयोग करें
- प्रतिक्रिया डेटा को XML डेटा के रूप में प्राप्त करें
DisplayResult () फ़ंक्शन का उपयोग XSL फ़ाइल द्वारा स्टाइल की गई XML फ़ाइल को प्रदर्शित करने के लिए किया जाता है:
- एक्सएमएल और एक्सएसएल फाइलें लोड करें
- परीक्षण करें कि उपयोगकर्ता के पास किस प्रकार का ब्राउज़र है
- अगर इंटरनेट एक्सप्लोरर:
- XSL स्टाइल शीट को xml दस्तावेज़ में लागू करने के लिए ट्रांसफ़ॉर्मनोड () विधि का उपयोग करें
- मौजूदा दस्तावेज़ का मुख्य भाग सेट करें (id="example") स्टाइल वाले xml दस्तावेज़ को समाहित करने के लिए
- यदि अन्य ब्राउज़र:
- एक नया XSLTProcessor ऑब्जेक्ट बनाएं और उसमें XSL फ़ाइल आयात करें
- XSL स्टाइल शीट को xml दस्तावेज़ पर लागू करने के लिए ट्रांसफ़ॉर्मटॉफ़्रेगमेंट () विधि का उपयोग करें
- मौजूदा दस्तावेज़ का मुख्य भाग सेट करें (id="example") स्टाइल वाले xml दस्तावेज़ को समाहित करने के लिए