Текущее время: Пн, июн 23 2025, 02:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос по программе DEMO_SXML_TRAFO_FROM_READER
СообщениеДобавлено: Пт, май 29 2015, 16:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Уважаемые коллеги!
Я никак не пойму, почему из вот такой строки с XML
Code:
    DATA(xml) = cl_abap_codepage=>convert_to(
      `<document>` &&
      `  <head>` &&
      `    <author>KELLERH</author>` &&
      `    <date>20120824</date>` &&
      `  </head>` &&
      `  <body>` &&
      `    <asx:abap` &&
      `      xmlns:asx="http://www.sap.com/abapxml" version="1.0">` &&
      `      <asx:values>` &&
      `        <TABLE>` &&
      `          <item>1</item>` &&
      `          <item>2</item>` &&
      `          <item>3</item>` &&
      `        </TABLE>` &&
      `      </asx:values>` &&
      `    </asx:abap>` &&
      `  </body>` &&
      `</document>` ).

трансформация ID понимает, что нужно сделать внутреннюю таблицу со строками
Цитата:
1
2
3

Насколько я помню XSLT (приходилось пользоваться до сапа) трансформация ID вообще ничего делать не должна. Это просто копирование входного XML.
Цитата:
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:transform>



По какому принципу из XML сформировалась itab ? Какая-то волшебная обработка неймспейса xmlns:asx="http://www.sap.com/abapxml" ?
Заранее благодарю за пояснения.

_________________
С уважением.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по программе DEMO_SXML_TRAFO_FROM_READER
СообщениеДобавлено: Пт, май 29 2015, 23:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Ответ есть в хелпе
Цитата:
SAP delivers the identity transformation under the name ID. If you perform an identity transformation from XML to XML, the result is a copy of the source document. If you perform an identity transformation from ABAP to XML, this produces a canonical XML representation (asXML) of the ABAP data (explicit serialization). An identity transformation from XML to ABAP transforms a canonical XML representation to ABAP data (explicit deserialization).

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по программе DEMO_SXML_TRAFO_FROM_READER
СообщениеДобавлено: Пн, июн 01 2015, 10:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Спасибо, но я не понял :(
Наш случай, это:
Цитата:
An identity transformation from XML to ABAP transforms a canonical XML representation to ABAP data (explicit deserialization).

верно?
Так всё же на основании чего сап решил, что в тэге <TABLE> описана таблица, а <ITEM> - это строка таблицы? Почему, например, <ITEM> не восприняты как значения столбцов или еще как-нибудь иначе?

_________________
С уважением.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по программе DEMO_SXML_TRAFO_FROM_READER
СообщениеДобавлено: Пн, июн 01 2015, 11:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
А вот тут ответа на ваш вопрос случайно нет?
Ну и вообще вот

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос по программе DEMO_SXML_TRAFO_FROM_READER
СообщениеДобавлено: Пн, июн 01 2015, 13:18 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
calm написал(а):
Так всё же на основании чего сап решил, что в тэге <TABLE> описана таблица

Имя корневого тега при сеарилизации\десериализации берется из

call transformation id source document = ld_doc
result xml lx_xml.

Т.е. при такой сериализации данные будут лежать внутри тега <DOCUMENT>.

В один XML можно засунуть несколько структур\таблиц\полей типо такого:
Code:
call transformation id source
  document1 = ld_doc1
  document2 = ld_doc2
  result xml lx_xml.

А достать например только одно поле:
Code:
call transformation id source xml lx_xml
  result document2 = ld_doc2 .


calm написал(а):
а <ITEM> - это строка таблицы

Насколько помню строки таблицы могут быть обернуты в какой угодно тэг, хоть <ZZZZ> , хоть <ITEM> — десериализуется нормально.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос по программе DEMO_SXML_TRAFO_FROM_READER
СообщениеДобавлено: Вт, июн 02 2015, 09:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
А вот тут ответа на ваш вопрос случайно нет?

Ну... как бы всё равно смутно.
Всё сходится, если в предложении выделенное слово подразумевает тэг <TABLE>.
Цитата:
The rows of an internal table are represented in asXML as a sequence of subelements of the table element.

Однако в тексте имена тэгов выделены шрифтом, а тут - нет. Следовательно, тут подразумевается "таблица" в широком смысле. А если так, то отчего за строку таблицы не взять содержимое тэга <HEAD><AUTHOR>?

Цитата:
строки таблицы могут быть обернуты в какой угодно тэг, хоть <ZZZZ> , хоть <ITEM> — десериализуется нормально.

Да, спасибо, прочитал. Как-то не по-человечески :) Все строки строго из одного столбца?

В общем, пошел читать доки..

_________________
С уважением.


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

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


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

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


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

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