xslt文件
<?xml version="1.0" encoding="UTF-8" ?>
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
<xsl:template march="/">
 <html>
   <head>留言</head>
   <body>
    
   </body>
 </html>
</xsl:template><xsl:template march="usermessage">
  <xsl:apply-templates select="guest"></xsl:apply-templates>
</xsl:template><xsl:template march="guest">
  <tr><td>
  <xsl:value-of select='.'></xsl:value-of>
  </td></tr>
  <tr><td>
  <xsl:value-of select="useremail"></xsl:value-of>
  </td></tr>
  <tr><td>
  <xsl:value-of select="usermessage"></xsl:value-of>
  </td></tr>
</xsl:template>
</stylesheet>
xml文件<?xml version="1.0" encoding="utf-8" ?> 
<usermessage>
        
        <guest>
        <username>Sapphire</username>
        <useremaile>test</useremaile>
        <usermessage>test</message>
        </guest>
        
        <guest>
        <username>Sapphire</username>
        <useremaile>test</useremaile>
        <usermessage>test</message>
        </guest>
        
</usermessage>page_load的代码 XmlDocument xdoc = new XmlDocument();
xdoc.Load( Server.MapPath( "Message.xml" )); // 创建一个XslTransform对象并导入XSL文件
XslTransform xslt = new XslTransform();
xslt.Load( Server.MapPath( "Message.xslt" )); //string xmlQuery = "//usermessage";
XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes( "guestbook" ); MemoryStream ms = new MemoryStream();
xslt.Transform( xdoc, null, ms,null );
ms.Seek( 0, SeekOrigin.Begin ); StreamReader sr = new StreamReader( ms ); // 显示输出结果
Response.Write( sr.ReadToEnd() );

解决方案 »

  1.   

    首先你的XML文件就有问题:<usermessage>test</message>
    这个节点的开,闭不对称:改为:<usermessage>test</usermessage>
      

  2.   

    XSL错误:1、因为其中有中文,encoding="UTF-8" 改为 encoding="GB2312"2、因为你用了xsl前缀,所以必须先说明
      xmlns="http://www.w3.org/1999/XSL/Transform"  改为:
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      

  3.   

    xml:
    <?xml version="1.0" encoding="gb2312" ?> 
    <usermessage>
            
            <guest>
            <username>test</username>
            <useremail>test</useremail>
            <message>test</message>
            </guest>
            
            <guest>
            <username>test</username>
            <useremail>test</useremail>
            <message>test</message>
            </guest>
            
    </usermessage>xslt:
    <?xml version="1.0" encoding="gb2312" ?>
    <stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
     <html>
       <head>留言</head>
       <body>
        <table>
         <xsl:apply-templates></xsl:apply-templates>
        </table>
       </body>
     </html>
    </xsl:template><xsl:template match="usermessage">
      <xsl:apply-templates select="guest"></xsl:apply-templates>
    </xsl:template><xsl:template match="guest">
      <tr><td>
      <xsl:value-of select="username"></xsl:value-of>
      </td></tr>
      <tr><td>
      <xsl:value-of select="useremail"></xsl:value-of>
      </td></tr>
      <tr><td>
      <xsl:value-of select="message"></xsl:value-of>
      </td></tr>
    </xsl:template>
    </stylesheet>page_load():
       XmlDocument xdoc = new XmlDocument();
       xdoc.Load( Server.MapPath( "Message.xml" ));  // 创建一个XslTransform对象并导入XSL文件
       XslTransform xslt = new XslTransform();
       xslt.Load( Server.MapPath( "Message.xslt" ));   string xmlQuery = "//usermessage";
       XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes(xmlQuery);    MemoryStream ms = new MemoryStream();
        xslt.Transform( xdoc, null, ms,null );
         ms.Seek( 0, SeekOrigin.Begin );    StreamReader sr = new StreamReader( ms ); // 显示输出结果
      Response.Write( sr.ReadToEnd() );谢谢楼上的朋友,但是做过修改,代码如上,返回页面什么也没有空白一片~~~~~
      

  4.   

    try:<?xml version="1.0"?>
    <xsl:stylesheet version="1.0"
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >  <xsl:template match="/">
        <HTML>
          <BODY>
            <TABLE border="1" cellspacing="0" cellpadding="2">
              <xsl:for-each select="usermessage/guest">
                <TR>
                  <TD><xsl:value-of select="username" /></TD>
                  <TD><xsl:value-of select="useremaile" /></TD>
                  <TD><xsl:value-of select="message" /></TD>
                </TR>
              </xsl:for-each>
            </TABLE>
          </BODY>
        </HTML>
      </xsl:template></xsl:stylesheet>
      

  5.   

    注意要和你的XML文件中的节点名对应,XML文件中用的是useremaile而不是useremail
      

  6.   

    谢谢楼上的朋友,节点对应的名称我都更正了,使用了您提供的xslt文件,可以显示结果了。
    我就是还想问问我原来那样写的xslt文件有什么逻辑上的错误吗?我是对着《c#高级编程》的例子改的。麻烦了,谢谢:)
      

  7.   

    其实我也没看出你的XSL文件有什么错误,看上去应该没问题。不知道为什么不行,怀疑有可能是输入错误,XSL对输写敏感的,全角、半角也有区别的!!!