Текущее время: Пт, июн 27 2025, 13:22

Часовой пояс: 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 часа


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

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


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

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