the following works for me too: <%@ Import Namespace="System.Xml" %> <%@ Import Namespace="System.Xml.Xsl" %> <script language="C#" runat="Server"> void Page_Load(Object o, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("3.xml")); XslTransform xsl = new XslTransform(); xsl.Load(Server.MapPath("3.xsl")); xsl.Transform(doc,null, Response.Output); } </script>
add a method in which the modification will occur, then use a Monitor or Mutext to guard against multiple entries
思归,其实我们是想实现论坛中的翻页才用到这个的,我想我有必要详述一下:3.xml存有某板块所有贴子的基本信息,如标题, 3.xsl存有显示贴子列表的xsl.我打算用XmlDocument doc = new XmlDocument();来Load(Server.MapPath("3.xml")), 根据Request.QueryString["currentPage"]算出应取哪些贴子, 然后foreach它们,用OutXml把它们都组成一string.再用doc.LoadXml(string) XslTransform xsl = new XslTransform(); xsl.Load(Server.MapPath("3.xsl")); xsl.Transform(doc,null,Response.Output,null);这样就可以显示当页贴子列表了。但多人翻页时,在此反复load 3.xml save 3.xml 就会并发。 我们又想到用XPathDocument,它可以不用load,但它又没有OutXml.我们关键是想要让多人访问时都要操作成功, 不知如何是好?多谢思归。
1. use database instead2. class YourClass { static readonly object s_o = new object(); void YourMethod() { lock(s_o) { //do file operations on your xml file } } }
<TBODY>
<TR>
<TD>
<xsl:value-of select="Web/Article/Content" disable-output-escaping="yes"/>
</TD>
</TR>
<TR>
<TD align="right">上传日期:<xsl:value-of select="Web/Article/UploadDate"/> | 发布日期:<xsl:value-of select="Web/Article/PublishDate"/></TD>
</TR>
<TR>
<TD align="right">作者:<xsl:value-of select="Web/Article/Author"/> | 编辑:<xsl:value-of select="Web/Article/Editor"/> | 翻译:<xsl:value-of select="Web/Article/Translator"/></TD>
</TR>
<TR>
<TD align="right"></TD>
</TR>
</TBODY>
</TABLE> 这是xml的主要内容:<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<?xml-stylesheet type='text/xsl' href='/Laputa/Article/Xsl/1/1.xsl'?>
<Web>
<Article>
<ArticleID>207</ArticleID> <Content><table class="text" style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" width="563"><tbody><tr><td align="center"><font class="title">红黑树</font><br /><br /><strong>[翻译] <a href="http://202.194.22.25/bbs/profile.php?mode=viewprofile&amp;u=7">zengyi820</a> 2003-07-19 </strong><hr color="#9fb0c6" size="1" /></td></tr><tr><td style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-TOP: 10px" colspan="2">id=606&amp;page=1<br /></p><a href="http://tack.smice.net/docs/images/tempp/image003.gif"></a></Content></Article></Web>
xsl.Load("3.xsl");
xsl.Transform("3.xml","33.html");
但是如果不想生成 html文件,而直接用xsl.Transform(myDoc,null,Response.Output,null);直接返回客户端就会有问题。
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<script language="C#" runat="Server">
void Page_Load(Object o, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("3.xml"));
XslTransform xsl = new XslTransform();
xsl.Load(Server.MapPath("3.xsl"));
xsl.Transform(doc,null, Response.Output);
}
</script>
(就像基于XML的论坛中有几个人同时发贴或回贴都会同时操作一个文件)是不是有什么线程排队,或其它什么方法?
思归,其实我们是想实现论坛中的翻页才用到这个的,我想我有必要详述一下:3.xml存有某板块所有贴子的基本信息,如标题,
3.xsl存有显示贴子列表的xsl.我打算用XmlDocument doc = new XmlDocument();来Load(Server.MapPath("3.xml")),
根据Request.QueryString["currentPage"]算出应取哪些贴子,
然后foreach它们,用OutXml把它们都组成一string.再用doc.LoadXml(string)
XslTransform xsl = new XslTransform();
xsl.Load(Server.MapPath("3.xsl"));
xsl.Transform(doc,null,Response.Output,null);这样就可以显示当页贴子列表了。但多人翻页时,在此反复load 3.xml save 3.xml 就会并发。
我们又想到用XPathDocument,它可以不用load,但它又没有OutXml.我们关键是想要让多人访问时都要操作成功,
不知如何是好?多谢思归。
{
static readonly object s_o = new object(); void YourMethod()
{
lock(s_o)
{
//do file operations on your xml file
}
}
}