我编写了一个简单的XML文档,我试图用XSLT文件进行转换,但是在运行代码时没有得到任何结果。这是我的XML文档:
<?xml version="1.0" encoding="utf-8" ?>
<Employee xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="XSLT_MVC.Controllers">
<ID>42</ID>
<Name>Russ</Name>
</Employee>
这是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"
xmlns:ex="XSLT_MVC.Controllers" >
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:copy>
<xsl:value-of select="ex:Employee/Name"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
以下是我试图运行以执行转换的代码(来自C#控制台应用程序):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
namespace XSLT
{
class Program
{
static void Main(string[] args)
{
Transform();
}
public static void Transform()
{
XPathDocument myXPathDoc = new XPathDocument(@"docs\sampledoc.xml");
XslTransform myXslTrans = new XslTransform();
myXslTrans.Load(@"docs\new.xslt");
XmlTextWriter myWriter = new XmlTextWriter(
"results.html", null);
myXslTrans.Transform(myXPathDoc, null, myWriter);
myWriter.Close();
}
}
}
当我运行代码时,我得到一个空白的html文件。我想我的命名空间可能有问题,但我不确定。任何人都可以帮忙吗?
答案 0 :(得分:0)
您是否只想在员工上进行匹配?然后从中选择名称? 另外,我注意到你的XSLT指定了XML而不是HTML的输出。
答案 1 :(得分:0)
这个问题的解决方案最终为两个elems添加名称空间:select =“ex:Employee / ex:Name”,正如Steven Majewski在上面的评论中所说的那样。他没有将此作为答案发布,所以我发布了它。