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>Tool Information (edit):</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>Updated Tool Information:</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

'¼ÓÔØ 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 ·½·¨¿É²éѯƥÅäij¸ö²éѯµÄ XML ÎļþÖеÄij¸öµ¥Ò»½Úµã¡£
   '´Ë²éѯ»áÇëÇó 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

'Èç¹û±íµ¥Òѱ»Ìá½»£¬Ôò¸üÐÂ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£¬ÇëѧϰÎÒÃǵġ¶ASP ½Ì³Ì¡·¡£

×¢ÊÍ£ºÎÒÃÇÕýÔÚת»»²¢¸üÐÂλÓÚ·þÎñÆ÷É쵀 XML Îļþ¡£ÕâÊÇÒ»¸ö¿çƽ̨µÄ½â¾ö·½°¸¡£¿Í»§¶Ë½öÄÜ»ñµÃ´Ó·þÎñÆ÷·µ»ØµÄ HTML - ¶ø HTML ¿ÉÔËÐÐÓÚÈκÎä¯ÀÀÆ÷¡£

VUE