powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вопросы к гуру, сложное преобразование
3 сообщений из 3, страница 1 из 1
Вопросы к гуру, сложное преобразование
    #33495609
zhuravl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые гуру,

Не подскажите, как добиться следующего. Я пишу программу на c#/aspx для веб. На странице у меня есть контрол, который принимает HTML. Соответственно, позволяет выделять жирным, италиком, цветом. В общем все как в winword. (пример контрола можно посмотреть на www.freetextbox.com). Так получается, что HTML, который передает этот контрол в мою программу на сервере не соответствует стандарту. С этим я поборолся и у меня получилось привести его к стандарту XHTML. Казалось бы, все хорошо. Но теперь у меня стоит другая задача. А именно - фильтрация тэгов.

В чем заключается смысл фильтрации тэгов и для чего это нужно. Допустим, мы имеем HTML тэг FONT. Мы хотим, чтобы у этого тэга были только два атрибута - face и size. Почему? А для того, чтобы злонамеренный пользователь не смог вставить атрибут style и изменить что-то. Также это касается и других тэгов. Т.е. для каждого тэга должен быть определенный список атрибутов. Другие атрибуты необходимо просто убрать. Еще необходимо убрать все теги <script>. А если быть более точным, то политика должна быть deny, allow (как в apache, сначала запрещаем все теги, а потом разрешаем только нужные и с нужными атрибутами). Например, мы можем захотеть запретить все теги и разрешить только font, strong, i, a.

Это была задача номер 1. Кратко звучит она так: Как в xml оставить только нужные тэги и с нужными атрибутами?

Теперь задачка номер 2. Как выяснилось, в некоторых тэгах просто необходим атрибут style. Например, в тэге FONT желательно оставить атрибут style, в том случае если style имеет значение "BACKGROUND-COLOR: #dddd77". Причем, в качестве dddd77 может выступать любое значение цвета. В других тэгах тоже может присутствовать атрибут style. Например такой:
Код: plaintext
1.
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">...
Кратко задача номер 2 звучит так: Как в избранных тэгах оставить только те значения style, которые нам нужны?

Все задачи вполне можно решить "тупым" методом. Поэтому у меня вопрос. Подобное вообще можно сделать с помощью XSLT преобразования?

Вот пример XML на котором можно потренироваться:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-16"?><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=WINDOWS-1251" />
</head>
<body>
<P>sЛОРЫ<STRIKE>ПВ</STRIKE> <U>орпывлаорп</U> <EM>лвыо</EM><BR /><STRONG>авпловапрлЫОРлорвлаорлывоарлыоварлывра</STRONG></P>
<P><FONT color="#991111" size="6">ываываываылвоарылварылвралывралыова<BR /><FONT face="Arial" size="3">вапвапвлаопрвлапр</FONT></FONT></P>
<P align="right">ывадлыовадлоывдалоыва</P>
<P align="center">ываывлаорыдвлаорыва<BR />лавыопрвлапр<BR /></P>
<OL>
<LI>ываываыва</LI>
<LI>ываыва</LI></OL>
<UL>
<LI>ываываыва</LI>
<LI>ываыва</LI></UL>
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"><BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px">
<P dir="ltr" style="MARGIN-RIGHT: 0px">ываывалывралывралывар<BR />авлпорваплрваплварп<BR />алвыпорвалпрвлапрвлар<BR />вапловплваопрвлаопрвлоапр<BR /></P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
<P>ар ывлаоры валорыв алоыр валоры валор ывлар ылавр ыав<BR /><FONT style="BACKGROUND-COLOR: #dddd77">авапорваорпваорп орва орва пов апв ап</FONT></P>
</body>
</html>
...
Рейтинг: 0 / 0
Вопросы к гуру, сложное преобразование
    #33495743
Babadji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделать можно, если использовать в xslt внешние функции, которые будут осуществлять фильтрацию, иначе как тебе разобраться со строкой в style, если нету эталонной, ее надо парсить. Да и вообще, если задачу правильно понял, тебе нужен именно парсер, который будет анализировать твой xml по определенным правилам, строить соответствующее дерево и т.д.. Задача не такая простая, лучше не мучайся с xslt и сделай все на шарпе, да и на шарпе не один месяц будет.
...
Рейтинг: 0 / 0
Вопросы к гуру, сложное преобразование
    #33495794
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача не очень сложная...
я решал подобную.
нужно было переводить например цифровое написание чисел в письменное.
делалось это так.
был xml-файл-справочник с написанием необходимых чисел прописью.
и был xslt-шаблон, который переводит входной xml-файл в соответствии с xml-справочником, подключаемым через функцию document().

у Вас подобное.
в xml-справочник засуньте все настройки для тэгов, а дальше все по вышеописанному.

Babadji использовать в xslt внешние функции, которые будут осуществлять фильтрацию, иначе как тебе разобраться со строкой в style, если нету эталонной
функции разбора строк "по заданным правилам" будут в xslt-шаблонах...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вопросы к гуру, сложное преобразование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]