books.xml:
<?xml version="1.0" encoding="utf-8"?>
<!--<?xml-stylesheet type="text/xsl" href="books.xslt"?>-->
<library>
<name>首都图书馆</name>
<address>朝阳区华威桥南</address>
<books>
<book type="math">
<id>0000</id>
</book>
<book type="computer">
<id>0001</id>
<name>Xml初学</name>
<publisher>人民出版社</publisher>
<fee>100.54</fee>
</book>
<book type="computer">
<id>0002</id>
<name>XSD定义</name>
<author>子弟</author>
<publisher>子弟出版社</publisher>
<publishdate>2010-05-0-18</publishdate>
<fee>102.54</fee>
</book>
</books>
</library>
books.xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:template match="/">
<html>
<body>
<form method="post" action="Default.aspx">
<h2>书籍编写</h2>
<table border="0">
<xsl:for-each select="library/books/book">
<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="name" />
</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>
booksout.xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:template match="/">
<html>
<body>
<form>
<h2>书籍编写</h2>
<table border="0">
<xsl:for-each select="library/books/book">
<tr>
<td>
<xsl:value-of select="id"/>
</td>
<td>
<xsl:value-of select="name"/>
</td>
</tr>
</xsl:for-each>
</table>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Request.Form["btn_sub"]))
{
XLST();
}
else
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("htmlxml/books.xml"));
for (int i = 0; i < Request.Form.Count; i++)
{
if (Request.Form.Keys[i].IndexOf("btn_") < 0)
{
XmlNode node= doc.SelectSingleNode("library/books/book[id='" + Request.Form.Keys[i] + "']/name");
if (node != null)
{ node.FirstChild.Value = Request.Form[i]; }
}
}
doc.Save(Server.MapPath("htmlxml/books.xml"));
XLST();
}
}
public void XLST()
{
XmlReader xmlreader = XmlReader.Create(Server.MapPath("htmlxml/books.xml"));
XmlReader xsltreader = XmlReader.Create(Server.MapPath("htmlxml/books.xslt"));
StringBuilder sb = new StringBuilder();
try
{
XslCompiledTransform xlst = new XslCompiledTransform();
xlst.Load(xsltreader);
XPathDocument doc = new XPathDocument(xmlreader);
System.IO.StringWriter sw = new System.IO.StringWriter(sb);
XmlTextWriter writer = new XmlTextWriter(sw);
xlst.Transform(doc, writer);
writer.Close();
Response.Write(sb.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
结果:
书籍编写
0000 | |
0001 | |
0002 |