Модераторы: diadiavova

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> escaping символов, почему? 
V
    Опции темы
nmn
Дата 18.3.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



вот  есть 
Код

<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]></xsl:text>


тем не менее полсле преобразований все равно < заменяется на &gt;
PM Skype   Вверх
diadiavova
Дата 18.3.2010, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Доктайп выводится с помощью элемента output, а эскейпится из-за того, что таков стандарт XML, в нём эти символы недопустимы не в тех местах, если в качестве метода вывода указать text, то этого происходить не будет.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 18.3.2010, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



то бишь если html, то никак вывести не удастся?
а чем text отличается от html вывода?
PM Skype   Вверх
diadiavova
Дата 18.3.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(nmn @  18.3.2010,  19:35 Найти цитируемый пост)
а чем text отличается от html вывода? 

Тем, что в HTML, так же как и в XML эти символы имеют специальное значение и просто так в тексте появиться не могут, а для вывода их как спецсимволов существую свои правила(как например для доктайпа, который указывается в элементе output).


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 18.3.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



хмм обидно...
а как же быть с тегами, где необходимо подставить значение в атрибут?
например <img href="подставляемое значение" />?
PM Skype   Вверх
diadiavova
Дата 18.3.2010, 22:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(nmn @  18.3.2010,  22:11 Найти цитируемый пост)
а как же быть с тегами, где необходимо подставить значение в атрибут?
например <img href="подставляемое значение" />? 

Да очень просто
Код

<img href="{выражение}" />



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 18.3.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



спасибо!!!
PM Skype   Вверх
nmn
Дата 31.3.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



позарез надо выводить информацию вида <script>тело скрипта</script>
в теле скрипта встречаются символы '<' '>'. есть ли какие то лазейки для того чтобы в поток вывода вывести '<' или '>'?
PM Skype   Вверх
diadiavova
Дата 31.3.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(nmn @  31.3.2010,  14:24 Найти цитируемый пост)
есть ли какие то лазейки для того чтобы в поток вывода вывести '<' или '>'? 

Конечно
Код

&lt; &gt;



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 31.3.2010, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



нужно вывести именно < или >
PM Skype   Вверх
diadiavova
Дата 31.3.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(nmn @  31.3.2010,  20:18 Найти цитируемый пост)
нужно вывести именно < или > 

Я понял smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 31.3.2010, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Код

<xsl:template match="/">
        
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
            
            <head>
                <title><xsl:value-of select="trans:chapter/@title"/></title>
                <link rel="stylesheet" type="text/css" href="mysite.css"/>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                
                <script type="text/javasctipt">
function testF()
                    {
                    alert(10&gt;1);
                    }
                </script>
...
</xsl:template>

все равно выводит &gt; а нужно >

PM Skype   Вверх
diadiavova
Дата 31.3.2010, 22:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Тогда так
Код

    <xsl:text disable-output-escaping="yes">&gt;</xsl:text>



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 31.3.2010, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



громоздко, но все равно спасибо!!!
PM Skype   Вверх
diadiavova
Дата 1.4.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



В элементе text можно разместить весь скрипт, а не только один символ. Кроме того, скрипт всегда можно вынести в отдельный файл.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
magelan
Дата 5.4.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 7
Всего: 16



Если лень морочится с валидностью, то javascript обычно пишут так:

<script TYPE="text/javascript">
<![CDATA[
if( a > b && a < c ) a++;
]]>
</SCRIPT>

Если атрибуты не требуют выбора, то ДядяВова абсолютно прав, если для вычисления требуются проверки, то существует еще такой способ:

<TABLE>
<TR>
<xsl:for-each select="$rows">
<TD>
<xsl:attribute name="BGCOLOR">
  <xsl:choose>
    <xsl:when test="position() mod 2 = 0">
       <xsl:text>#CCCCCC</xsl:text>
    </xsl:when>
    <xsl:otherwise>
      <xsl:text>White</xsl:text>
    </xsl:otherwise>
  </xsl:choose>
</xsl:attribute>
</TD>
</xsl:for-each>
</TR>
</TABLE>
PM MAIL   Вверх
nmn
Дата 5.4.2010, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



Цитата(magelan @  5.4.2010,  15:54 Найти цитируемый пост)
Если атрибуты не требуют выбора, то ДядяВова абсолютно прав, если для вычисления требуются проверки, то существует еще такой способ:

