Текущее время: Пт, апр 19 2024, 20:41

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Трансформация - вывод значения без преобразования (escape)
СообщениеДобавлено: Пн, авг 01 2016, 12:29 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
Всем привет!

Нужно из ABAP-структуры сформировать HTML-файл.

Создал такую трансформацию:
Code:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"
              xmlns:ddic="http://www.sap.com/abapxml/types/dictionary"
>

<tt:root name="IS_DATA" />

<tt:template>
<html>
  <body>
    <tt:copy ref="IS_DATA.TITLE"/>
  </body>
</html>
</tt:template>


Запускаю так:
Code:
    is_data-title = `<a href="#">ссылка</a>`.

    CALL TRANSFORMATION zhtml
      SOURCE is_data = ls_data
      RESULT XML rv_html
      OPTIONS xml_header = 'no'
    .


Но умный парсер заменяет символы "<" и ">" на "&lt;" и "&gt;" соответственно.

1) Можно ли это как-то отключить?

2) Нашёл, что можно это сделать при помощи XSLT-программы (пример преобразования DEMO_ESCAPING_TEXT), но в ней неудобно формировать шаблон для HTML. Или можно как-то лаконичней всё описывать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Трансформация - вывод значения без преобразования (escape)
СообщениеДобавлено: Вт, авг 02 2016, 12:54 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
А, может быть, у кого-нибудь есть примерчик как сформировать HTML при помощи XSLT-программы с заполнение данных из ABAP-структуры?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Трансформация - вывод значения без преобразования (escape)
СообщениеДобавлено: Ср, авг 03 2016, 04:44 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
UKY написал(а):
А, может быть, у кого-нибудь есть примерчик как сформировать HTML при помощи XSLT-программы с заполнение данных из ABAP-структуры?


Что-то мне кажется что в общем случае проблема не решаема т.к. валидный HTML не является валидным XML. А вам зачем HTML генерировать? В сторону BSP не смотрели?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Трансформация - вывод значения без преобразования (escape)
СообщениеДобавлено: Ср, авг 03 2016, 09:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Цитата:
Что-то мне кажется что в общем случае проблема не решаема т.к. валидный HTML не является валидным XML.

Ну то что валидным не является - не значит, что нельзя генерировать. Вполне можно. Без использования ссылок - сам генерировал (письма в формате html, если быть точным).

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трансформация - вывод значения без преобразования (escape)
СообщениеДобавлено: Ср, авг 03 2016, 09:37 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
Кодер написал(а):
Ну то что валидным не является - не значит, что нельзя генерировать. Вполне можно. Без использования ссылок - сам генерировал (письма в формате html, если быть точным).


Я почему-то думал что в сапе на выходе из XSLT может быть только XML (ну либо XML-представление абап-типов). А получается на выходе может быть любой текст? Насколько я знаю результатом XSLT вообще может быть хоть бинарный файл, но можно ли так сделать в абапе?

В общем, задал вопрос и сам себе ответил: да на выходе может быть произвольный текст.

Code:
<xsl:strip-space elements="*"/>
<xsl:template match="/">
  <body>
    <xsl:value-of select="//IS_DATA/TITLE" disable-output-escaping="yes" />
  </body>
</xsl:template>
...

data: begin of is_data,
  title type string,
  end of is_data.
is_data-title = `<a href="#">ссылка`.

data: xstr type xstring.

call transformation Z source is_data = is_data
                       result xml xstr.



Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Трансформация - вывод значения без преобразования (escape)
СообщениеДобавлено: Ср, авг 03 2016, 11:44 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 09:41
Сообщения: 179
AFH написал(а):
<xsl:value-of select="//IS_DATA/TITLE" disable-output-escaping="yes" />


Огромное спасибо за disable-output-escaping="yes" - это то, что надо!

А то только нашёл отмену замены для всего текста:
Code:
<xsl:output method="text" />


Но всё же теплится надежда на то, что и в simple transformation можно так же отключить автозамену...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB