XSLT - 编辑 XML

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 డాటాను ప్రదర్శించడానికి ఉపయోగించబడుతుంది. ఈ స్టైల్ షీట్ ఏదైనా సవరించగలిగిన HTML ఫారమ్ను విడుదల చేయదు, బదులుగా స్టాటిక్ HTML పట్టికను ఉపయోగిస్తుంది:

<?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() XML ఫైల్ని లోడ్ మరియు మార్పిడి చేయడానికి, updateFile() ఫంక్షన్ XML ఫైల్ని నవీకరించడానికి ఉపయోగిస్తారు:

<%
function loadFile(xmlfile,xslfile)
Dim xmlDoc,xslDoc
ఎక్సీఎమ్ఎల్ ఫైల్ని లోడ్ చేయండి
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
ఎక్సీఎమ్ఎల్ ఫైల్ని లోడ్ చేయండి
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(xmlfile)
rootEl అంతర్భాగాన్ని సెట్ చేయండి
Set rootEl = xmlDoc.documentElement
ఫార్మ్ కోస్ట్ ప్రసంగించిన కొలతను చూపించండి
for i = 1 To Request.Form.Count
   ఫార్మ్ లోని బటన్ అంతర్భాగాన్ని తొలగించండి
   if instr(1,Request.Form.Key(i),"btn_")=0 then
   selectSingleNode మాధ్యమం అనుసరించిన క్వరీని అనుసరించే సింగిల్ నోడ్ ను తెలుసుకోవడానికి ఉపయోగిస్తారు
   ఈ క్వరీ విలువ అంతర్భాగంలో విలువ అంతర్భాగాన్ని అనుసరిస్తుంది
   ఈ ఫీల్డ్ అంతర్భాగంలో ఫార్మ్ కోస్ట్ ప్రసంగించిన కీ విలువను సరిపోలే ఐడి అంతర్భాగం కలిగి ఉంటుంది
   అనుగుణంగా పెట్టినప్పుడు టెక్స్ట్ అంతర్భాగాన్ని ఫార్మ్ కోస్ట్ ప్రసంగించిన విలువను అంగీకరించండి
   set f = rootEl.selectSingleNode("field[@id='" & _
   Request.Form.Key(i) & "/value")
   f.Text = Request.Form(i)
   end if
next
సవరించబడిన ఎక్సీఎమ్ఎల్ ఫైల్ని సేవ్ చేయండి
xmlDoc.save xmlfile
అన్ని ఆబ్జెక్ట్ రిఫరెన్సులను వదిలించండి
set xmlDoc=nothing
set rootEl=nothing
set f=nothing
స్టైల్‌షీట్ ద్వారా సవరించబడిన ఎక్సీఎమ్ఎల్ ఫైల్ని లోడ్ చేయండి, ఇది క్లయింట్కు సవరించబడిన సమాచారాన్ని చూపిస్తుంది
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
%>

提示:假如您不了解如何编写 ASP,请学习我们的《ASP 教程》。

注释:我们正在转换并更新位于服务器上的 XML 文件。这是一个跨平台的解决方案。客户端仅能获得从服务器返回的 HTML - 而 HTML 可运行于任何浏览器。