![]() |
|
Модераторы: diadiavova |
![]()
|
|
| zloyGamer |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
привет, скажите как бороться со спец символами в xslt шаблонах
например: для вот этой xml'ки:
xslt:
если из xslt убрать test:my_vaue=1 то нормально получается почти то что мне надо:
проблема в двоеточии!!, как с ними бороться? я бы мог <td test:my_vaue=1>Bob Dylan</td> вставить в исходную xml'ку но тогда парсер нормально не отработает т.к. это уже получится ещё один xml тэг... Это сообщение отредактировал(а) zloyGamer - 20.7.2009, 10:22 |
||||||
|
|||||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Единицу надо в кавычки заключить, а префикс должен указывать на пространство имён.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| zloyGamer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
тогда в получаемом файле появляется ещё один лишний, ненужный параметр : xmlns:test="urn:aaa-hghg/ytjy"
а вообще интиресует возможно ли и как вбивать любой текст между <xsl:value-of select="..." /> чтоб потом это нормально обрабатывалось? |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Префикс всегда обозначает пространство имён, поэтому мне не понятно, что значит ненужный параметр. Если надо сформировать документ не привязанный к каким-либо правилам, то тогда надо указать выходной формат - текст.
Ну тогда и документ придётся формировать соответственно -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| zloyGamer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
<xsl:output method="text"/>
вот!! это то что надо! просто и неважно какой текст вокруг - главное вставить то что мне надо в нужное место, и неважно что там и неважно что вокруг.. тока вот такая вот xslt непрокатывает:
проблема в 15 строчке!, хотя уже прописано <xsl:output method="text"/> но что то всеравно сделано не так.. по каким правилам должен быть отформатирован текст вокруг чтоб работало? Это сообщение отредактировал(а) zloyGamer - 21.7.2009, 07:16 |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
А что с ней? Добавлено через 8 минут и 6 секунд Просто когда ты выводишь продукцию в формате html, то тебе не приходится заботиться о том чтобы всё соответствовало формату. Всё и так генерится как надо, а если это текст, то придётся всё ручками формировать. Например частенько использовать тэг xsl:text для создания элемента
Вместо 15 строки. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
zloyGamer, а нафига такой гемор вообще Это сообщение отредактировал(а) jsa - 21.7.2009, 12:45 -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| zloyGamer |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
нда, получается так, если проще никак, получается сначала придется править все скобки "<>" на < и &qt; а потом ещё и после генерации править все < и &qt; на "<" и ">", чет много телодвижений однако...
просто если генерить не просто html'ку а xml'ку для офисов то у них там всякая ерунда в тегах прописана.., а без неё никак, если есть способ по проще напишите пожалуста.. |
||||||
|
|||||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
zloyGamer, ну вообще-то в конечном документе ничего менять не надо, другой вопрос, что весь документ так придётся формировать. Но тут на помощь может прийти волшебный блок CDATA
PS Там у меня в предыдущем примере незакрытые теги text, надеюсь ты понял И кстати: можно ещё так написать
Правда в хмл с пространствами имён дело обстоит ещё строже, чем хтмл. Если префикс используется, то пространство должно быть объявлено. Это сообщение отредактировал(а) diadiavova - 21.7.2009, 13:33 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| zloyGamer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
ввооо! вроде точто надо, тока щас проверить немогу...,
спасибо как получится отпишусь |
|||
|
||||
| zloyGamer |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
спасибо огромное!! эт то что надо, как доктор прописал!! ))
намного упрощает задачу, теперь никакой символ небудет мешаться... вот тока в результате все спецсимволы переводятся в их мнемоничные формы: xsl
в:
это уже мелочи, и можно элементарно поправить автозаменой.. можно ли в самом xslt указать чтоб этого не происходило? |
||||
|
|||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Видимо это от xslt-процессора зависит. Лично у меня этот же стиль выдал вот что
Так что это от не по xslt вопрос, а по конкретной реализации процессора. Я всё делаю в Visual Studio 2008, стало быть используется msxml. Добавлено @ 18:12 Можно попробовать сам блок CDATA заключить в элемент text, но не знаю, что выйдет.
Это сообщение отредактировал(а) diadiavova - 21.7.2009, 18:48 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| zloyGamer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 24.2.2008 Где: аватар какает Репутация: нет Всего: нет |
нет, от <xsl:text> ... </xsl:text> ничего не изменилось,
спасибо огромное diadiavova, ты оч.помог, теперь буду с xslt процессорами эксперементировать.. если что ещё выясню отпишусь.. |
|||
|
||||
| kamagan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 3.8.2009 Репутация: нет Всего: нет |
Примерно таже проблема, нужно вставить готовый XHTML код в XML, но после преобразования все спецсимволы заменяются на сущности.
<xsl:output encoding="utf-8" method="text" /> и <![CDATE[...]]> не помогают, может есть ещё варианты. Преобразование делаю на сервере c помощью php5_xsl (Linux / Apache 2.2.8 / PHP 5.2.5). может это можно где-то на сервере настроить? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
kamagan, а почему нельзя просто вставить фрагмент и всё? Топикастеру по каким-то причинам надо было чтобы не добавлялось пространство имён в финальный документ, но, честно говоря, я и не думал, что эта задача такая распространённая. В правильном XML-документе не может появиться необъявленный префикс. Из-за этого нельзя получить такое в виде XML. Но мне не понятно какие причины могут быть на то, чтобы пытаться создать неправильный документ.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| kamagan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 3.8.2009 Репутация: нет Всего: нет |
Дело в том что сайт хочу переделать на использование XML / XSLT шаблона, а в базе за несколько лет накопилось прилично материала в HTML-виде. Поэтому хотелось бы внедрить его в XML, но так чтобы он игнорировался, и оставался в первозданном виде.
Есть конечно такой вариант: в XML воткнуть метки, которые после преобразования можно заменить на материалы из базы, но не очень хочется выполнять кучу строковых замен на PHP. Если есть идеи получше - предлагайте. Наверно правильнее будет все материалы в базе перегнать из HTML в XML? |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 3 Всего: 20 |
CDATA ноды с содержанием html, я так делаю, хтмл контент дергается из базы проблем нет Добавлено через 1 минуту и 39 секунд
<xsl:value-of select="" disable-output-escaping="yes" /> -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| kamagan |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 3.8.2009 Репутация: нет Всего: нет |
Огромное спасибо. |
||||
|
|||||
![]()
|
| Правила форума "XML/XSLT" | |
|
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | XML, XSL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |