日期:2014-05-20  浏览次数:20875 次

xslt转换xml的问题!!!
我的xslt文件很简单,但是在.net(c#)里边通过
XslTransform   _Transform   =   new   XslTransform();
_Transform.Load(Server.MapPath( "XSLTFile1.xslt "));
调用时却老是出现下边的错误,很郁闷:
System.Xml.Xsl.XsltCompileException:   file:///D:/xml/exmDropDownList/XSLTFile1.xslt(10,6)   :   --->   System.Xml.Xsl.XsltException:   “xsl:apply-template”不能是“body”元素的子级。
我的xslt文件如下:
<?xml   version= "1.0 "   encoding= "UTF-8 "   ?>
<xsl:stylesheet   version= "1.0 "   xmlns:xsl= "http://www.w3.org/1999/XSL/Transform "   >
<xsl:output   method= 'html '   indent= 'yes '   doctype-public= '-//W3C//DTD   FTML   3.2   Final//EN '/>
<xsl:template   match= "/ ">
<html>
<head>
<title> lizi </title>
</head>
<body>
<xsl:apply-template   select= "//item "/>
</body>
</html>
</xsl:template>
<xsl:template   match= "item ">
<div>
Name= <xsl:value-of   select= "@id "/> ,
Quantity= <xsl:value-of   select= "quantity "/>
</div>
</xsl:template>
</xsl:stylesheet>
我觉得这样没错啊,怎么老是又那样的问题呢?

我在cs文件中是这样写的:
private   void   Page_Load(object   sender,   System.EventArgs   e)
{
//   在此处放置用户代码以初始化页面
try
{
XPathDocument   _sourceXml   =   new   XPathDocument(Server.MapPath( "XMLFile1.xml "));
XslTransform       _Transform     =     new     XslTransform();      
_Transform.Load(Server.MapPath( "XSLTFile1.xslt "));
_Transform.Transform(_sourceXml,null,Response.Output);
}
catch(Exception   e1)
{
Response.Write(e1.ToString());
}
}
我用的是.net2003企业版,这样有错吗?


------解决方案--------------------

<xsl:apply-template select= "//item "/>
改成
<xsl:apply-templates select= "//item "/>