<TABLE>
<TR>
<xsl:for-each select="$rows">
<TD>
<xsl:attribute name="BGCOLOR">
  <xsl:choose>
    <xsl:when test="position() mod 2 = 0">
       <xsl:text>#CCCCCC</xsl:text>
    </xsl:when>
    <xsl:otherwise>
      <xsl:text>White</xsl:text>
    </xsl:otherwise>
  </xsl:choose>
</xsl:attribute>
</TD>
</xsl:for-each>
</TR>
</TABLE> 


это к чему? smile

PM Skype   Вверх
magelan
Дата 5.4.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 7
Всего: 16



Цитата

а как же быть с тегами, где необходимо подставить значение в атрибут?
например <img href="подставляемое значение" />? 

к этому.

можно так: <IMG SRC="{$path}" />
можно так:
<IMG>
   <xsl:attribute name="SRC">
       <xsl:value-of select="$path" />
   </xsl:attribute>
</IMG>

задачи бывают разные, но чаще всего, конечно, используется 1й вариант.
PM MAIL   Вверх
davidoffpk
Дата 18.5.2010, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.3.2010

Репутация: 1
Всего: 1



Тема ранее уже была поднята, но решение мне не помогает...

Через xslt преобразование хочу добавить к xml строчку, предположим:

Код

<НаимОрг> Контора "Рога и Копыта"</НаимОрг> 


На выходе получаю:
...
Код

<НаимОрг> Контора &quot;Рога и Копыта&quot;</НаимОрг>


Использую процессор Oracle 10g.

Пробовал выводить через CDATA ,

пробовал 
Код

<xsl:text disable-output-escaping="yes">Контора &quot;Рога и Копыта&quot;</xsl:text>


не помогает...

Подскажите, плиз, как решить этот вопрос...
PM MAIL   Вверх
diadiavova
Дата 18.5.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Заключи свои "рога и копыта" в элемент text и установи соответстующий атрибут в нём.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
davidoffpk
Дата 18.5.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.3.2010

Репутация: 1
Всего: 1



Код

<xsl:text disable-output-escaping="yes">Контора "Рога и Копыта"</xsl:text> 


Так?

Так я тоже пробовал, не помогло.

PM MAIL   Вверх
diadiavova
Дата 18.5.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Тут всё может зависеть от того, на чём выполняешь преодразование. Особенностей поведения всех процессоров я не знаю, я только что скопипастил пример с твоего поста и выполнил в Visual Studio. Всё получилось нормально, если у тебя не работает как надо - ищи решение в документации по используемому тобой xslt-процессору.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
magelan
Дата 18.5.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 7
Всего: 16



Код

<xsl:text disable-output-escaping="yes"><![CDATA[Контора "Рога и Копыта"]]></xsl:text> 

Так лопают все парсеры. Но проблема может быть не в парсере а в форматтере. Это та хрень, которая делает постобработку результата трансформера, глотает пробелы, убирает закрытие тегов типа br и img и занимается прочей ерундой.
PM MAIL   Вверх
nmn
Дата 31.5.2010, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



в движке gecko есть проблема с disable-output-escaping, точнее он его просто игнорирует и ескейпит в независимости от этого параметра

есть ли какие то решения?
PM Skype   Вверх
nmn
Дата 1.6.2010, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



нашел некоторый вариант решения моей проблемы, мне нужно было выводить теги <a>. Содержимое тега все заключено в <![CDATA[]]>, а для того чтобы включить в содержимое тег <a> приходится разрывать секцию <![CDATA[]]>, т.е. <![CDATA[[some content-data which I]><a>a tag data</a><![CDATA[[had to cut into two parts]]>, а в правилах преобразования добавить правило вывода для этого тега

но вот как быть с амперсандами и прочим?

Это сообщение отредактировал(а) nmn - 1.6.2010, 23:38
PM Skype   Вверх
magelan
Дата 7.6.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 5.4.2010

Репутация: 7
Всего: 16



поменяй парсер.
увы, ничего умнее предложить не получается. 
я в 2000 году работал с xalan и таких "детских" проблем у него не было уже тогда.
Под виндами бессмертный MSXML, который по скорости трансформа просто Шумахер.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0988 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.