XML文件的XSLT转换

时间:2010-06-08 13:26:13

标签: xslt serialization

我编写了一个简单的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文件。我想我的命名空间可能有问题,但我不确定。任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您是否只想在员工上进行匹配?然后从中选择名称? 另外,我注意到你的XSLT指定了XML而不是HTML的输出。

答案 1 :(得分:0)

这个问题的解决方案最终为两个elems添加名称空间:select =“ex:Employee / ex:Name”,正如Steven Majewski在上面的评论中所说的那样。他没有将此作为答案发布,所以我发布了它。