Страница 1 из 1

Как можно преобразовать XML в Plain text?

СообщениеДобавлено: 22.03.2006 (Ср) 23:20
ANDLL
Давным давно у меня была идея написать своя язык для преобразования xml-документов в текстовый. Кое что я уже написал, однако потом работа застопорилась.
Сейчас я решил продолжить. Однако теперь я немного больше ценю свое время, в связи с этим мне необходимо знать, чтоя не изобретаю велосипед.

Собственно вопрос:

Какие существуют способы преобразовать XML в простой текст :?:

Сразу же сказать, что XSLT не подходит. Во-первых, официально говоря, это стандарт для преобразования документов из XML в XML.
Хотя, конечно, можно и в text преобразовывать, настроив output. Но, Вам кодга нибудь прихолоись писать такое преобразорание, когда вам надо вставлять тэги <!CDATA[[ каждый раз, когда надо написать кусочек, содержащий не подоходящее для XML сочетание символов? А потом еще надо писать ]]> что бы вставить что-то из XSL? В итоге XSL-код становится полностью нечитаемым. Так что, на мой взгляд, XSL это мягко говоря, не удобно. Каково Ваше мнение?

СообщениеДобавлено: 22.03.2006 (Ср) 23:34
Ennor
Пардон, конечно, мой французский, но XML вообще-то и так вполне себе текстовый... Или я чего-то не понимаю?

СообщениеДобавлено: 23.03.2006 (Чт) 10:18
ANDLL
XML вообще-то и так вполне себе текстовый
И? Что с того, не понимаю?

СообщениеДобавлено: 23.03.2006 (Чт) 10:27
RayShade
Мое мнение- задача сформулирована некорректно.

Что есть преобразование из XML в текст? И почему XSL не подходит?

Звучит как полная лажа.

СообщениеДобавлено: 23.03.2006 (Чт) 16:49
Amed
Пример приведи.

СообщениеДобавлено: 23.03.2006 (Чт) 19:02
ANDLL
Простейший:
Код: Выделить всё
<A><N>a</N><B>1</B><B>2</B><B>3</B></A>
<A><N>b</N><B>5</B><B>4</B><B>8</B></A>

=>
Код: Выделить всё
a:
1,2,3
b:
5,4,8

СообщениеДобавлено: 23.03.2006 (Чт) 19:05
Viper
теперь понятно хотя бы чего хочется...

СообщениеДобавлено: 23.03.2006 (Чт) 19:28
Ennor
А атрибуты куда девать?

СообщениеДобавлено: 23.03.2006 (Чт) 19:46
ANDLL
Так, задам вопрос по-другому.

Какие аналоги XSL Вы знаете?

Этот вопрос надеюсь понятен? Или то же что-то странное и необычное?

СообщениеДобавлено: 23.03.2006 (Чт) 20:27
Konst_One
а у тебя в примере и не XML вовсе :lol:

СообщениеДобавлено: 23.03.2006 (Чт) 20:57
ANDLL
Чем это? Тем что нет врехнего элемента? Так это фрагмент.

Не народ, хватит выделываться, правда это даже не смешно.

Сначала меня спросили, как можно преобразовать XML(который вроде текстовый) в другой текстовый формат.
Когда я спросил, why not, мне так и не ответили.

Потом мне сказали, что задача сформулированна некорректно(я переформалировал). Потом у меня спросили, чем не подохит XSL(я не стал предлогать перечитать первый пост, в котором этому посвящен целый абзац, так как на суть вопроса это не влияет).

Потом меня попросили привести пример(я привел).

Потом мне скзали, что наконецто все понятно(очень приятно, правда, всегда мечтал что бы персонально !Viper!у были понятны мои вопросы. Прошу и впредь писать, когда мои посты будут Вам понятны)

Потом у меня спросили куда девать атрибуты?(опять же не ответил, потому что парень явно не читал про XSL, правда слава богу он то хоть по делу вопросы задавал, а не комментировал степень понятности)

Наконец мне заявили, что это не XML.

Просто хочу заметить, что тон весьма смахивает на тон некоего GSerg'а при ответе на некоторые вопросы. Однако, разумно замечать не только ТОН, которым некий GSerg изъясняется, но и то КОГДА он таким тоном изъясняется. Неужели каждый раз, когда ему чуток не ясен вопрос? А может еще какие-то еще причины есть все-таки?

СообщениеДобавлено: 23.03.2006 (Чт) 22:33
alibek
Бедный GSerg... Ему то за что?

СообщениеДобавлено: 23.03.2006 (Чт) 22:34
skiperski
Совершенно не понятно раздражение в последнем ответе. Мне, например, тоже не понятно что за преобразование ты желаешь осуществить и чем не устраивает XSL. Из примера ничего не понятно: почему "а" и "b" на новых строках и отделены двоеточием, а цифры потом идут в одной строке и через запятую? Из вопроса я понял, что нужен какой-то универсальный способ преобразования XML в текст, т.е. по сути просто убрать тэги, а из примера получается, что преобразование должно быть контекстно зависимым. Тогда чем не устраивает XSL? (Первое сообщение я читал) Использовать CDATA при преобразовании XML нет необходимости, т.к., если данные уже в XML, то они валидны и для XSL. А для нестандартных символов окружающего текста можно использовать entities или шаблоны с подстановками.

Писать свой парсер для такой локальной задачи, по-моему, слишком накладно и не думаю, что он будет более функционален и читабелен чем XSL.

