Текущее время: Вс, июн 22 2025, 15:34

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


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


ВНИМАНИЕ!

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



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

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

Нужно из 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
Сообщения: 180
А, может быть, у кого-нибудь есть примерчик как сформировать 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
Сообщения: 1257
Цитата:
Что-то мне кажется что в общем случае проблема не решаема т.к. валидный 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
Сообщения: 180
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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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