0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 4
1

Преобразование xml в html с использованием языка XLST с сущностями DOCTYPE

22.03.2018, 19:47. Показов 2535. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я написал код для преобразования xml в html, используя язык стилей xlst. Все работает отлично, но если в файле со стилями прописать элемент doctype, чтобы использовать сущности, то программа выдает ошибку.
Код C#:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Test_1_Button_Click(object sender, EventArgs e)
        {
            string xsl = File.ReadAllText(@"D:\...\style.xml");
            XmlDocument xDocument = new XmlDocument();
            xDocument.LoadXml(File.ReadAllText(@"D:\...\file.xml"));
            XDocument transformedDoc = new XDocument();
            using (XmlWriter writer = transformedDoc.CreateWriter())
            {
                XsltSettings settings = new XsltSettings();
                settings.EnableDocumentFunction = true;
                XslCompiledTransform transform = new XslCompiledTransform();
                transform.Load(XmlReader.Create(new StringReader(xsl)), settings, null);+ 1;
                transform.Transform(XmlReader.Create(new StringReader(File.ReadAllText(@"D:\...\file.xml"))), writer);
            }
            transformedDoc.Save(@"D:\...\file new.html");
        }
Элемент:

XML
1
2
3
4
5
6
7
<!DOCTYPE xsl:stylesheet [
    <!ENTITY nbsp "&_#_160;">
    <!ENTITY raquo "&_#_187;">
    <!ENTITY laquo "&_#_171;">
    <!ENTITY number "&_#_8470;">
    <!ENTITY sup2 "&_#_178;">
]>
Я не хочу просто использовать коды в тексте файла (&_#_160; и т.д.), я хочу понять, в чем моя ошибка? Я прочитал несколько статей, как задать сущности в doctype, написано все правильно, тут все просто. Но программа выдает ошибку:
Ошибка компиляции XSLT.
Есть код:

C#
1
2
3
4
5
6
7
8
private void Test_3_Button_Click(object sender, EventArgs e)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.DtdProcessing = DtdProcessing.Parse;
            settings.ValidationType = ValidationType.DTD;
            XmlReader reader = XmlReader.Create(@"D:\...\file.xml", settings);
            while (reader.Read());
        }
При запуске программа выдала ошибку: Элемент "xsl:stylesheet" не объявлен, где "xsl:stylesheet" - корневой элемент, он есть, закрытый. А также все теги закрыты, т.к. повторяю, убрав элемент doctype (при этом убрав &nbsp и т.д. из текста, т.к. при них она разумеется выдаст ошибку компиляции xlst), программа работает.

Уверен, что-то упускаю, вопрос что?
Заранее благодарен!)

PS:
&_#_160; разумеется без _, при отправке на форум происходит преобразование в соответствующие символы.
Программа Visual Studio 2015, если нужно.
Код нужен только на C#
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2018, 19:47
Ответы с готовыми решениями:

Преобразование HTML в XML
Кто нибудь знает есть ли стандартные библиотеки для автоматизации такого преобразования ?

Преобразование HTML в XML
Подскажите пожалуйста как такое можно сделать средствами .NET, пытаюсь найти объект HTMLDOM, но...

Преобразование xml в html
Здравствуйте. Нужно преобразовать xml в html. Немного погуглил и нашел такой вариант: ...

Как сделать резиновую верстку с Div, использованием <!doctype html>
Ситуация интересная. Без &lt;!doctype html&gt; - верстка работает. С использованием &lt;!doctype&gt;, все...

2
6204 / 2455 / 719
Регистрация: 11.04.2015
Сообщений: 3,969
Записей в блоге: 43
26.03.2018, 03:52 2
Лучший ответ Сообщение было отмечено AntonIPS как решение

Решение

AntonIPS, при создании хмлридера нужно использовать объект XmlReaderSettings с параметром settings.DtdProcessing = DtdProcessing.Parse. Пример во вложении
Вложения
Тип файла: zip dtdxslt.zip (40.6 Кб, 30 просмотров)
1
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 4
26.03.2018, 06:16  [ТС] 3
Выражаю огромную благодарность=)
Не один день потратил, чтобы решить вопрос самостоятельно, не получилось.
Так что спасибо)
Вы мне очень помогли!)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2018, 06:16
Помогаю со студенческими работами здесь

Преобразование XML в HTML
Как преобразовать данные XML в HTML ?

Преобразование xml (RSS) в HTML
как на пехп переобразовать xml вайлик rss заголовков так чтобы получился html файлик виде таблички...

Вывод строки c html-сущностями и кавычками
Добрый день друзья. Если мне нужно вывести строку из БД на экран, то делаю это так: ...

Вставка XML-документа в страницу html с использованием XmlHttpRequest
Здравствуйте, у меня возник один вопрос по вставке xml-документа в страницу html. Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru