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

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

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

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

हम XSL का उपयोग करके XML दस्तावेज को एक HTML फॉर्म में बदलेंगे. XML एलीमेंट के मूल्य एचटीएमएल फॉर्म के इनपुट डोमेन में लिखे जाएंगे. यह फॉर्म संपादित किया जा सकता है। संपादित करने के बाद, डाटा सर्वर पर जमा कर दिया जाएगा और 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>

एक्सएसएल फ़ाइल देखें.

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

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

<?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>

एक्सएसएल फ़ाइल देखें.

एएसपी फ़ाइल

उपर "टूल.एक्सएसएल" फ़ाइल में, एचटीएमएल फॉर्म की action अटिब्यूट का मान "एडिटटूल.एसपी" है。

एडिटटूल.एसपी वेब पृष्ठ में दो फ़ंक्शन हैं: 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 विधि एक क्वेरी के मेल होने वाले एक एकल नोड को खोज सकती है
   यह क्वेरी value एलेमेंट की अनुरोध करेगी, यह 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
‘यदि फॉर्म जमा किया गया है तो एक्सएमएल फ़ाइल को अद्यतन करें और परिणामों को दिखाएं, अगर नहीं तो इस एक्सएमएल फ़ाइल को संपादित करने के लिए ट्रांसफॉर्म करें’
if Request.Form("btn_sub")="" then
loadFile server.MapPath("tool.xml"),server.MapPath("tool.xsl")
else
updateFile server.MapPath("tool.xml")
end if
%>

सूचना:अगर आप एएसपी लिखना नहीं जानते, तो हमारेएएसपी ट्यूटोरियल》。

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