СообщениеДобавлено: 23.03.2006 (Чт) 22:37
ANDLL
Все, проехали :?

СообщениеДобавлено: 23.03.2006 (Чт) 22:38
alibek
Ну во-первых, XML это структурированное хранилище данных, в отличии от Plain Text. Поэтому вполне резонен вопрос, по каким критериям и правилам тебе нужно преобразовать XML.
Про атрибуты тоже вполне резонный вопрос. Если тебе нужны только данные, можно было просто это прояснить. Но вообще-то в атрибутах содержится много информации, в том числе и той, которая влияет на вывод и отображение текста.
И наконец, фрагмент, который ты привел, ничего не проясняет.
Почему после <A> идет новая строка, а после <B> нет? Почему после <A> двоеточие, а после <B> запятая? Прежде чем задавать вопрос, сформилируй его про себя и подумай, а поймет ли его человек, который не телепат и не знаком с твоей задачей.

СообщениеДобавлено: 23.03.2006 (Чт) 23:08
ANDLL
Я же сказал, проехали.
Вопрос был, есть ли альтернатива XSL, никто ничего не ответил. Из чего я делаю вывод, что если таковая и есть, то про нее никто не знает.
Из полного нипонимания моего вопроса я понял, что никто не сталкивался с проблемой нечитаемости XSL-кода, и что только для меня является проблемой прочитать нечто вроде этого:
Код: Выделить всё
<DIV class="up_down_block" style="display:none;" id="aut_div">
<span style="font-size:14px; font-weight:bold; letter-spacing:1px; color:#DB7093;">]]><xsl:value-of select="aut_name"/><![CDATA[</span><br>
<A style="font-size:12px; color:#5cb9be;" target="_new" href="]]><xsl:value-of select="aut_webaddr"/><![CDATA[">]]><xsl:value-of select="aut_webaddr"/><![CDATA[</A><br>
<A style="font-size:12px; color:#5cb9be;" target="_new" href="mailto:]]><xsl:value-of select="aut_email"/><![CDATA[">]]><xsl:value-of select="aut_email"/><![CDATA[</A><br>
<span style="font-size:12px;">]]><xsl:value-of select="aut_desc"/><![CDATA[</span>
</DIV>
(фрагмент из одного моего проэкта).
Из чего я сделал вывод, что писать отдельный язык можно только разве что для себя. А на это врядли имеет смысл тратить энное время.

Особое спасибо, alibek'у и skiperski за содержательные посты.
Особое извините GSerg'у если ему вдруг покажеться(судя по http://bbs.vbstreets.ru/viewtopic.php?p=6593296#6593296) что тут было что-то против него.

СообщениеДобавлено: 23.03.2006 (Чт) 23:15
skiperski
Довольно странный синтаксис. А если так?
Код: Выделить всё
<DIV class="up_down_block" style="display:none;" id="aut_div">
   <span style="font-size:14px; font-weight:bold; letter-spacing:1px; color:#DB7093;"><xsl:value-of select="aut_name"/></span><br>
   <A style="font-size:12px; color:#5cb9be;" target="_new" href="{aut_webaddr}"/><xsl:value-of select="aut_webaddr"/></A><br>
   <A style="font-size:12px; color:#5cb9be;" target="_new" href="mailto:{aut_email}"/><xsl:value-of select="aut_email"/></A><br>
   <span style="font-size:12px;"><xsl:value-of select="aut_desc"/></span>
</DIV>

СообщениеДобавлено: 23.03.2006 (Чт) 23:24
ANDLL
То есть засунуть html-код как xml? Как минимум наличие тэгов <br> не очень понравится XML-парсеру.
Ну конечно можно завменить на <br/>...

СообщениеДобавлено: 24.03.2006 (Пт) 1:02
skiperski
Именно так. HTML, точнее XHTML, в XSL'е не надо выделять как CDATA. Только все теги должны быть закрыты. Брэйки я просто не заметил. Знаки больше/меньше заменяются на entities &gt; и &lt; соответственно. Всякие прочие непечатные символы на &#xxx;, где ххх - UNICODE символа. Ну и RTFM, конечно. Сходи на http://www.xpoint.ru - там много чего по теме есть.

СообщениеДобавлено: 24.03.2006 (Пт) 10:30
RayShade
Бред. Я пишу на XSLT+XHTML. ВСе теги закрываются, а атрибуты - в кавычках.

Как CDATA пишется только embedded CSS, если он вообще нужен (это бывает крайне редко).

Так что, нечего париться :) Пользуйтесь стандартными решениями, только читайте внимательно документацию.

СообщениеДобавлено: 24.03.2006 (Пт) 11:07
Konst_One
XML Spy 2005 тебе в придачу :D , чтобы все было наглядно

СообщениеДобавлено: 24.03.2006 (Пт) 11:10
Konst_One
и вообще есть предложеньеце открыть новый раздел на форуме XML/XSLT/XHTML

СообщениеДобавлено: 24.03.2006 (Пт) 15:48
RayShade

Re: Как можно преобразовать XML в Plain text?

СообщениеДобавлено: 30.03.2006 (Чт) 14:11
Гость
ANDLL писал(а):Собственно вопрос:

Какие существуют способы преобразовать XML в простой текст :?:




см XSL-FO XSL Formatting Objects http://www.w3schools.com/xslfo/default.asp

СообщениеДобавлено: 30.03.2006 (Чт) 14:28
alibek
Опять у нас гости пишут?

СообщениеДобавлено: 30.03.2006 (Чт) 20:18
FaKk2
Или аккаунт удалили.