XSLT-преобразование XML-файла - PullRequest
0 голосов
/ 08 июня 2010

Я написал простой 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 голосов
/ 15 июня 2010

Решением этой проблемы оказалось добавление пространства имен к обоим элементам: select = "ex: Employee / ex: Name", как Стивен Маевски предложил в своем комментарии выше. Он не отправил это как ответ, поэтому я отправляю это.

0 голосов
/ 09 июня 2010

Хотели бы вы просто найти сотрудника? А потом выбрать имя из этого? Кроме того, я заметил, что ваш XSLT определяет вывод XML, а не HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...