Файл HTML с объявлением xml и xmln не может быть преобразован - PullRequest
0 голосов
/ 04 января 2012

Я сгенерировал HTML-файл, и верхнее объявление html выглядит так:

<html xml:lang="de-CH" lang="de-CH" xmlns="http://www.w3.org/1999/xhtml">

И затем я пытаюсь преобразовать его в другой формат с помощью этого кода .Net 4:

XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Ignore;

XslCompiledTransform proc = new XslCompiledTransform();

proc.Load("Html_to_Sql.xslt");

fsHtmlXml = new FileStream(file.Name, FileMode.Create);

html = XmlReader.Create(file.FullName, settings);
proc.Transform(html, null, fsHtmlXml);

К сожалению, ничего не происходит, если у меня есть атрибуты xml, lang и xmlns в HTML.Почему это так?

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Ваш XSLT должен будет ссылаться на элементы в пространстве имен http://www.w3.org/1999/xhtml. Вы еще не опубликовали свой XSLT-код, скорее всего проблема в этом файле.

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

Будет ли это работать через XML и XPath

using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;

public class TransformXML
{
    //This will transform xml document using xslt and produce result xml document
    //and display it

    public static void Main(string[] args)
    {
        try
        {
            XPathDocument myXPathDocument = new XPathDocument(sourceDoc);
            XslTransform myXslTransform = new XslTransform();
            XmlTextWriter writer = new XmlTextWriter(resultDoc, null);
            myXslTransform.Load(xsltDoc);
            myXslTransform.Transform(myXPathDocument, null, writer);
            writer.Close();
            StreamReader stream = new StreamReader (resultDoc);
            Console.Write("**This is result document**\n\n");
            Console.Write(stream.ReadToEnd());
        }
        catch (Exception e)
        {
            Console.WriteLine ("Exception: {0}", e.ToString());
        }
    }
}
1 голос
/ 04 января 2012

Атрибут xmlns указывает пространство имен документа XML. Это работает во многом так же, как пространства имен в C #, где два класса с одинаковыми именами, но разными пространствами имен считаются совершенно разными классами. Изменение пространств имен XML означает, что ваши шаблоны XSLT / XPath не будут совпадать.

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