Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > XML, XSL > escaping символов |
Автор: nmn 18.3.2010, 13:49 | ||
вот есть
тем не менее полсле преобразований все равно < заменяется на > |
Автор: diadiavova 18.3.2010, 14:37 |
Доктайп выводится с помощью элемента output, а эскейпится из-за того, что таков стандарт XML, в нём эти символы недопустимы не в тех местах, если в качестве метода вывода указать text, то этого происходить не будет. |
Автор: nmn 18.3.2010, 19:35 |
то бишь если html, то никак вывести не удастся? а чем text отличается от html вывода? |
Автор: diadiavova 18.3.2010, 20:12 |
Тем, что в HTML, так же как и в XML эти символы имеют специальное значение и просто так в тексте появиться не могут, а для вывода их как спецсимволов существую свои правила(как например для доктайпа, который указывается в элементе output). |
Автор: nmn 18.3.2010, 22:11 |
хмм обидно... а как же быть с тегами, где необходимо подставить значение в атрибут? например <img href="подставляемое значение" />? |
Автор: nmn 18.3.2010, 22:17 |
спасибо!!! |
Автор: nmn 31.3.2010, 14:24 |
позарез надо выводить информацию вида <script>тело скрипта</script> в теле скрипта встречаются символы '<' '>'. есть ли какие то лазейки для того чтобы в поток вывода вывести '<' или '>'? |
Автор: diadiavova 31.3.2010, 14:32 | ||||
Конечно
|
Автор: nmn 31.3.2010, 19:18 |
нужно вывести именно < или > |
Автор: diadiavova 31.3.2010, 19:44 |
Я понял ![]() |
Автор: nmn 31.3.2010, 21:41 | ||
все равно выводит > а нужно > |
Автор: diadiavova 31.3.2010, 22:15 | ||
Тогда так
|
Автор: nmn 31.3.2010, 22:33 |
громоздко, но все равно спасибо!!! |
Автор: diadiavova 1.4.2010, 12:55 |
В элементе text можно разместить весь скрипт, а не только один символ. Кроме того, скрипт всегда можно вынести в отдельный файл. |
Автор: magelan 5.4.2010, 15:54 |
Если лень морочится с валидностью, то 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> |
Автор: nmn 5.4.2010, 16:40 | ||
это к чему? ![]() |
Автор: magelan 5.4.2010, 16:46 | ||
к этому. можно так: <IMG SRC="{$path}" /> можно так: <IMG> <xsl:attribute name="SRC"> <xsl:value-of select="$path" /> </xsl:attribute> </IMG> задачи бывают разные, но чаще всего, конечно, используется 1й вариант. |
Автор: davidoffpk 18.5.2010, 10:12 | ||||||
Тема ранее уже была поднята, но решение мне не помогает... Через xslt преобразование хочу добавить к xml строчку, предположим:
На выходе получаю: ...
Использую процессор Oracle 10g. Пробовал выводить через CDATA , пробовал
не помогает... Подскажите, плиз, как решить этот вопрос... |
Автор: diadiavova 18.5.2010, 10:15 |
Заключи свои "рога и копыта" в элемент text и установи соответстующий атрибут в нём. |
Автор: davidoffpk 18.5.2010, 11:00 | ||
Так? Так я тоже пробовал, не помогло. |
Автор: diadiavova 18.5.2010, 11:11 |
Тут всё может зависеть от того, на чём выполняешь преодразование. Особенностей поведения всех процессоров я не знаю, я только что скопипастил пример с твоего поста и выполнил в Visual Studio. Всё получилось нормально, если у тебя не работает как надо - ищи решение в документации по используемому тобой xslt-процессору. |
Автор: magelan 18.5.2010, 14:07 | ||
Так лопают все парсеры. Но проблема может быть не в парсере а в форматтере. Это та хрень, которая делает постобработку результата трансформера, глотает пробелы, убирает закрытие тегов типа br и img и занимается прочей ерундой. |
Автор: nmn 31.5.2010, 17:17 |
в движке gecko есть проблема с disable-output-escaping, точнее он его просто игнорирует и ескейпит в независимости от этого параметра есть ли какие то решения? |
Автор: nmn 1.6.2010, 23:37 |
нашел некоторый вариант решения моей проблемы, мне нужно было выводить теги <a>. Содержимое тега все заключено в <![CDATA[]]>, а для того чтобы включить в содержимое тег <a> приходится разрывать секцию <![CDATA[]]>, т.е. <![CDATA[[some content-data which I]><a>a tag data</a><![CDATA[[had to cut into two parts]]>, а в правилах преобразования добавить правило вывода для этого тега но вот как быть с амперсандами и прочим? |
Автор: magelan 7.6.2010, 11:50 |
поменяй парсер. увы, ничего умнее предложить не получается. я в 2000 году работал с xalan и таких "детских" проблем у него не было уже тогда. Под виндами бессмертный MSXML, который по скорости трансформа просто Шумахер. |