एक्सएसएलटी - एक्सएमएल संपादित करना

XML फ़ाइल में संग्रहीत डाटा इंटरनेट ब्राउज़र के द्वारा संपादित किया जा सकता है.

XML खोलना, संपादित करना और सहेजना

अब, हम आपको दिखाएंगे कि कैसे सर्वर पर संग्रहीत XML फ़ाइल को खोलें, संपादित करें और सहेजें.

हम XSL का उपयोग करके XML दस्तावेज को HTML फॉर्म में बदलेंगे. XML एलिमेंट के मूल्यों को HTML फॉर्म में HTML इनपुट क्षेत्र में लिखा जाएगा. यह फॉर्म संपादित किया जा सकता है. संपादन के बाद, डाटा सर्वर पर भेजा जाएगा, XML फ़ाइल अद्यतन हो जाएगी (इसका काम ASP करेगा).

XML फ़ाइल और XSL फ़ाइल

पहले, इसे इस्तेमाल करने वाले XML दस्तावेज़ ("tool.xml") को देखें:

<?xml version="1.0" encoding="ISO-8859-1"?>
<tool>
  <field id="prodName">
    <value>HAMMER HG2606</value> 
  </field>
  <field id="prodNo">
    <value>32456240</value> 
  </field>
  <field id="price">
    <value>$30.00</value> 
  </field>
</tool>

XML फ़ाइल देखें.

इसके बाद, नीचे दिए शैली पट्टी ("tool.xsl") को देखें:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:template match="/">
<html>
<body>
<form method="post" action="edittool.asp">
<h2>टूल इन्फ़ॉर्मेशन (संपादित करें):</h2>
<table border="0">
<xsl:for-each select="tool/field">
<tr>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<input type="text">
<xsl:attribute name="id">
  <xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="name">
  <xsl:value-of select="@id" />
</xsl:attribute>
<xsl:attribute name="value">
  <xsl:value-of select="value" />
</xsl:attribute>
</input> 
</td>
</tr>
</xsl:for-each>
</table>
<br />
<input type="submit" id="btn_sub" name="btn_sub" value="Submit" />
<input type="reset" id="btn_res" name="btn_res" value="Reset" />
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

XSL फ़ाइल को देखें.

इस XSL फ़ाइल ने XML फ़ाइल के एलिमेंट को लूप में परिभ्रमण करेगा और हर XML "field" एलिमेंट के लिए एक इनपुट डोम बनाएगा।field एलिमेंट के id अट्रिब्यूट के मान को हर HTML इनपुट डोम के id और name अट्रिब्यूट में जोड़ा जाएगा।"value" एलिमेंट के मान को हर HTML इनपुट डोम के "value" अट्रिब्यूट में जोड़ा जाएगा।नतीजा में, XML फ़ाइल के मानों को संपादित करने वाले HTML फॉर्म प्राप्त होता है。

तब, हमारे पास दूसरा स्टाइलशीट भी है: "tool_updated.xsl". इस XSL फ़ाइल को अद्यतन एक्सएमएल डाटा दिखाने के लिए इस्तेमाल किया जाएगा. यह स्टाइलशीट एक एक्सिबल हैंडल है और एक स्टैटिक एचटीएमएल टेबल नहीं उत्पन्न करता:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:template match="/">
<html>
<body>
<h2>अद्यतन टूल सूचना:</h2>
<table border="1">
<xsl:for-each select="tool/field">
<tr>
<td><xsl:value-of select="@id" /></td>
<td><xsl:value-of select="value" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

XSL फ़ाइल को देखें.

ASP फ़ाइल

इस "tool.xsl" फ़ाइल में, HTML फॉर्म के action अटिब्यूट का मान "edittool.asp" है。

"edittool.asp" पृष्ठ में दो फ़ंक्शन हैं: loadFile() एक्सएमएल फ़ाइल को लोड करता है और ट्रांसफॉर्म करता है, updateFile() फ़ंक्शन एक्सएमएल फ़ाइल को अद्यतन करता है:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
XML फ़ाइल को लोड करें
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
XSL फ़ाइल को लोड करें
set xslDoc = Server.CreateObject("Microsoft.XMLDOM")
xslDoc.async = false
xslDoc.load(xslfile)
फ़ाइल को ट्रांसफॉर्म करें
Response.Write(xmlDoc.transformNode(xslDoc))
end function
function updateFile(xmlfile)
Dim xmlDoc,rootEl,f
Dim i
XML फ़ाइल को लोड करें
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
rootEl वेरियेबल को रूट एलीमेंट सेट करें
Set rootEl = xmlDoc.documentElement
form सेट को परिभ्रमण करें
for i = 1 To Request.Form.Count
   फॉर्म में बटन एलीमेंट को हटाएं
   if instr(1,Request.Form.Key(i),"btn_")=0 then
   selectSingleNode विधि XML फ़ाइल में किसी विशिष्ट क्वेरी के मेल करने वाले एक एकल नोड को खोज सकती है
   यह क्वेरी value एलीमेंट को अनुरोध करेगी, जो field एलीमेंट का उप-एलीमेंट है
   और इस field एलीमेंट के पास फॉर्म सेट के मौजूदा key मूल्य के साथ मेल खाता id अटिब्यूट है
   यदि मेल खाता है तो text अटिब्यूट को फॉर्म सेट के मौजूदा क्षेत्र के मूल्य सेट करें
   set f = rootEl.selectSingleNode("field[@id='" & _
   Request.Form.Key(i) & "/value")
   f.Text = Request.Form(i)
   end if
next
संशोधित XML फ़ाइल को सहेजें
xmlDoc.save xmlfile
सभी ऑब्जैक्ट रेफरेंस रिलीज़ करें
set xmlDoc=nothing
set rootEl=nothing
set f=nothing
स्टाइलशीट के माध्यम से संशोधित XML फ़ाइल को लोड करें, इस प्रकार क्लायंट को संपादित की गई जानकारी दिखाई जाएगी
loadFile xmlfile,server.MapPath("tool_updated.xsl")
end function
यदि फॉर्म सबमिट किया गया है तो XML फ़ाइल को अपडेट करें और परिणाम दिखाएं, अगर नहीं तो इस XML फ़ाइल को संपादित करने के लिए ट्रांसफॉर्म करें
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

सूचना:अगर आप एसपी लिखना नहीं जानते, तो हमारेASP शिक्षा}}

टिप्पणी:हम सर्वर पर स्थित XML फ़ाइलों को बदल रहे हैं और अपडेट कर रहे हैं।यह एक प्लेटफॉर्म निरपेक्ष समाधान है।क्लायंट केवल सर्वर से वापस प्राप्त होने वाले HTML को प्राप्त कर सकता है - जो किसी भी ब्राउज़र में चल सकता है。