Не удается преобразовать XML в HTML через .NET System.Xml.Xsl.XslCompiledTransform - PullRequest
2 голосов
/ 02 июля 2011

У меня есть этот xsl:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:cf="http://AAA"
                xmlns="http://AAA"
                exclude-result-prefixes="cf">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/cf:Content">
    <html>
      <head>
        <title>AAA</title>
      </head>
      <body>
        Hello everybody
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

этот xml:

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="myxsl.xslt" type="text/xsl"?>
<cf:Content xmlns:cf="http://AAA"
            xmlns="http://AAA">

  Hello.

</cf:Content>

Пространство имен, на которое ссылается xml, является моим xsd (проверка правильности).

Хорошо, я открываю xml-файл в браузере, xslt работает.

Теперь у меня есть этот код:

string xml = "THE SAME XML OF THE XML FILE";

XslCompiledTransform transform = new XslCompiledTransform();
using (XmlReader xr = 
      XmlReader.Create("myxsl.xslt")) { 
   transform.Load(xr); 
}

try {
   using (StringWriter sw = new StringWriter())
   using (StringReader sr = new StringReader(xml))
   using (XmlReader xr = XmlReader.Create(sr)) {

      transform.Transform(xr, new XsltArgumentList(), sw);
      string html = sw.ToString();
      this.Preview_Literal.Text = html;

   }
} catch (Exception ex) {
throw ex;
}

Конечно, получается исключение:

Ошибка: данные на корневом уровне недействительны.Строка 1, позиция 1. - Тип: System.Xml.XmlException

В чем проблема?

1 Ответ

1 голос
/ 30 января 2012

Ответ Мартина:

удалить пространство имен по умолчанию xmlns="http://AAA" из xsl:stylesheet, поскольку элементы HTML не принадлежат этому пространству имен.Например, <head> на самом деле <cf:head> по умолчанию.

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