рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдиреЛрдЯ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ? рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ, рдЬрд┐рд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЕрдЬреНрдЮрд╛рдд (рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд) рдкреНрд░рдХрд╛рд░ (REF TO DATA) рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рд╛рд░реВрдк рдХрд╛ XML рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реБрд░реВ рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рд╣реИред
рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? OLE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд┐рднрд┐рдиреНрди MS Office XML рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдпрд╣ рдиреЛрдЯ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ? ABAP рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдПред
рдЖрд╡рд╢реНрдпрдХ рд╕реНрддрд░ рдХрд╛ рдЬреНрдЮрд╛рди: рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐
рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ ,
рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ ,
рдПрдХреНрд╕рдПрдордПрд▓ рдХреНрдпрд╛ рд╣реИ ; рд╕реБрдирд╛ рд╣реИ рдХрд┐
XSLT рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ
рд╣реИ ред
рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ?
рдХрд╛рд░реНрдп
рдПрдХ рдкреЗрдбрд╝ рд╣реИред рдкреЗрдбрд╝ рдХреЛ рдПрдХ рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data " , END OF tdeep_struct , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY .
рдпрд╛рдиреА
rf_child_list
рдлрд╝реАрд▓реНрдб рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред
рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреА рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ, рдЖрдкрдХреЛ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рдХреА XML рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<List> <MyItem> <Name> </Name> </MyItem> <MyItem> <Name> </Name> </MyItem> </List>
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореА XML рдореЗрдВ рд╕реНрд░реЛрдд рдЯреНрд░реА рдХреЗ рдиреЛрдбреНрд╕ рдХрд╛ рд╕реНрдерд╛рди рдЕрд╡рд░реЛрд╣реА рдЯреНрд░реА рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрд░реНрдерд╛рдд, рд╣рдо рдКрдкрд░ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣
rf_child_list
рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрд╢реНрд░рд┐рдд рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ - рдлрд┐рд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдШрдЯрд╛ рджреЗрдВрдЧреЗ, рдЖрджрд┐)ред
рдЯреЗрд╕реНрдЯ рдХреЗрд╕
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рдкреЗрдбрд╝ рд╣реИрдВ (рдирд╛рдо рдлрд╝реАрд▓реНрдб рдХреЗ рдореВрд▓реНрдп рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ):
GrandParent1 Child1 Child2 GrandChild1 GrandParent2
рдХрд╛рд░реНрдп рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рд╕реЗ рдРрд╕реЗ XML рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдВрддрд┐рдо XML рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреЗ рд▓рд┐рдП <List> <MyItem> <Name> GrandParent1</Name> </MyItem> <MyItem> <Name>Child1 </Name> </MyItem> <MyItem> <Name>Child2 </Name> </MyItem> <MyItem> <Name>GrandChild1 </Name> </MyItem> <MyItem> <Name> GrandParent2</Name> </MyItem> </List>
рдирд┐рд░реНрдгрдп
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: ABAP рдХреЛрдб, рдХреНрдпрд╛ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рднрд░реЗрдВ DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree.
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╣рдореЗрдВ XSLT рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреВрдВрдХрд┐ рдЗрд╕ рдиреЛрдЯ рдХрд╛ рдЯреИрдЧ "рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП XSLT" рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╣реИ, рддреЛ рдпрд╣ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдПрдХреНрд╕рдПрдордПрд▓ рд╕реЗ рджреВрд╕рд░реЗ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, XSLT рд╕реНрд╡рдпрдВ XML рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИред рдЗрд╕реЗ рд░реЛрдХреЛ! рдФрд░ рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдХрд╣рд╛рдБ рд╣реИ, рдЕрдЧрд░ рдпрд╣ XML рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ? рдФрд░ рдпрд╣ SAP рдореЗрдВ XSLT рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдПрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВред
ABAP рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдСрдкрд░реЗрдЯрд░
рдХреЙрд▓ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрдерди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдХрдИ рдХрд╛рдо рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
рд╣рдо
SOURCE _ = __
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдкрд░рд┐рдгрд╛рдо
RESULT XML XML/ //
рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рд╣рдо CL_XML_DOCUMENT рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдирдХ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:
CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
рдЕрд░реЗ рд╣рд╛рдБ ... рдореИрдВ рд╡рд┐рдЪрд▓рд┐рдд рд╣реВрдБ! рд╕рд╡рд╛рд▓ рдпрд╣ рдерд╛ рдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдПрдХреНрд╕рдПрдордПрд▓ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд╛ рдХреЛрдИ рд▓реЗрдирд╛ рджреЗрдирд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?
рдмрд┐рдЯ рдЖрд░рдЯреАрдПрдо
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрдкреА рдбреЗрдЯрд╛ рдХреЛ
рдХреНрд░рдордмрджреНрдз рдФрд░ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдХреИрд╕реЗ рдПрдХ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рдВрд░рдЪрдирд╛, рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛, рдСрдмреНрдЬреЗрдХреНрдЯ) рд╕реЗ рдмрд┐рдЯреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ: рдЗрдирдкреБрдЯ рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛ (рдЖрдВрддрд░рд┐рдХ ABAP рддрд╛рд▓рд┐рдХрд╛) рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ XML (рдкрд╛рда рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рд╣реИред
SAP рдореЗрдВ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ XSLT рд╣реИрдВ: рдирд┐рдпрдорд┐рдд XSLT рдФрд░ рд╕рд░рд▓ рдкрд░рд┐рд╡рд░реНрддрди (ST)ред SAP рдереЛрдбрд╝рд╛ XSLT рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ XSLT рдХреЗ рдЕрдкрдиреЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд░рд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╣рд╛ред рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рд╢реБрджреНрдз XSLT рд░рд╣рддрд╛ рд╣реИред
SAP, рдЬрдм XSLT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ, рдЗрдирдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ asXML (
рдХреИрдиреЛрдирд┐рдХрд▓ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ ) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд
рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ,
рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ , ABAP рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдЖрдк
рдЖрд░рдХреНрд╖рд┐рдд рдЖрдИрдбреА рдирд╛рдо рдХреЗ рд╕рд╛рде ABAP
XSLT рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ
рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЪрд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
ABAP рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ

рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╣рд┐рдд XML рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: <?xml version="1.0" encoding="utf-8" ?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0"> <asx:values> <TABLE> <item> <NAME>GrandParent1</NAME> <RF_CHILD_LIST href="#d1" /> </item> <item> <NAME>GrandParent2</NAME> <RF_CHILD_LIST /> </item> </TABLE> </asx:values> <asx:heap xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:abap="http://www.sap.com/abapxml/types/built-in" xmlns:cls="http://www.sap.com/abapxml/classes/global" xmlns:dic="http://www.sap.com/abapxml/types/dictionary"> <prg:T_DEEP_STRUCT id="d1" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM"> <item> <NAME>Child1</NAME> <RF_CHILD_LIST /> </item> <item> <NAME>Child2</NAME> <RF_CHILD_LIST href="#d2" /> </item> </prg:T_DEEP_STRUCT> <prg:T_DEEP_STRUCT id="d2" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM"> <item> <NAME>GrandChild1</NAME> <RF_CHILD_LIST /> </item> </prg:T_DEEP_STRUCT> </asx:heap> </asx:abap>
рдФрд░ рдЖрдЧреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд░рд╣рдирд╛ рд╣реИ?
рдЖрдВрддрд░рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП XML рдХреЗ рд╡рд┐рд╣рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░, рддрд╛рд▓рд┐рдХрд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рддрддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ
, . . .. RF_CHILD_LIST , DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.
, ┬л┬╗(F5).
тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT
, . . .. RF_CHILD_LIST
, DATA ( TYPE REF TO DATA
), , href
, .
, <RF_CHILD_LIST href="#d1" />
, #
- XLink , d1
тАУ . XML-: asx:heap
, id
d1. < prg:T_DEEP_STRUCT id="d1" тАж >
. , .
.., XML , .
XSLT- ?
XSLT-.
SAP STRANS.

, ┬л┬╗(F5).

тАУ , ( тАУ XSLT). Enter.
XSLT, . , , тАУ .
, .., , ( , , , html ).
, , .. .
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"> <xsl:strip-space elements="*"/> <xsl:template match="/"> </xsl:template> </xsl:transform>
:
xmlns:xsl
, xsl. .. , xsl
: ( <xsl:strip-space elements="*"/>
) xmlns:sap
, sap xsl:transform
, XSLT- <xsl:strip-space elements="*"/>
<xsl:template match="/">
, XML
XSLT- ( xsl:template
) XML-, match
. match
XPath . , ┬л/┬╗, XML- TABLE
"/asx:abap/asx:values/TABLE" (.. XML- ( asx:abap
) ( TABLE
)).
, XML- List. :
<xsl:template match="/"> <List> </List> </xsl:template>
item
TABLE
XML , <xsl:for-each select="/asx:abap/asx:values/TABLE/item">
, select
XPath , . MyItem
, Name
NAME , . , :
<xsl:template match="/"> <List> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </List> </xsl:template>
<xsl:value-of select="NAME"/>
, select
XPath- , . , xsl:value-of
, xsl:for-each
. , xsl:for-each
, , xsl:value-of
тАУ (.. xsl:for-each
).
, , .
, asx, sap, prg
(XSLT ). XML, xsl:transform
:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0">
.. , exclude-result-prefixes
, XML.
, RF_CHILD_LIST
. . тАУ .
, id . ChilListID
. .
:
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> </xsl:template>
.. OutChilds
ChilListID
. , XML-, /asx:abap/asx:heap
.
? item prg:T_DEEP_STRUCT
id ChilListID
. xsl:for-each
.
prg:T_DEEP_STRUCT
id ChilListID
:
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]">
XPath , prg:T_DEEP_STRUCT
, id
ChilListID
.
item: <xsl:for-each select="item">
, , , , XSLT . :
<xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item">
MyItem
Name
. :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> </xsl:for-each> </xsl:template>
. : .
xsl:apply-templates
, select
XML .
, , ChilListID
. , , RF_CHILD_LIST
href,
#id___
. .. href
, . XPath : substring(RF_CHILD_LIST/@href,2)
. .. :
<xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates>
, :
<xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <xsl:param name="ChilListID"/> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template>
, , , .
, : <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:asx="http://www.sap.com/abapxml" xmlns:prg="http://www.sap.com/abapxml/types/program/ZEDU_TEST_XSLT_DEEP_TRANSFORM" exclude-result-prefixes="asx sap prg" version="1.0"> <xsl:strip-space elements="*"/> <!-- , . --> <xsl:template match="/"> <List> <!-- XML --> <xsl:for-each select="/asx:abap/asx:values/TABLE/item"> <MyItem> <!-- NAMR --> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- , --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </List> </xsl:template> <!-- --> <xsl:template match="/asx:abap/asx:heap" name="OutChilds"> <!-- --> <xsl:param name="ChilListID"/> <!-- , id , --> <xsl:for-each select="prg:T_DEEP_STRUCT[@id=$ChilListID]/item"> <MyItem> <Name><xsl:value-of select="NAME"/></Name> </MyItem> <!-- --> <xsl:apply-templates select="/asx:abap/asx:heap"> <xsl:with-param name="ChilListID" select="substring(RF_CHILD_LIST/@href,2)"/> </xsl:apply-templates> </xsl:for-each> </xsl:template> </xsl:transform>
ABAP- REPORT zedu_test_xslt_deep_transform. * " " TYPES : BEGIN OF tdeep_struct , name TYPE string , rf_child_list TYPE REF TO data , END OF tdeep_struct * " " , t_deep_struct TYPE STANDARD TABLE OF tdeep_struct WITH NON-UNIQUE DEFAULT KEY . DATA : gt_tree TYPE t_deep_struct " , gtree TYPE tdeep_struct " , gchild TYPE tdeep_struct " , ggrandchild TYPE tdeep_struct " , gxml_str TYPE string " XML , go_xml_doc TYPE REF TO cl_xml_document " XML . FIELD-SYMBOLS : <gt_child_list> TYPE t_deep_struct " , <gt_grandchild_list> TYPE t_deep_struct " . START-OF-SELECTION. * gtree-name = 'GrandParent1'. CREATE DATA gtree-rf_child_list TYPE t_deep_struct. ASSIGN gtree-rf_child_list->* TO <gt_child_list>. gchild-name = 'Child1'. APPEND gchild TO <gt_child_list>. gchild-name = 'Child2'. CREATE DATA gchild-rf_child_list TYPE t_deep_struct. ASSIGN gchild-rf_child_list->* TO <gt_grandchild_list>. ggrandchild-name = 'GrandChild1'. APPEND ggrandchild TO <gt_grandchild_list>. APPEND gchild TO <gt_child_list>. APPEND gtree TO gt_tree. CLEAR gtree. gtree-name = 'GrandParent2'. APPEND gtree TO gt_tree. * XSLT- CALL TRANSFORMATION zedu_test_xslt_deep_transform2 SOURCE table = gt_tree RESULT XML gxml_str. * XML CREATE OBJECT go_xml_doc. go_xml_doc->parse_string( gxml_str ). go_xml_doc->display( ).
, XSLT ?
ABAP MSDN: XSLT XPath tutorial XSLT