sappress xml fuer abap entwickler

Upload: andrei-preda

Post on 03-Jun-2018

277 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    1/43

    Bonn Boston

    Tobias Trapp

    XML fr ABAP-Entwickler

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    2/43

    5

    Inhalt

    Vorwort zur zweiten Auflage .................................................................... 11

    In diesem Kapitel lernen Sie die wichtigsten Anwendungsgebiete vonX ML-Technologien innerhalb und auerhalb der Plattform SAP NetWeaver kennen. 15

    1 Einleitung ............................................................................ 15

    1.1 Anwendungsgebiete von XML-Technologien ......................... 16

    1.1.1 XML fr den Austausch von Daten und

    Dokumenten ............................................................. 16

    1.1.2 XML im E-Business ................................................... 18

    1.1.3 XML in der Anwendungsintegration .......................... 19

    1.2 XML innerhalb von SAP NetWeaver ...................................... 19

    1.2.1 XML im Datenaustausch ........................................... 191.2.2 XML in ABAP-Anwendungen .................................... 21

    1.2.3 XML in der ABAP-Entwicklung .................................. 22

    1.2.4 XML als Integrationstechnologie ............................... 23

    1.2.5 XML fr die Generierung und das Parsen von

    Dokumenten ............................................................. 25

    1.2.6 XML in Webanwendungen ....................................... 25

    1.3 XML-Verarbeitung durch String-Manipulation ....................... 27

    1.3.1 Verwendung von String-Operationen ........................ 27

    1.3.2 Parsen mit regulren Ausdrcken .............................. 281.3.3 Softwaretechnische Grnde fr Application

    Programming Interfaces ............................................ 29

    1.4 Zusammenfassung ................................................................. 29

    In diesem Kapitel lernen Sie die wichtigsten Mitglieder der XML-Familie kennen, beginnend mit der Syntax und Semantik v on XML bis hin zum Vokabular der Semantic-Web-Standards. 31

    2 XML-Standards und XML-Middleware .............................. 31

    2.1 Einfhrung in XML ................................................................ 31

    2.1.1 XML-Syntax .............................................................. 32

    2.1.2 XML-Semantik .......................................................... 392.2 XML-Vokabulare ................................................................... 40

    2.2.1 Really Simple Syndication ......................................... 40

    2.2.2 WordML, ODF und OOXML ..................................... 42

    2.2.3 XSL Formatting Objects ............................................ 42

    2.2.4 Scalable Vector Graphics ........................................... 44

    2.2.5 XHTML ..................................................................... 45

    2.2.6 XML-Linking ............................................................. 45

    2.3 XSL-Transformationen ........................................................... 46

    2.3.1 Lokalisierungen mit XPath ......................................... 48

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    3/43

    Inhalt

    6

    2.3.2 Template-Verarbeitung mit XSLT .............................. 49

    2.3.3 Strken und Schwchen von XSLT ............................. 51

    2.4 XML-Schemasprachen ........................................................... 51

    2.4.1 Document Type Definitions ...................................... 52

    2.4.2 XML Schema ............................................................. 532.4.3 Schematron ............................................................... 59

    2.4.4 Grundregeln fr die Erstellung eigener Vokabulare .... 61

    2.5 XML als Basis des Semantic Web ........................................... 62

    2.5.1 Resource Description Framework .............................. 62

    2.5.2 Web Ontology Language ........................................... 66

    In diesem Kapitel lernen Sie die XML-Library kennen. Sie ist die lteste XML-Programmierschnittstelle des AS ABAP und die einzige, die einen Service zur Validierung von XML-Dokumenten gegen DTDs bietet. 71

    3 XML-Library ........................................................................ 71

    3.1 Einfhrung ............................................................................. 723.1.1 Erzeugen eines DOM-Baumes ................................... 72

    3.1.2 Filter und Iteratoren .................................................. 74

    3.2 Wichtige Interfaces ................................................................ 76

    3.3 Datenquellen ......................................................................... 78

    3.4 DOM-API .............................................................................. 79

    3.4.1 Zugriff auf den DOM-Baum ....................................... 79

    3.4.2 Manipulation eines DOM-Baumes ............................ 80

    3.5 Rendern von XML-Dokumenten ............................................ 82

    3.6 Validierung gegen Document Type Definitions ...................... 833.6.1 Interner Verweis auf eine Document Type

    Definition ................................................................. 84

    3.6.2 Validierung bei internen Document Type

    Definitions ................................................................ 85

    3.6.3 Validierung bei externen Document Type

    Definitions ................................................................ 85

    3.7 Untersttzung von Namensrumen ........................................ 86

    3.7.1 Namensraumuntersttzung der XML-Library ............. 87

    3.7.2 Elementidentifikation mit Namensrumen ................. 903.8 Ereignisbasiertes Parsen ......................................................... 91

    3.8.1 SAX-Schnittstelle ...................................................... 91

    3.8.2 Fallstricke ................................................................. 93

    3.9 Service-Schnittstellen zur XML-Library ................................... 94

    Sie lernen in diesem Kapitel mit dem SXML-Parser die jngste XML-Programmierschnittstelle im AS ABAP kennen. ber diese knnen Sie auch binre XML-Daten erzeugen. 97

    4 SXML-Parser ....................................................................... 97

    4.1 Reader- und Writer-Klassen ................................................... 98

    4.2 SXML-Parser .......................................................................... 1014.2.1 Zugriff ber das Interface IF_SXML_NODE ................ 102

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    4/43

    Inhalt

    7

    4.2.2 Token-Modus ........................................................... 104

    4.3 Anwendungsbeispiele ............................................................ 105

    4.3.1 Verwendung von Binary XML .................................... 105

    4.3.2 Ermittlung des Headers eines XML-Dokumentes ....... 106

    In diesem Kapitel lernen Sie den ABAP-XSLT-Prozessor und seine SAP-spezifischen Erweiterungen kennen. XSLT ist eines der mchtigsten Werkzeuge zur Verarbeitung von XML-Dokumenten. 109

    5 XSL-Transformationen ........................................................ 109

    5.1 Integration von XSLT in die ABAP Workbench ....................... 110

    5.1.1 Tag Browser .............................................................. 111

    5.1.2 XSLT-Tester .............................................................. 111

    5.1.3 bergabe von Parametern im XSLT-Tester ................ 112

    5.1.4 XSLT-Debugger ......................................................... 113

    5.2 Integration von XSLT in ABAP ............................................... 114

    5.2.1 Aufruf von XSLT aus ABAP ........................................ 1155.2.2 Aufruf von ABAP aus XSLT ........................................ 117

    5.2.3 Ausnahmebehandlung bei ABAP-Aufrufen

    von XSLT .................................................................. 122

    5.3 Transformation von ABAP-Daten ........................................... 123

    5.4 SAP-spezifische Erweiterungen .............................................. 127

    5.4.1 Numerische Funktionen ............................................ 127

    5.4.2 String-Funktionen ..................................................... 128

    5.4.3 XPath-Operatoren und Pfadausdrcke aus

    XPath 2.0 .................................................................. 1295.4.4 Kommandos fr Nodesets ......................................... 130

    5.4.5 Weitere Funktionen .................................................. 130

    5.4.6 SAP-spezifische Einschrnkungen .............................. 133

    5.5 XSLT-2.0-Untersttzung ........................................................ 134

    5.5.1 Definitionen von XPath-Funktionen und bedingte

    XPath-Ausdrcke ...................................................... 134

    5.5.2 Gruppierung von XML-Elementen ............................. 135

    5.5.3 Mehrere Ein- und Ausgabedokumente ...................... 139

    5.5.4 Ausgabeformatierung ................................................ 1415.6 Generierung von Code ........................................................... 141

    5.6.1 Text-Templates ......................................................... 142

    5.6.2 Abstrakte Syntaxbume von XPath-Ausdrcken ........ 144

    5.7 Tipps fr die Praxis ................................................................ 145

    5.7.1 Encoding .................................................................. 145

    5.7.2 Performance ............................................................. 145

    5.7.3 Erweiterungen .......................................................... 146

    5.7.4 Modularisierung von Transformationsprogrammen .... 146

    5.7.5 Konstruktion portabler Transformationen .................. 147

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    5/43

    Inhalt

    8

    Simple Transformations bezeichnen eine SAP-proprietre Programmiersprache, die Sie einsetzen sollten, wenn Performanceaspekte wichtig sind oder Sie groe XML-Dokumente verarbeiten wollen. Wie da s in der Praxis funktioniert, zeigt Ihnen dieses Kapitel. 149

    6 Simple Transformations ...................................................... 149

    6.1 Grundstruktur ........................................................................ 150

    6.2 Zugriff auf Datenobjekte ........................................................ 153

    6.2.1 Zugriff auf elementare Datenobjekte ......................... 1536.2.2 Datenwurzeln und Datenknoten ............................... 154

    6.2.3 Attribute ................................................................... 156

    6.2.4 Strukturen ................................................................. 156

    6.2.5 Interne Tabellen ........................................................ 157

    6.2.6 XML-Reprsentation von ABAP-Daten ...................... 160

    6.3 Variablen und Parameter ....................................................... 161

    6.3.1 Zuweisungen von Variablen und Parametern ............. 161

    6.3.2 Fallunterscheidungen mit Variablen .......................... 162

    6.4 Bedingte Transformationen .................................................... 1626.4.1 Optionale Elemente und Attribute ............................ 163

    6.4.2 Vorbedingungen, Bedingungen und Zusicherungen ... 165

    6.4.3 tt:cond im Detail ....................................................... 168

    6.4.4 Fallunterscheidung .................................................... 171

    6.4.5 Gruppierung ............................................................. 175

    6.5 Mappings .............................................................................. 180

    6.5.1 Mapping-Attribut ..................................................... 181

    6.5.2 Mapping mit Fallunterscheidungen ........................... 181

    6.5.3 Bedingte Transformationen mit Variablen ................. 1836.5.4 Struktur-Mappings .................................................... 184

    6.6 Modulare Transformationsprogramme ................................... 185

    6.6.1 Unter-Templates ....................................................... 186

    6.6.2 Einbindung von Transformationen ............................. 186

    6.6.3 Aufruf externer ST-Programme .................................. 186

    6.7 Weitere Themen .................................................................... 186

    6.7.1 Literale Inhalte .......................................................... 187

    6.7.2 Namensrume ........................................................... 188

    6.7.3 Typisierung ............................................................... 1906.7.4 Best Practices ............................................................ 193

    6.7.5 Ausblick auf weitere Entwicklungen .......................... 193

    Mit XML-Technologien knnen Sie Systeme und Anwendungen verbinden und die Programmierweisen fr neue und innovative Lsungen etablieren. In diesem Kapitel werden Sie dazu die passenden Anwendungsbeispiele kennenlernen sowohl fr XML-Technologien als auchfr fortgeschrittene XSLT-Programmiertechniken. 195

    7 XML-Anwendungsbeispiele ................................................ 195

    7.1 Unit-Tests von XSLT-Programmen ......................................... 195

    7.1.1 Fallbeispiel: Komplexe Operation auf

    Knotenmengen ......................................................... 197

    7.1.2 Zusammenfassung ..................................................... 201

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    6/43

    Inhalt

    9

    7.2 Schematron-Implementierung ............................................... 202

    7.2.1 Speicherung der Schemata in eCATT-Containern ....... 202

    7.2.2 Ablauf der Generierung ............................................. 205

    7.2.3 Generierung der Validierungstransformation ............. 207

    7.2.4 Erzeugung von XSLT-Entwicklungselementen ............ 2107.2.5 Zusammenfassung ..................................................... 211

    7.3 XSLT-Erweiterungen durch EXSLT .......................................... 212

    7.3.1 berprfung regulrer Ausdrcke ............................. 213

    7.3.2 Zusammenfassung ..................................................... 215

    7.4 REST-Webservices ................................................................. 215

    7.4.1 Wiedergabe von Informationen ber Kurzdumps ...... 216

    7.4.2 REST-Webservices in der Praxis ................................. 218

    7.4.3 Zusammenfassung ..................................................... 221

    7.5 Objektserialisierung ............................................................... 2217.5.1 Anwendungsbeispiel Terminverwaltung .................... 221

    7.5.2 Strken und Schwchen ............................................ 225

    7.5.3 Zusammenfassung ..................................................... 226

    7.6 Domnenspezifische Sprachen ............................................... 226

    7.6.1 Anwendungsbeispiel Datumsberechnung .................. 227

    7.6.2 Zusammenfassung ..................................................... 232

    7.7 XML als Dokumentenformat .................................................. 232

    7.7.1 Parsen von Excel-Dokumenten .................................. 233

    7.7.2 Erstellung von WordML-Dokumenten ....................... 2357.7.3 Erzeugung von PDF-Dateien mittels XSL-FO ............. 237

    7.7.4 Zusammenfassung ..................................................... 237

    In diesem Kapitel werden Sie erfahren, mit welchen XML-Vokabularen Sie Metadaten zu Stamm- und Bewegungsdaten des AS ABAP erzeugen und auf welchen Anwendungsfeldern Sie davon profitieren knnen. 239

    8 Metadaten und Semantic-Web-Technologien ................... 239

    8.1 Realisierung eines RSS-Feeds ................................................. 241

    8.1.1 Exponieren von ABAP-Kurzdumps als RSS-Feed ........ 242

    8.1.2 Erzeugung der RSS-Daten ......................................... 246

    8.1.3 Zusammenfassung ..................................................... 2498.2 Resource Description Framework .......................................... 249

    8.2.1 Metainformationen fr XML-Transformationen ......... 250

    8.2.2 Exponieren der Metadaten als REST-Webservice ....... 258

    8.2.3 Integration von Metadaten in XML-Dokumente ........ 258

    8.2.4 Zusammenfassung ..................................................... 263

    8.3 Ontologien ............................................................................ 263

    8.3.1 Verwendungen zwischen Transformationen

    im AS ABAP .............................................................. 264

    8.3.2 Reasoning in OWL .................................................... 267

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    7/43

    Inhalt

    10

    8.3.3 Generierung der Ontologie ....................................... 269

    8.3.4 Zusammenfassung ..................................................... 273

    In diesem Kapitel werden Sie erfahren, mit welchen XML-Vokabularen Sie Metadaten zu Stamm- und Bewegungsdaten des AS ABAP erzeugen und auf welchen Anwendungsfeldern Sie davon p rofitieren knnen. 239

    Anhang ...................................................................................... 275

    A Literaturverzeichnis .......................................................................... 275

    B Der Autor ........................................................................................ 278

    Index ........................................................................................................ 279

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    8/43

    11

    Vorwort zur zweiten Auflage

    XML-Technologien haben sich zu Schlsseltechnologien von SAP NetWeaver

    entwickelt. Wurden die ersten XML-Programmierschnittstellen von Anwen-

    dungsentwicklern in erster Linie genutzt, um den Datenaustausch mit exter-

    nen Partnern zu betreiben, durchziehen sie nun die gesamte Plattform und

    sind Basis fast aller Integrationstechnologien. Auch innerhalb der Anwen-

    dungen des SAP NetWeaver Application Servers ABAP (AS ABAP) werden sie

    verwendet, wenn flexible Programmiermodelle gefragt sind.

    Aus diesem Grund habe ich mich entschlossen, der zweiten Auflage des SAP-

    HeftesXML-Datenaustausch in ABAPeinen neuen Fokus zu geben, der sich

    auch im Titel dieses Buches widerspiegelt. Standen in der ersten Auflage vor

    allem Integrationsszenarien im Vordergrund, sollen in dieser Neuauflage

    viele unterschiedliche Anwendungsgebiete behandelt werden, um die Str-

    ken von XML-basierten Lsungen aufzuzeigen. Insbesondere dieser letzte

    Aspekt wird weiter an Bedeutung gewinnen, da der AS ABAP aufgrund sei-

    ner Robustheit und der Vielzahl seiner Programmierschnittstellen einemchtige Plattform fr die Entwicklung von Geschftsanwendungen ist.

    Inhalt, Ziel und Zielgruppen des Buches

    Dieses Buch behandelt alle XML-Programmierschnittstellen des AS ABAP.

    Ihnen wird vermittelt, in welchen Bereichen der Anwendungsentwicklung

    Sie XML-Technologien gewinnbringend einsetzen knnen. Neben den

    Grundlagen werden dabei auch fortgeschrittene Programmiertechniken und

    Anwendungsgebiete vorgestellt.

    Dieses Buch richtet sich an ABAP-Entwickler, die die Grundlagen von XML

    und auf XML basierenden Technologien verstehen und einsetzen wollen.

    Damit ist es einerseits fr Einsteiger geschrieben, die vielfltige Anwendungen

    zum Austausch von Daten und Dokumenten sowie die XML-Anwendungs-

    entwicklung in ABAP an sich kennenlernen wollen. Aber auch XML-Profis

    und Lsungsarchitekten werden auf den folgenden Seiten eine Vielzahl an

    Anregungen und Programmiertricks finden, um flexible und zeitgeme

    Lsungen zu entwerfen.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    9/43

    Vorwort zur zweiten Auflage

    12

    Aufbau des Buches

    In Kapitel 1, Einleitung, werden Sie die wichtigsten Anwendungsgebiete

    von XML-Technologien sowohl innerhalb des AS ABAP als auch aus der Per-

    spektive der Anwendungsentwicklung kennenlernen. Kapitel 2, XML-Stan-

    dards und XML-Middleware, behandelt die Grundlagen und wichtigsten

    Standards der XML-Familie. Die in diesem Kapitel diskutierten Standards

    werden in den folgenden Anwendungsbeispielen des Buches wieder aufge-

    griffen.

    Im Anschluss werden die XML-Library (Kapitel 3), der SXML-Parser (Kapitel 4),

    XSL-Transformationen (Kapitel 5) und Simple Transformations (Kapitel 6)

    detailliert betrachtet. Diese Kapitel dienen Ihnen als Einfhrung in die The-

    matik und knnen auch unabhngig voneinander gelesen werden. Jedes die-

    ser Kapitel enthlt auch softwaretechnische berlegungen sowie BestPractices zum Einsatz der jeweiligen Technologie, sie bieten damit auch fort-

    geschrittenen Lesern gengend Anregungen.

    Kapitel 7, XML-Anwendungsbeispiele, liefert eine Reihe von Anwen-

    dungsbeispielen fr XML-Technologien, whrend Kapitel 8, Metadaten

    und Semantic-Web-Technologien, den Einsatz von XML-Technologien im

    Bereich des Wissensmanagements beleuchtet und eine Einfhrung in soge-

    nannte Semantic-Web-Technologien liefert.

    Systemvoraussetzungen

    Wenn Sie die in diesem Buch beschriebenen Lsungen testen wollen, sollten

    Sie ein Testsystem aufsetzen. Fr Test- und Evaluierungszwecke knnen Sie

    die ABAP Trial Version mit Release-Stand 7.0 EhP1 aus dem SAP Developer

    Network unter http://sdn.sap.comherunterladen: Folgen Sie dem Menver-

    lauf DownloadsSAP NetWeaver Main Releases.

    Viele der hier beschriebenen Technologien lassen sich aber auch bereits mitRelease 6.20 des AS ABAP einsetzen. Stehen bestimmte Techniken erst ab

    hheren Releases zur Verfgung, wird gesondert darauf hingewiesen.

    Beispiele und ABAP-Quelltext

    Alle Codebeispiele dieses Buches knnen Sie sich von der Webseite zum

    Buch unter http://www.sap-press.de/2042 als Transporte und auch als SAP-

    link-Nuggets (siehe Abschnitt 1.2.3, XML in der ABAP-Entwicklung) her-

    unterladen.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    10/43

    Vorwort zur zweiten Auflage

    13

    Danksagung

    An dieser Stelle mchte ich besonders Karsten Bohlmann fr seine wertvol-

    len Hinweise danken. Ebenso danke ich Stefan Proksch von Galileo Press fr

    die sehr gute Zusammenarbeit.

    Tobias Trapp

    Softwarearchitekt, AOK Systems GmbH

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    11/43

    71

    In diesem Kapitel lernen Sie die XML-Library kennen. Sie ist dielteste XML-Programmierschnittstelle des AS ABAP und die einzige,die einen Service zur Validierung von XML-Dokumenten gegen DTDsbietet.

    3 XML-Library

    Die XML-Library auch bekannt als iXML-Library1 ist die lteste XML-Pro-

    grammierschnittstelle des SAP NetWeaver Application Servers ABAP und

    steht seit Release 4.6D zur Verfgung. Sie enthlt verschiedene Klassen,

    unter anderem fr das Parsen und Rendern von XML-Dokumenten. Da sie

    im Kernel des AS ABAP implementiert ist, ist sie schnell und speichereffizi-

    ent: Die Objekte zum Zugriff auf die XML-Elemente werden erst dann

    erzeugt, wenn auf sie zugegriffen wird.

    Die XML-Library besitzt folgende Programmierschnittstellen:

    ParserEs existiert eine Reihe von Parsern: ein eventbasierter, ein tokenbasierter

    und ein DOM-basierter Parser. Im Paket SIXMLdes AS ABAP finden Sie

    Beispielprogramme fr diese Programmierschnittstellen: T_PARSING_EVENT,

    T_PARSING_TOKENund T_PARSING_EVENT.

    Renderer

    Neben dem Lesen von XML-Dokumenten knnen Sie diese auch erzeu-

    gen, wobei Sie die Kontrolle ber Zeichenstze und Byteordnung besit-

    zen. Dies wird im Programm T_ENCODINGdemonstriert.

    Untersttzung von DTDs

    Die XML-Library kann sowohl gegen XML-Dokumente als auch gegen

    Document Type Definitions (DTD) validieren und besitzt auch eine API, um

    einem XML-Dokument eine interne DTD hinzuzufgen. Hierfr gibt es im

    AS ABAP zwei Beispiel-Reports T_DTD_VALIDATIONund T_DTD_CREATION.

    Die Validierung gegen DTDs wird in Abschnitt 3.6 dargestellt.

    1 Der Buchstabe i in iXML steht fr integrated, was bedeutet, dass dieses Softwaremodul inden Kernel integriert ist.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    12/43

    XML-Library3

    72

    Verglichen mit dem SXML-Parser, der in Kapitel 4 vorgestellt wird, besitzt

    die XML-Library einen greren Funktionsumfang, untersttzt aber kein

    Binary XML.

    Abschnitt 3.1 dieses Kapitels bietet Ihnen eine allgemeine Einfhrung in dieXML-Library, in Abschnitt 3.2 folgt eine Einfhrung in die wichtigsten Pro-

    grammierschnittstellen der XML-Library. In Abschnitt 3.3 lernen Sie die

    Datenquellen der XML-Library kennen und im darauffolgenden Abschnitt

    3.4 eine Programmierschnittstelle, mit der Sie bequem sowohl XML-Doku-

    mente lesen als auch erzeugen knnen. Diese XML-Dokumente liegen in

    einer Hauptspeicher-Reprsentation, einem sogenannten DOM-Baum, vor.

    Wie Sie diesen Baum als Datenstrom ausgeben (rendern), erfahren Sie in

    Abschnitt 3.5.

    Abschnitt 3.6 beschreibt die Validierung eines Dokumentes gegen Docu-

    ment Type Definitions, die Sie schon in Abschnitt 2.4.1 kennengelernt

    haben. Im nachfolgenden Abschnitt 3.7 lernen Sie, wie XML-Namensrume

    von der XML-Library untersttzt werden. Abschnitt 3.8 behandelt soge-

    nannte ereignisbasierte Parser, die Sie einsetzen sollten, wenn Sie extrem

    groe XML-Dokumente verarbeiten. Abschnitt 3.9 schliet das Kapitel mit

    Informationen zur softwaretechnischen Kapselung der XML-Library, die sich

    in Ihren Anwendungen als vorteilhaft erweisen werden.

    3.1 Einfhrung

    Damit Sie die XML-Library besser kennenlernen, soll zunchst das folgende

    Dokument mit der DOM-API der XML-Library erzeugt werden:

    text

    3.1.1 Erzeugen eines DOM-Baumes

    Das Programm, das dieses Dokument als einen DOM-Baum, eine objektori-

    entierte Reprsentation im Hauptspeicher des AS ABAP, erzeugt, ist in Lis-

    ting 3.1 zu sehen. Die Vorgehensweise ist wie folgt:

    1. Zuerst erzeugen Sie die zentrale Klasse zum Zugriff auf Funktionen der

    XML-Library ber den Aufruf von cl_ixml=>create().

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    13/43

    Einfhrung 3.1

    73

    2. Diese Klasse verwenden Sie, um ber die Methode create_document()ein leeres XML-Dokument zu erstellen.

    3. Dann erzeugen Sie ein Element ber die Methode create_element()undfgen ein Attribut ber set_attribute()hinzu. Dieses Element hngenSie ber append_child()an das Dokument als Wurzelelement an.

    4. Ebenso erstellen Sie ein zweites Element childund fgen einen Textinhaltber die Methode set_value()hinzu. Dieses Element hngen Sie berappend_child()unter das Wurzelelement.

    5. Im Anschluss erzeugen Sie einen Ausgabestrom, der einen XSTRINGerstellt, und rendern das Dokument, um es im Anschluss ber den Funk-tionsbaustein DISPLAY_XML_STRINGanzuzeigen.

    REPORT z_ixml_create_document.

    DATA: lr_ixml TYPE REF TO if_ixml, lr_doc TYPE REF TO if_ixml_document, lr_element1 TYPE REF TO if_ixml_element, lr_element2 TYPE REF TO if_ixml_element, lr_sf TYPE REF TO if_ixml_stream_factory, lr_ostream TYPE REF TO if_ixml_ostream, lv_out TYPE xstring, lr_renderer TYPE REF TO if_ixml_renderer.

    lr_ixml = cl_ixml=>create( ).lr_doc = lr_ixml->create_document( ).

    lr_element1 = lr_doc->create_element( name = 'root' ).lr_element1->set_attribute( name = 'attr' value = 'value' ).lr_doc->append_child( lr_element1 ).

    lr_element2 = lr_doc->create_element( name = 'child' ).lr_element2->set_value( 'text' ).lr_element1->append_child( lr_element2 ).lr_sf = lr_ixml->create_stream_factory( ).lr_ostream = lr_sf->create_ostream_xstring( lv_out ).lr_renderer = lr_ixml->create_renderer(document = lr_docostream = lr_ostream ).

    lr_renderer->render( ).

    CALL FUNCTION 'DISPLAY_XML_STRING' EXPORTING xml_string = lv_out.

    Listing 3.1 Erstellung, Rendering und Anzeige eines XML-Dokumentes

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    14/43

    XML-Library3

    74

    3.1.2 Filter und IteratorenAls zweites Beispiel fr die XML-Library lernen Sie nun Filter und Iteratoren

    kennen. Auf diese Weise knnen Sie gezielt Knotenmengen sukzessive ver-

    arbeiten. Dies geschieht wie folgt:

    1. Das Interface IF_IXML_DOCUMENTbesitzt eine Methode create_filter_name_

    ns(), mit der Sie das Dokument auf Elemente einschrnken knnen. In

    Listing 3.2 whlen Sie alle Elemente, die im Namensraum urn:filterliegen.

    2. Anhand dieses Filters definieren Sie einen Iterator ber die Methode

    create_iterator_filtered( ). ber die Methode get_next()des Itera-tors knnen Sie nun sukzessive die entsprechenden Knoten selektieren.

    REPORT z_ixml_iterate_by_filter.DATA: lr_ixml TYPE REF TO if_ixml, lr_doc TYPE REF TO if_ixml_document, lr_sf TYPE REF TO if_ixml_stream_factory, lr_istream TYPE REF TO if_ixml_istream, lv_string TYPE string, lr_name TYPE string, lr_filter TYPE REF TO if_ixml_node_filter, lr_iterator TYPE REF TO if_ixml_node_iterator, lr_node TYPE REF TO if_ixml_node.

    DEFINE xml. CONCATENATE lv_string &1 INTO lv_string.END-OF-DEFINITION.

    xml ''.xml ' '.

    Tipp: Pretty Print von XML-Dokumenten

    XML-Dokumente knnen Sie auch lesbar ausgeben, indem Sie die Methode set_normalizing( ) verwenden. Auf diese Weise werden zustzliche Whitespaceseingefgt, sodass die hierarchische Struktur des XML-Dokumentes besser erkenn-

    bar ist.

    Tipp: Anzeige von XML-Dokumenten

    Fr die Anzeige von XML-Dokumenten verwenden Sie am besten den Funktions-baustein DISPLAY_XML_STRING. Dieser ist eine Kapselung des HTML-Controls CL_GUI_HTML_VIEWER.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    15/43

    Einfhrung 3.1

    75

    xml ' '.xml ' '.xml ' '.xml ' '.xml ''.

    lr_ixml = cl_ixml=>create( ).lr_doc = lr_ixml->create_document( ).

    CALL TRANSFORMATION id SOURCE XML lv_string RESULT XML lr_doc.

    lr_filter = lr_doc->create_filter_name_ns(name ='*' namespace = 'urn:filter' ).

    lr_iterator = lr_doc->create_iterator_filtered( lr_filter ).lr_node ?= lr_iterator->get_next( ).WHILE lr_node IS NOT INITIAL. lr_name = lr_node->get_name( ). WRITE :/ 'Found a node ', lr_name. lr_node ?= lr_iterator->get_next( ).ENDWHILE.

    Listing 3.2 Verwendung eines Iterators

    Sie haben in Listing 3.2 den Befehl CALLTRANSFORMATIONverwendet, um ein

    XML-Dokument in eine Instanz von IF_IXML_DOCUMENTzu berfhren. Siewerden in Abschnitt 3.3, Datenquellen, noch weitere Alternativen dazu

    sehen.

    In Listing 3.2 wurden die Knoten des Namensraums urn:filterdes folgen-

    den XML-Dokumentes ausgegeben; das waren die Knoten child_1 und

    child_3:

    '.

    Bevor Sie die Verwendung der XML-Library anhand einiger Anwendungs-

    flle kennenlernen, werden im folgenden Abschnitt noch zentrale Interfaces

    vorgestellt.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    16/43

    XML-Library3

    76

    3.2 Wichtige Interfaces

    Die XML-Library bietet eine Vielzahl von Funktionen zum Parsen und Erzeu-

    gen von XML-Dokumenten. Der Zugriff auf diese APIs erfolgt ber Inter-

    faces. Durch diese Konstruktion wird die Funktionalitt einer Schnittstellevon ihrer Implementierung getrennt.

    Eine vollstndige Dokumentation der XML-Library ist im SAP Help Portal

    (http://help.sap.com) im gleichnamigen Abschnitt zu finden. Allein die Viel-

    zahl der Interfaces bereitet Einsteigern oft Schwierigkeiten. Daher soll hier

    ein Einblick in wichtige Programmierschnittstellen gegeben werden. Der

    verbleibende Teil erschliet sich dann erfahrungsgem schnell von selbst.

    Interface IF_IXML

    Fr Entwickler bietet das Interface IF_IXMLden zentralen Zugang zu denbisher vorgestellten Funktionalitten. Mit ihm lassen sich andere Objekte

    instanzieren, zum Beispiel zum Parsen oder Rendern eines XML-Doku-

    mentes. Das Interface wird ber die Klasse CL_IXMLimplementiert. Diese

    Klasse ist ein Singleton-Objekt: Mehrfache Aufrufe der Methode cl_

    ixml=>create()liefern immer dasselbe Objekt.

    Interface IF_IXML_DOCUMENT

    Das Interface IF_XML_DOCUMENT reprsentiert das komplette XML-Doku-

    ment, indem es den Dokumentenknoten eines XML-Dokumentes abbil-det. IF_IXML_DOCUMENTist somit vom Interface IF_IXML_NODEabgeleitet,

    aber um weitere Methoden erweitert. Als Beispiel sei die Methode find_

    from_path_ns()genannt, mit der ein Knoten mit einem eingeschrnkten

    XPath-Ausdruck identifiziert werden kann.

    Interface IF_IXML_NODE

    IF_IXML_NODEreprsentiert einen Knoten in der DOM-Darstellung eines

    Dokumentes (siehe Abschnitt 3.3, Datenquellen). Der Typ eines Kno-

    tens kann mit der Methodeget_type( )

    ermittelt werden: Es kann sichdabei zum Beispiel um einen Kommentar- oder Textknoten handeln. Fr

    einen vollstndigen berblick ber die Knotentypen sollten Sie sich die

    Attribute des Interface IF_IXML_NODEanzeigen lassen. ber die Methode

    get_name( )lsst sich der Name des Knotens ermitteln, mit get_value( )

    dessen Inhalt.

    Auf die Attribute eines Knotens kann ber ein von IF_IXML_NODEabgelei-

    tetes Objekt IF_IXML_ATTRIBUTEzugegriffen werden. Sie erhalten sie ber

    die Methode get_attributes().

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    17/43

    Wichtige Interfaces 3.2

    77

    Auf die Kindelemente eines Elementknotens lsst sich ber die Methode

    get_children( ) zugreifen. Es existieren noch weitere Methoden, wie

    zum Beispiel die Methode get_gid(), die eine dem Knoten zugeordnete

    Nummer liefert. Mithilfe dieser Nummer lassen sich umgekehrt ber die

    Methode find_from_gid()Knoten identifizieren.

    Die API untersttzt auch Iteratoren, mit denen sich Knotenmengen durch-

    wandern lassen: Ein Iterator wird mit create_iterator()definiert, und

    mit get_next()wird auf das folgende Element zugegriffen. Da alle Teile

    eines Dokumentes ber Objekte, die das Interface IF_IXML_NODE oder

    davon abgeleitete Interfaces haben, angesprochen werden knnen, ist

    damit eine generische Programmierweise mglich.

    Stream-Interfaces

    Das Interface IF_IXML_STREAM ist das Basis-Interface fr alle Eingabe-und Ausgabestrme von XML-Daten. Der XML-Parser arbeitet auf Objek-

    ten, die das Interface IF_IXML_ISTREAMdefinieren, und der XML-Rende-

    rer arbeitet umgekehrt auf IF_IXML_OSTREAM. Ein- und Ausgabestrom

    knnen an eine Datei auf dem Applikationsserver, einen String oder eine

    interne Tabelle gebunden sein. Ein Objekt fr einen Datenstrom wird

    durch eine sogenannte Factory ber das Interface IF_IXML_STREAM_

    FACTORYinstanziert.

    Interface IF_IXML_PARSERDer Parser der XML-Library baut entweder einen DOM-Baum aus einem

    XML-Eingabestrom auf, oder er arbeitet rein ereignisbasiert. Im zweiten

    Fall ist es erforderlich, ein Objekt mit dem Interface IF_IXML_EVENT zu

    erstellen. Zuvor mssen die Ereignisse, die abgefangen werden sollen,

    beim Parser angemeldet werden.

    In den folgenden Abschnitten werden Sie anhand einiger Programmbei-

    spiele die Einsatzmglichkeiten des XML-Parsers kennenlernen, sich mit der

    DOM- und SAX-API, mit der Validierung gegen eine Document Type Defini-

    tion und mit Namensraumaspekten beschftigen. Fr weitergehende Details

    wie die Behandlung von Whitespaces ber die Methode set_normalizing()

    oder die bernahme von Attribut-Default-Werten aus der DTD ber set_

    supply_attr_defaults()sei auf den Abschnitt XML Libraryim SAP Help

    Portal verwiesen.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    18/43

    XML-Library3

    78

    3.3 Datenquellen

    Um ein XML-Dokument zu parsen, muss der Inhalt einem Objekt zugewie-

    sen werden, das das Interface IF_IXML_ISTREAM implementiert. Eine Mg-

    lichkeit besteht darin, dieses Interface ber die Methode create_istream_uri()von IF_IXML_STREAM_FACTORYzu erzeugen und dem Datenstrom eine

    Datei auf dem Applikationsserver zuzuweisen; ein Dateipfad auf dem Prsen-

    tationsserver oder eine URL sind nicht zulssig. Diese Vorgehensweise ist in

    Listing 3.3 zu sehen.

    DATA lv_filename TYPE string VALUE '/xch/dataset.xml'.DATA lr_factory TYPE REF TO if_ixml_stream_factory.DATA lr_parser TYPE REF TO if_ixml_parser.DATA lr_xmlstream TYPE REF TO if_ixml_istream.

    DATA lr_tmpdoc TYPE REF TO if_ixml_document.DATA lr_ixml TYPE REF TO if_ixml.

    * Erzeuge das Haupt-Factory-Objekt der XML-Librarylr_ixml = cl_ixml=>create( ).

    * Erzeuge ein temporres Dokument fr das Parsenlr_tmpdoc = lr_ixml->create_document( ).

    * Erzeuge ein Stream-Factory-Objekt

    lr_factory = lr_ixml->create_stream_factory( ).

    * Erzeuge den Eingabestromlr_xmlstream = lr_factory->create_istream_uri(system_id = lv_filename ).

    Listing 3.3 XML-Dokument auf dem Dateisystem des Applikationsservers

    In den meisten Anwendungsfllen liegen die XML-Dokumente nicht als

    Dateien auf dem Applikationsserver vor, sondern als Strings oder Bytefol-

    gen, die aus verschiedenen Datenquellen stammen knnen, wie beispiels-

    weise transparente Tabellen oder Datenquellen, die ber das Internet Com-

    munication Frameworkzur Verfgung stehen. Mit diesem Aspekt beschftigt

    sich Abschnitt 7.4, REST-Webservices.

    Liegt der Inhalt eines Dokumentes in einem String vor, knnen Sie diesen

    mit der Methode create_istream_xstring()bergeben, was in Listing 3.4

    beschrieben ist.

    * Erzeuge das Haupt-XML-Library-Factory-Objektlr_ixml = cl_ixml=>create( ).

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    19/43

    DOM-API 3.4

    79

    * Erzeuge ein temporres Dokumentlr_tmpdoc = lr_ixml->create_document( ).

    * Erzeuge ein Factory-Objekt fr den Eingabestromlr_factory = lr_ixml->create_stream_factory( ).

    * Erzeuge den Eingabestromlr_xmlstream = lr_factory->create_istream_xstring(

    string = xmldata ).

    Listing 3.4 String als Eingabestrom

    Da die XML-Library intern mit UTF-16 arbeitet, ist es mglich, Unicode zu

    verarbeiten.2 Jedoch besteht das Risiko, dass einige Zeichen nicht korrekt

    dargestellt werden. Umgekehrt ist es aber auch erlaubt, XML-Dateien zum

    Beispiel in UTF-8 zu erzeugen, was im folgenden Abschnitt gezeigt wird.

    3.4 DOM-API

    DasDocumentObjectModel (DOM) bietet eine API fr das Parsen und Mani-

    pulieren von XML-Dokumenten in Baumstrukturen. DOM basiert auf einer

    Reihe von W3C-Empfehlungen und liegt derzeit in Level 2 vor (http://

    www.w3.org/TR/DOM-Level-2-Core). In der XML-Library ist eine bermenge

    von Level 1 (http://www.w3.org/TR/DOM-Level-1) inklusive Namensraumun-

    tersttzung implementiert.

    3.4.1 Zugriff auf den DOM-Baum

    DOM-basierte Interfaces werden beispielsweise fr Konfigurationsdateien

    verwendet: Ein XML-Dokument wird mithilfe der DOM-API in den Haupt-

    speicher geladen und liegt dort in einem sogenanntenDOM-Baumvor. Diese

    Techniken knnen natrlich auch zur bequemen Auswertung von Header-Elementen eines XML-Dokumentes verwendet werden.

    2 Interne Konvertierungen von UTF-16 zur SAP-Codepage sind hufig ein Grund fr schlechtePerformanz whrend der XML-Verarbeitung.

    Document Object Model ist eine standardisierte Schnittstelle

    Ein DOM-Baum ist auch ein Modell fr ein XML-Dokument. Leider sind die Modellefr XML-Dokumente in den unterschiedlichen Spezifikationen (zum Beispiel XML1.0, XPath 1.0, XML Schema, DOM und SAX) nicht einheitlich, sondern weisenkleine Unterschiede auf, die zum Glck nur in wenigen Fllen Probleme bereiten.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    20/43

    XML-Library3

    80

    Die API stellt Methoden fr einen Zugriff auf beliebige Teile des Dokumen-

    tes zur Verfgung, unter Level 1 und Level 2 allerdings nicht mit vollstndi-

    ger XPath-Untersttzung. Trotzdem verfgt das Interface IF_IXML_DOCUMENT

    ber die Mglichkeit, auf Elemente mittels eines Pfadausdrucks zuzugreifen,

    was im Folgenden an einem Beispiel vorgefhrt wird. Fr eine vollstndigeDokumentation sei auf das SAP Help Portal verwiesen.

    3.4.2 Manipulation eines DOM-Baumes

    Sie werden nun sehen, wie ein DOM-Baum manipuliert wird. Das Eingabe-

    dokument ist eine Nachricht im cXML-Format zum Austausch von Geschfts-

    nachrichten (siehe Abschnitt 2.5, XML als Basis des Semantic Web). Eine

    solche Nachricht besitzt ein Wurzelelement cXML mit den Kindelementen

    Headerund Request.

    Sie sehen die Struktur in Abbildung 3.1. Diese Abbildung wurde brigens

    ber den Funktionsbaustein F4_HELP_XML_TREE erstellt, mit dem Sie ein

    Dokument als Treeview ausgeben und einen bestimmten Knoten selektieren

    knnen und den Pfad im Dokument als Rckgabewert erhalten. Die dafr

    bentigte Service-Schnittstelle werden Sie in Abschnitt 3.9, Service-Schnitt-

    stellen zur XML-Library, kennenlernen.

    Abbildung 3.1 Aufbau einer cXML-Beispielnachricht

    Ausgangspunkt fr die Manipulation eines XML-Dokumentes mit den

    Methoden der XML-Library ist ein Dokument in der in Abbildung 3.1 darge-

    stellten Struktur. Zu dieser Eingangsnachricht soll eine Quittungsnachricht

    erstellt werden. Hierzu gehen Sie wie folgt vor:

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    21/43

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    22/43

    XML-Library3

    82

    3.5 Rendern von XML-Dokumenten

    In Abschnitt 3.4 wurde Ihnen gezeigt, wie Sie einen DOM-Baum aufbauen.

    Nun erfahren Sie, wie Sie diesen ausgeben knnen.

    Im folgenden Beispiel wird davon ausgegangen, dass das Eingabedokument

    im String lv_xmldatavorliegt, und zwar in einem beliebigen Zeichensatz,

    wie zum Beispiel ISO-8859-1, der der SAP-Standard-Codepage 1100 ent-

    spricht. Das Ausgabedokument ist ein String lv_cstrin einer UTF-8-Code-

    page.

    Die einzelnen Schritte knnen Sie Listing 3.6 entnehmen: Sie erzeugen

    zuerst einen Eingabestrom fr Strings ber eine Stream-Factory, dann erstel-

    len Sie ein Eingabedokument vom Typ IF_IXML_DOCUMENT, das Sie mit einem

    Eingabestrom (hier nur ein Wurzelelement) befllen. Nach dem Parsengeben Sie es in einen Ausgabestrom vom Typ IF_IXML_OSTREAMaus, wobei

    Sie mit der Methode create_encoding() die Ausgabeoptionen festlegen.

    Beachten Sie, dass erst mit der Methode render( ) der Ausgabe-String

    befllt wird.

    DATA: lr_ixml TYPE REF TO if_ixml, lr_streamfactory TYPE REF TO if_ixml_stream_factory, lr_parser TYPE REF TO if_ixml_parser, lr_istream TYPE REF TO if_ixml_istream, lr_document TYPE REF TO if_ixml_document, lr_node TYPE REF TO if_ixml_node, lv_xmldata TYPE string, lv_cstr TYPE string, lr_ostream TYPE REF TO if_ixml_ostream, lr_encoding TYPE REF TO if_ixml_encoding, lr_renderer_cstr TYPE REF TO if_ixml_renderer, lv_ret TYPE I.

    * Beflle den String lv_xmldata

    lv_xmldata = ``.

    * Erzeuge das zentrale Factory-Objektlr_ixml = cl_ixml=>create( ).

    * Erzeuge ein Factory-Objekt fr Datenstrmelr_streamfactory = lr_ixml->create_stream_factory( ).

    * Erzeuge ein Objekt fr den Eingabestromlr_istream = lr_streamfactory->create_istream_string( string = lv_xmldata ).

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    23/43

    Validierung gegen Document Type Definitions 3.6

    83

    * Erzeuge ein Dokumentlr_document = lr_ixml->create_document( ).

    * Erzeuge den Parserlr_parser = lr_ixml->create_parser(

    document = lr_document stream_factory = lr_streamfactory istream = lr_istream ).

    * Erzeuge durch Parsen einen DOM-BaumIF lr_parser->parse( ) 0.* Wirf eine Ausnahme RETURN.ENDIF.

    * Erzeuge ein Ausgabeobjektlr_ostream = lr_streamfactory->create_ostream_cstring( string = lv_cstr ).

    * Ausgabe UTF-8 mit plattformabhngiger Byteordnung:lr_encoding = lr_ixml->create_encoding(character_set = 'UTF-8'

    byte_order = -1 ).

    * Erzeuge ein Renderer-Objektlr_renderer_cstr = lr_ixml->create_renderer(

    document = lr_document ostream = lr_ostream ).

    * Verwende den Rendererlv_ret = lr_renderer_cstr->render( ).

    * Schliee den Ausgabestromlr_ostream->close( ).

    Listing 3.6 Rendern von XML-Dokumenten

    3.6 Validierung gegen Document Type Definitions

    Document Type Definitions wurden in Abschnitt 2.4.1 vorgestellt. Die XML-

    Library besitzt im Interface IF_IXML_PARSER die Mglichkeit, XML-Doku-

    mente whrend des Parsens gegen DTDs zu validieren. Die Validierung lsst

    sich ber die Methode set_validating( ) aktivieren und deaktivieren.

    Dabei sind folgende Werte mglich:

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    24/43

    XML-Library3

    84

    IF_IXML_PARSER=>CO_NO_VALIDATION

    Diese Einstellung aktiviert die Validierung und gibt die Fehlermeldung

    unexpected symbol: '

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    25/43

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    26/43

    XML-Library3

    86

    2. Dann teilen Sie dem Parser ber die Methode register_entity()denVerweis auf diese DTD mit und zeigen auf die im XML-Dokument angege-bene URI (hier der Einfachheit halber rss.dtd). Dafr muss der Code in Lis-ting 3.8 vor dem Aufruf der Methode parse()ausgefhrt werden:

    lr_parser->register_entity( istream = lr_dtdstream system_id = 'rss.dtd' public_id = 'rss.dtd' ).

    3. Das zu validierende XML-Dokument muss mit einer Doctype-Deklarationbeginnen und den folgenden Aufbau besitzen:

    ...

    3.7 Untersttzung von Namensrumen

    Namensrume dienen der Unterscheidung von Elementen und Attributen,

    die denselben Namen, aber unterschiedliche Bedeutung haben. ber URI-

    Namen ist es beispielsweise mglich, verschiedene XML-Vokabulare ausein-anderzuhalten. Hierdurch werden auch die Vokabulare der XML-basierten

    Spezifikationen XML Schema und XSLT eindeutig identifizierbar.

    Namensrume sind ebenso notwendig fr die Erstellung modularer Daten-

    austauschspezifikationen: Sie knnen Bibliotheken von Datentypen erstellen

    und diese mithilfe von Namensrumen zusammenfassen, sodass sie ber

    Softwaresysteme erkennbar sind. Diese Bibliotheken knnen Sie in Daten-

    austauschspezifikationen wiederverwenden. Auf diese Weise werden Daten-

    typen standardisiert. Die Standardisierung macht Datenaustauschspezifikati-onen besser verstndlich, da sie Mehrfachdefinitionen vermeidet. Ebenso

    lassen sich dadurch Transformationsprogramme wiederverwenden.

    Wie schon in Abschnitt 2.1, Einfhrung in XML, angesprochen, lsst die

    W3C-Spezifikation Namespaces in XML (http://www.w3.org/TR/REC-xml-

    names) unterschiedliche Mglichkeiten zur Bindung eines XML-Elementes

    an einen Namensraum zu und macht die Identifizierung eines Namensraums

    beim Parsen schwieriger als erwartet. In den folgenden Abschnitten werden

    die damit in Verbindung stehenden Probleme detailliert diskutiert. Zunchst

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    27/43

    Untersttzung von Namensrumen 3.7

    87

    werden quivalente XML-Dokumente prsentiert, deren Elemente auf unter-

    schiedliche Weise mit Namensrumen versehen sind, die aber alle gltig in

    Bezug auf dasselbe XML Schema sind. Dann lernen Sie ein ABAP-Programm

    kennen, das zu geparsten XML-Dokumenten bezglich der verschiedenen

    Parser-Modi Namensrauminformationen ausgibt. Im Anschluss werden Siemehrere XML-Dokumente mit diesem Programm verarbeiten und sehen,

    wie die XML-Library mit den Namensrauminformationen umgeht.

    3.7.1 Namensraumuntersttzung der XML-Library

    Die Namensraumuntersttzung des Parsers lsst sich ber die Methode set_

    namespace_mode()beeinflussen, ber die sich drei Modi einstellen lassen:

    co_namespace_unaware, co_prefix_aware und co_namespace_aware. Der

    Modus co_namespace_unaware ignoriert die Existenz eines Namensraumsvollstndig und behandelt Namensraumattribute wie alle anderen Attribute.

    Da auf diese Weise die Namensraumprfixe dem Elementnamen zugeschla-

    gen werden, ist dieser Modus fr die weitere Betrachtung uninteressant.

    Sie knnen das ABAP-Programm aus Listing 3.9 verwenden, um ein XML-

    Dokument zu parsen. Mit dem Unterprogramm aus diesem Listing knnen

    Sie Namen, Namensraum und Attribute des DOM-Baumes anzeigen, nach-

    dem Sie das Dokument mit der Anweisung lr_node?=lr_documenteinem

    Knoten zugewiesen und mit diesem Knoten das Unterprogramm print_domaufgerufen haben.

    DATA: lr_iterator TYPE REF TO if_ixml_node_iterator, lr_node TYPE REF TO if_ixml_node, lv_name TYPE string, lv_prefix TYPE string.

    * Erzeuge einen Iterator fr den Knoten lr_iterator = iv_node->create_iterator( ).

    * Ermittle den aktuellen Knoten lr_node = lr_iterator->get_next( ).* Schleife ber alle Knoten WHILE NOT lr_node IS INITIAL. CASE lr_node->get_type( ). WHEN if_ixml_node=>co_node_element.* Behandle einen Elementknoten lv_name = lr_node->get_name( ). lv_prefix = lr_node->get_namespace_prefix( ). WRITE: / 'Element : ', lv_name. WRITE: / 'Namensraumprfix : ', lv_prefix.

    ENDCASE.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    28/43

    XML-Library3

    88

    * Behandle den nchsten Knoten lr_node = lr_iterator->get_next( ). ENDWHILE.

    Listing 3.9 Ausgabe der Namensrauminformationen fr den Knoten iv_node

    Im Folgenden werden drei XML-Dokumente betrachtet, die sich nur in der

    Art der Namensraumdefinition unterscheiden, im brigen aber denselben

    Inhalt haben.

    Das folgende XML-Dokument definiert im Element Wurzelzwei Namens-

    raumprfixe, die in den Kindelementen verwendet werden:

    Fr beide betrachteten Parser-Modi co_prefix_aware und co_

    namespace_aware sind die Ausgaben des Unterprogramms in Listing 3.9

    fr dieses XML-Dokument identisch und werden in Tabelle 3.1 darge-

    stellt.

    Das folgende XML-Dokument ist quivalent zum vorangegangenen, eswurden lediglich die Namensraumprfixe im Element Wurzelumdefiniert:

    XML-Element Namensraumprfix URIWurzel

    Element nr1 urn:Namensraum1

    Element nr2 urn:Namensraum2

    Element

    Tabelle 3.1 Ausgabe bei Namensraumdeklaration mit Prfixen

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    29/43

    Untersttzung von Namensrumen 3.7

    89

    Wieder erzeugen beide Parser-Modi dasselbe Resultat, die Namensraum-

    prfixe unterscheiden sich aber verglichen mit Tabelle 3.1 (siehe Tabelle 3.2).

    Verzichten Sie auf explizite Namensraumprfixe und definieren Default-

    Namensrume fr jedes Element Element, sieht das XML-Dokument fol-gendermaen aus:

    Das Ergebnis ist wieder fr beide Parser-Modi identisch, und es fehlen,

    wie erwartet, die Namensraumprfixe (siehe Tabelle 3.3).

    Im letzten Fall definieren Sie fr jedes Element Element ein eigenes

    Namensraumprfix:

    XML-Element Namensraumprfix URI

    Wurzel

    Element nr2 urn:Namensraum1

    Element nr1 urn:Namensraum2

    Element empty

    Tabelle 3.2 Ausgabe bei Redefinition der Namensraumdeklaration

    XML-Element Namensraumprfix URI

    Wurzel

    Element urn:Namensraum1

    Element urn:Namensraum2

    Element

    Tabelle 3.3 Ausgabe bei Namensraumdeklaration ohne Prfixe

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    30/43

    XML-Library3

    90

    Auch hier ist das Resultat fr beide Parser-Modi identisch (siehe Tabelle 3.4).

    Fr die Namensraumuntersttzung der XML-Library kann damit folgendes

    Fazit gezogen werden: Wollen Sie ein XML-Element anhand seines Namens

    und seines Namensraums identifizieren, mssen diese unterschiedlichenMglichkeiten der Definition des Namensraums beachtet werden.3Sie sehen

    an diesen Beispielen, dass nur die Namensraum-URI verlssliche Auskunft

    ber den Namensraum geben kann, da Namensraumprfixe beliebig gewhlt

    werden knnen. Gerade in Datenaustauschverfahren mit externen Partnern

    werden Sie hufig nicht wissen, welche Namensraumdefinition gewhlt

    wird.

    3.7.2 Elementidentifikation mit Namensrumenber die Methode find_from_path_ns()lsst sich ein Element im DOM-

    Baum eines geparsten XML-Dokumentes mit einem eingeschrnkten XPath-

    Ausdruck suchen. Betrachten Sie dazu noch einmal das Beispiel mit einem

    Element Wurzel, das ohne Namensraum definiert ist:

    XML-Element Namensraumprfix URI

    Wurzel

    Element urn:Namensraum1

    Element urn:Namensraum2

    Element empty

    Tabelle 3.4 Ausgabe bei lokaler Namensraumdeklaration

    3 Der Grund der Misere ist, dass das W3C die Empfehlung Namespaces in XML(http://

    www.w3.org/TR/REC-xml-names ) nach der Spezifikation von XML 1.0 fertigstellte. In den

    verschiedenen APIs wie DOM und SAX wurde schnell die Namensraumuntersttzung nach-

    gezogen, allerdings in uneinheitlichen Notationen, was in der XML-Library vermieden

    wurde. In der Spezifikation von XML Schema wurde das Thema Namensrume wiederangegangen.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    31/43

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    32/43

    XML-Library3

    92

    etc. Fr jeden dieser Inhalte existiert ein korrespondierendes, von IF_IXML_

    NODE abgeleitetes Interface, mit dem auf den Inhalt des entsprechenden

    XML-Knotens zugegriffen werden kann, der durch ein Ereignis gemeldet

    wurde.

    Im Programmbeispiel in Listing 3.10 wird nur das Ereignis co_event_

    element_pre2 behandelt. In der Hauptverarbeitungsschleife werden ber

    die Methode get_node() der Klasse IF_IXML_EVENT Ereignisse abgefragt,

    solange sie gemeldet werden. Wenn der Parser das Ereignis vom Typ co_

    event_element_pre2 meldet, knnen Sie auf den Elementnamen und die

    Attribute zugreifen, aber nicht auf den Text. Eine solche Vorgehensweise ist

    bei attributorientierter Codierung von XML-Daten ausreichend: Elemente

    enthalten keinen Inhaltstext, sondern nur Attribute und andere Elemente.

    DATA: lr_factory TYPE REF TO if_ixml_stream_factory, lr_parser TYPE REF TO if_ixml_parser, lr_istream TYPE REF TO if_ixml_istream, lr_document TYPE REF TO if_ixml_document, lr_ixml TYPE REF TO if_ixml, l_var_xmldata TYPE string, lr_event_sink TYPE REF TO if_ixml_event, l_var_rval TYPE boolean, l_var_events TYPE i, lr_node TYPE REF TO if_ixml_node,

    lr_iterator TYPE REF TO if_ixml_node_iterator.

    OPEN DATASET '/xch/cxml.xml' FOR INPUT IN BINARY MODE.READ DATASET '/xch/cxml.xml' INTO l_var_xmldata.CLOSE DATASET '/xch/cxml.xml'.

    * Ermittle das zentrale Factory-Objektlr_ixml = cl_ixml=>create( ).* Erzeuge ein Factory-Objekt fr den Eingabestromlr_factory = lr_ixml->create_stream_factory( ).* Erzeuge den Eingabestromlr_istream = lr_factory->create_istream_string(string = l_var_xmldata ).

    * Erzeuge ein temporres Dokumentlr_document = lr_ixml->create_document( ).* Erzeuge den XML-Parserlr_parser = lr_ixml->create_parser(

    document = lr_document stream_factory = lr_factory istream = lr_istream ).lr_factory = lr_ixml->create_stream_factory( ).

    * Schalte DOM-Generierung auslv_rval = lr_parser->set_dom_generating(

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    33/43

    Ereignisbasiertes Parsen 3.8

    93

    EXPORTING is_generating = space RECEIVING rval = lv_rval ).

    * Bei diesem Ereignis sind der Elementname und alle* Attribute bekanntl_var_events = if_ixml_event=>co_event_element_pre2.* Melde die Events beim Parser anlr_parser->set_event_subscription( events = l_var_events ).* Ermittle das erste Eventlr_event_sink = lr_parser->parse_event( ).WHILE NOT lr_event_sink IS INITIAL.* Ermittle den aktuellen Knoten lr_node = lr_event_sink->get_node( ).

    * Frage das nchste Ereignis ab lr_event_sink = lr_parser->parse_event( ).ENDWHILE.

    Listing 3.10 Ereignisbasiertes Parsen

    Auch wenn beim ereignisbasierten Parsen die DOM-Generierung ausge-

    schaltet wurde, kann vom aktuell verarbeiteten Knoten auf die Menge der

    Vaterelemente bis hin zum Wurzelelement ber lr_node->get_parent()

    zugegriffen werden.

    3.8.2 Fallstricke

    Die XML-Spezifikation sieht vor, dass Sie spezielle Abschnitte definieren

    knnen, in denen Zeichen wie das kaufmnnische Und (&) oder das Kleiner-

    Zeichen (

    ]]>.

    Diese Texte mssen ber die Events co_event_cdata_section_pre und

    beim Event co_event_cdata_section_post , bearbeitet ber die Methode

    getValue(), gelesen werden.

    Die SAX-Spezifikation sieht grundstzlich nicht vor, dass ein zusammenhn-

    gender Text genau durch ein Ereignis co_event_text_pre und co_event_

    text_posteingeleitet bzw. abgeschlossen wird, obwohl die meisten Parser

    dies tun. Prinzipiell kann es daher erforderlich sein, den Textinhalt eines Ele-

    mentes in mehreren Schritten zu lesen. Je unstrukturierter ein XML-Doku-ment ist, desto hufiger wird dieser Fall vorkommen: Ein Textinhalt eines

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    34/43

    XML-Library3

    94

    Elementes kann prinzipiell durch CDATA-Abschnitte, aber auch durch Ele-

    mente unterbrochen werden:

    Text1Text2 Text4

    3.9 Service-Schnittstellen zur XML-Library

    An den vorhergehenden Beispielen knnen Sie erkennen, dass die Verwen-dung der XML-Library mit einem programmiertechnischen Overhead ver-

    bunden ist. Das betrifft die immer wiederkehrenden Standardoperationen

    zum Erzeugen von Stream-Objekten.

    Um nicht stndig diese wiederkehrenden Operationen entwickeln zu ms-

    sen, ist es sinnvoll, diese in Service-Klassen bereitzustellen. Ein gutes Bei-

    spiel aus dem SAP-Standard ist die Klasse CL_XML_DOCUMENT_BASEaus dem

    Workflow-XML-Framework des AS ABAP. Hier hat SAP eine Reihe von Stan-

    dardfunktionen fr wiederkehrende Operationen entwickelt, sodass der

    Zugriff auf die XML-Library vllig gekapselt ist.

    Es kann die Programmierung sehr vereinfachen, wenn fr die Zugriffe auf

    XML-Dokumente auf dieselbe Weise vorgegangen und, wie in Abbildung 3.2

    beschrieben, der Zugriff verschalt wird: Eine Instanz der Klasse ZCL_

    GENERIC_DOCUMENT reprsentiert ein XML-Dokument und stellt gleichzeitig

    eine Reihe von Methoden zur Verfgung:

    Die Methode export_to_file( ) ermglicht den Download auf den

    Applikations- oder Prsentationsserver. Die Methode parse_string()instanziert das Objekt, indem ein String in

    das Attribut m_cl_ixml_document (eine Instanz von IF_IXML_DOCUMENT)

    gelesen wird.

    Die Methode import_form_file( ) realisiert die Instanzierung durch

    einen Upload vom Applikations- oder Prsentationsserver.

    Die Methode find_node()dient der Identifizierung eines XML-Elementes.

    Die Methode get_node_name()liefert den Namen eines XML-Elementes.

    Prfung nach Wohlgeformtheit

    Beachten Sie, dass die XML-Library nicht in voller Strenge die Wohlgeformtheitvon XML-Dokumenten berprft, zum Beispiel lsst sie doppelte Attributnamen ineinem XML-Element zu.

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    35/43

    Service-Schnittstellen zur XML-Library 3.9

    95

    Die Methode get_node_data()liefert den Inhalt eines XML-Elementes.

    Die Methode insert_document_as_child()fgt ein anderes Dokument

    unterhalb eines Knotens als Kind ein.

    Abbildung 3.2 Mgliche Service-Klassen zum Zugriff auf XML-Dokumente

    Diese an die Klasse CL_XML_DOCUMENT_BASE angelehnte Klasse kann fr

    bestimmte Dokumententypen abgeleitet werden. In Abbildung 3.2 wurde

    diese Klasse abgeleitet, um spezielle Funktionen fr EDI-Dokumente (Klasse

    ZCL_EDI_MESSAGEund Unterklassen) und in XML-codierte Testflle (Klasse

    ZCL_TESTCASE) umzusetzen.

    Eine solche Vorgehensweise ist expliziter und sauberer als die Verwendung

    der nicht freigegebenen Klasse CL_XML_DOCUMENTdes AS ABAP, zumal viele

    der dortigen Funktionen wie die Persistenzmethoden load()oder save()rein workflowspezifisch sind.

    ()

    ()

    ()

    ()

    ()

    + validate()

    ()

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    36/43

    279

    Index

    AABAP

    Kurzdump 242Proxy 218

    ABAP Debugger 99ABAP Serialization XMLasXMLABAP Unit 193Abnahmeklasse

    CX_INVALID_TRANSFORMATION117

    CX_MATCH_ELEMENT 154CX_ST_ERROR 154CX_ST_GROUP_MISSING_CASE 179CX_ST_MATCH_ELEMENT 170CX_ST_MATCH_TEXT 156CX_ST_REF_ACCESS 162CX_ST_SWITCH_NO_CASE 171CX_SY_CONVERSION_NO_DATE_TIME

    126CX_SY_CONVERSION_OVERFLOW

    231

    CX_SY_TANS_OPTION_ERROR 117CX_TRANSFORMATION_ERROR 116CX_XSLT_ABAP_CALL_ERROR 119,

    123CX_XSLT_EXCEPTION 117CX_XSLT_RUNTIME_ERROR 231

    abstrakter Syntaxbaum 144Adobe Flex 241AJAX 15, 25aktueller Knoten 153Applikationsserver, Datenquelle 77

    Architektur, serviceorientierte 218asXML 33, 39, 123, 160, 224Asynchronous JavaScript and XML 15,

    25Attributwert-Template 120Ausdruck, regulrer 28, 56, 213, 220Ausnahme, verkettete 123

    BBAPI 23Base64 125basXML 39benanntes Template 101, 197benutzerdefinierte XPath-Funktionen

    134Beschreibungslogik 240Binary ABAP Serialization XML 39Binary XML 39, 97, 99

    Verwendung 105BizTalk Message 18BMEcat 18BPEL 219BRFplus 20BSP 25, 215

    Framework 215Business Application Log 241Business Application Programming Inter-

    face 23Business Rules Framework Plus 20

    Business Server Page BSP

    C

    CALL TRANSFORMATION 75, 115, 125,151

    Canonical XML 39CDA 17, 58CDATA

    Abschnitt 94

    CDATA-Sektion 35Character Information Item 34CIF 18CL_ABAP_CONV_OUT_CE 103CL_ABAP_XML_NAME_CONVERTER

    253CL_APL_ECATT_TDC_API 207CL_AUNIT_ASSERT 193CL_FX_READER 151CL_FX_WRITER 151CL_GUI_HTML_VIEWER 74

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    37/43

    280

    Index

    CL_GUI_TEXTEDIT 232CL_HTTP_CLIENT 243CL_IXML 72, 76CL_IXML_OSTREAM 139

    CL_O2_API_XSLTDESC 202, 210, 253CL_SXML_DATASET_READER 97CL_SXML_DATASET_WRITER 97CL_SXML_OPEN_ELEMENT 102CL_SXML_STRING_WRITER 106CL_XML_DOCUMENT_BASE 94, 95CL_XSLT_PROCESSOR 113Code Inspector 250Codegenerierung 141, 227, 232Codepage, Standard 36, 82Content Negotiation 243, 258

    Content-Type 64, 218, 220, 242, 243CSV-Datei 46, 48, 109current-grouping-key() 138cXML 18, 59, 80, 158, 173, 176, 204

    D

    Daten, semistrukturierte 21Datenaustauschprozess 259Datenformat, semistrukturiertes 18

    Datenintegration 239Datenstrom, XDF 261Datentyp

    komplexer 54XSDBOOLEAN 125XSDDATETIME_Z 125XSDLANGUAGE 125XSDUUID_CHAR 126

    Deserialisierung 151DNS 37DocBook, Format 47

    Doctype, Deklaration 86Document Object ModelDOMDocument Type Definition DTDDokumententyp, Deklaration 33DOM 72, 79, 82

    Baum 72, 79, 87, 139, 145, 150Domain Name System 37domnenspezifische Sprache 226DSLdomnenspezifische SpracheDTD 52, 71, 83, 84

    Attribut-Default-Wert 77externe 84, 85interne 84

    Dublin Core 64

    E

    ebXML 18eCATT 22, 23, 202EDIFACT 16einfacher Link 45eingebautes Template 50Element, optionales 163Endrekursion 145

    End-Tag 34, 35, 39ereignisbasiertes Parsen 91, 106Ereignis-Trace 241Event 91EXSLT 212Extended Computer Aided Test Tool 22,

    23, 202Extensible Markup Language XMLexterne DTD 85

    F

    Factory-Pattern 121, 122Fallunterscheidung, symmetrische 173FOAF 64Formularsystem 239, 262Funktionsbaustein

    DISPLAY_XML_STRING 33, 73, 236F4_HELP_XML_TREE 80SDIXML_XML_TO_DOM 262

    G

    gemischtes Inhaltsmodell 34, 104, 260groes XML-Dokument 101group-adjacent() 139group-by() 139group-ending-with() 139group-starting-with() 139gXML 18

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    38/43

    281

    Index

    H

    Handler-Klasse 242Head-Body-Pattern 106, 259

    HL7 Messages 19HTML 32, 45HTTP-Request 242Hlle, transitive 267, 274

    I

    ICF 24, 78, 215, 258Handler 215, 216, 242

    IDoc, Schnittstelle 19

    Impact-Analyse 264indirekte Verwendung 263Individualdruck 237Inferenzmaschine 274Inhaltsmodell

    gemischtes 104, 260nicht deterministisches 57, 160

    Inside-out 24Intelligenz, knstliche 274Interface

    IF_HTTP_CLIENT 242

    IF_HTTP_EXTENSION 216IF_IXML 76IF_IXML_ATTRIBUTE 76IF_IXML_DOCUMENT 74, 75, 80, 82,

    116IF_IXML_EVENT 77, 91IF_IXML_ISTREAM 77, 78, 116IF_IXML_NODE 76, 92, 116IF_IXML_NODE_COLLECTION 115,

    138IF_IXML_OSTREAM 77, 82, 116IF_IXML_PARSER 77, 83IF_IXML_STREAM 77IF_IXML_STREAM_FACTORY 77, 78IF_SWF_IFS_PARAMETER_CONTAINE

    R 21IF_SXML_NODE 102IF_SXML_READER 97, 98, 101IF_SXML_WRITER 97, 98IF_XML_DOCUMENT 76

    interne DTD 84

    Internet Communication FrameworkICF

    Internet Connection FrameworkICFISO

    8601 618859-1 36Item 129iXML, Library 71

    J

    Java 148JavaScript, ABAP 246JSON 26

    K

    kanonische XML-Reprsentation 33Knoten, aktueller 153Kollektion 160komplexer Datentyp 54knstliche Intelligenz 274Kurzdump 242

    L

    Legacy System Migration Workbench142

    Link, einfacher 45literaler Text 162, 187LSMW 142

    MMakro, Verwendung 27Markup 18, 28, 35Mashup 62Massendaten 150Medientyp 242Memory Inspector 22Metadaten 239Metainformation 240, 249modellgetriebene Programmierung 232

    Muster 168, 173

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    39/43

    282

    Index

    N

    Namensraum 34, 37, 39, 55, 86, 87, 91,130, 188, 258

    Achse 130Attribut 34Knoten 49Prfix 38, 65, 89, 188URI 37

    Newsreader 41nicht deterministisches Inhaltsmodell

    57, 160Nodeset 129

    OOASIS Open Document Format for Office

    Applications 42ODF 42ODT 42, 237Online Text Repository 131Ontologie 63, 263, 264, 273

    Generierung 269OOXML 237Open World Assumption 68

    OpenDocument-Text 42, 237optionales Element 163OTR 131Outside-in 24OWL 66, 264, 271, 273

    owl:Class 269owl:disjointWith 269owl:sameAs 269owl:transitiveProperty 267OWL-DL 68OWL-Full 68OWL-Lite 68Reasoning 267

    P

    Parsenereignisbasiertes 91, 106tokenbasiertes 105

    PDF 40, 43, 237

    Pretty Printer 74Processing Instruction 35, 36, 104, 236

    Programmierungmodellgetriebene 232rekursive 100

    Pull-Parser 97

    R

    RDF 41, 63, 249, 250, 273Viewer 251Visualisierung 251Vokabular 261

    RDF Schema 63RDF-Daten

    Generierung 256

    Visualisierung 257RDFS 63Reader-Klasse 98Really Simple SyndicationRSSReasoner 240, 267Reasoning 264Records Modeler 21Redirect 258regexp, test() 213regulrer Ausdruck 28, 56, 213, 220Rekursion 101

    rekursive Programmierung 100Relax NG 58Representational State Transfer 24Resource Description FrameworkRDFRessource 274REST 24REST-Webservice 45, 253, 258

    Aufruf von ABAP 243Result Fragment Tree 130RFC

    Fehlerprotokoll 241RFC 822 56, 246

    RIA 219Rich Enterprise Application 241Rich Internet Application 219RosettaNet 18RSS 40, 41

    Format 241Version 1.0 246Version 2.0 41, 52, 54, 62, 248

    RSS-Feed 41, 240, 247Anzeige 246Aufruf 246

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    40/43

    283

    Index

    RSS-Reader 241Ruby on Rails 219

    SS_MEMORY_INSPECTOR 22SAP NetWeaver 19SAP NetWeaver Process Integration 20SAP Records Management 21SAP Smart Forms 23, 261SAP XML Toolkit for Java 91SAPlink 23SAX 91

    Spezifikation 93

    Schemasprache 31Schematron 58, 60, 202, 232SchnittstelleInterfaceSCI 250Semantic Web 63, 239, 240Semantic Wiki 240semantischer Webservice 250semistrukturierte Daten 18, 21Sequenz 129Serialisierung 33, 151serviceorientierte Architektur 218

    Simple API for XML SAXSimple Transformations 107, 149, 242,

    269ABAP-Struktur 156Attribut 156Ausdrucksstrke 184bedingte Transformation 168, 183Bedingung 164Beispielanwendung 150Datenknoten 154Datenwurzel 154Deserialisierung 161, 167, 169elementares Datenobjekt 153externes ST-Programm 186Fallunterscheidung 162, 163, 171Gruppierung 175Integration 97interne Tabelle 157literaler Inhalt 187Mapping 180Modularisierung 185Muster 168, 179Namensraumdeklaration 188

    optionales Element 163Parameter 153, 161Standarddeserialisierung 172, 179Standardserialisierung 172, 179

    Symmetrie 151, 193symmetrische Fallunterscheidung 173tt:apply 153, 186tt:assign 162, 178, 185tt:attribute 156tt:call 153, 184, 186, 250tt:clear 162tt:cond 163, 165, 167, 168, 169, 173,

    174, 184tt:cond-var 162, 184tt:context 161, 186

    tt:copy 160tt:d-cond 163, 170, 184tt:deserialize 183, 193tt:empty 168tt:group 177, 179, 180tt:include 152, 186, 250tt:lax 169tt:loop 157, 170, 185tt:namespace 190tt:parameter 152tt:read 161, 162, 181

    tt:ref 154, 157tt:root 152, 154, 155tt:s-cond 163, 170, 175tt:serialize 193tt:skip 163, 164, 185, 187tt:switch 171, 173, 179, 182, 183tt:switch-var 183, 184tt:template 152, 186tt:transform 150, 161tt:value 153tt:variable 152, 161, 183

    tt:with-parameter 186tt:with-root 186tt:write 162, 181Unter-Template 152Variable 161Vorbedingung 165, 166Whitespace 187Wiederholungsgruppe 177Zusicherung 166

    Singleton-Objekt 76SLG1 241SM02 241

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    41/43

    284

    Index

    SM13 241SM58 241SM66 241SOA 218

    SOAMANAGER 24SOAP, Webservice 23, 218Sprache, domnenspezifische 226SpreadsheetML 233SRMREGEDIT 22ST01 241ST02 241ST22 242Standard-Codepage 36, 82Standardserialisierung 172Start-Tag 34, 35, 39

    Streaming Transformations for XML 30String-Operation 27Stylesheet Level 147SVG 17, 44, 259

    svg:line 45svg:rect 45svg:svg 45svg:text 45

    SWEL 241SXML

    Knoten-Parser 103

    Parser 97, 101Reader 99Writer 99

    SXML-API, Vorteil 105symmetrische Fallunterscheidung 173Syntaxbaum, abstrakter 144Systemnachricht 241Systemprotokoll 241

    TTABLES-Parameter 40Tag Browser 111Tag-Interface 222Taxonomie 67, 68Template

    benanntes 101, 197eingebautes 50

    Test-Report 242Text, literaler 162, 187Textinhalt 35TIFF 43

    TokenModus 104Parser 102, 104

    tokenbasiertes Parsen 105

    TransaktionSCI 250SLG1 241SM02 241SM13 241SM58 241SM66 241SOAMANAGER 24SRMREGEDIT 22ST01 241ST02 241

    ST22 242SWEL 241WE07 241

    Transformation 31, 254, 262, 263AS ABAP 264Fakten 270Generierung 207

    transitive Hlle 267, 274

    U

    UDDI 219Unicode 32, 36, 145Uniform Resource Identifier 34, 37, 63,

    240Uniform Resource Name 37URI 34, 37, 63, 240URN 37UTF-16 36, 79UTF-8 36, 79, 97

    Codepage 36, 82

    V

    Validierung 52Verbuchungsabbruch 241verkettete Ausnahme 123Verwendung, indirekte 263Verwendungsbeziehung, Ermittlung

    253

    Vorbedingung 165

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    42/43

  • 8/11/2019 Sappress XML Fuer Abap Entwickler

    43/43

    Index

    sap:escape-uri 129sap:exp 127sap:find-first 128sap:find-first-of 129

    sap:find-last 128sap:find-last-not-of 129sap:find-last-of 129sap:if 135sap:intersection 130sap:let 131sap:line 111sap:log 127sap:log10 127sap:lower-case 128sap:max 130

    sap:min 130sap:node-set 130sap:otr-string 131, 132sap:otr-text 132sap:parse-xpath 144sap:resolve-uri 129sap:sin 127sap:sqrt 127sap:string-pad 128sap:tan 127sap:target 139

    sap:timestamp 131, 146sap:upper-case 128Version 2.0 127

    XSDANY 126XSDDATE_D 126XSDTIME_T 126XSL-FO 17, 42, 47, 237

    fo:block 43fo:flow 43fo:layout-master-set 43fo:page-sequence 43

    fo:root 43XSLT 46, 109, 250, 270, 273

    ABAP-Erweiterung 117, 146asXML-Reprsentation 123Aufruf aus ABAP 115Ausgabeformatierung 141, 142Ausnahmebehandlung 122benanntes Template 101, 145, 197Debugger 112dynamischer Template-Aufruf 196

    function-available() 133Integration 97Java-Erweiterung 148Konformitt in Version 2.0 109, 127,

    134, 135, 139, 141, 147plattformunabhngige Transformation147

    rekursive Programmierung 100sap:call-external 118, 119, 120sap:callvalue 119sap:callvariable 120sap:external-function 118, 121, 122,

    215SAP-Prozessor 133SAP-spezifische Erweiterung 127

    Tester 112Transformation 207Version 2.0 134, 147xsl:apply-imports 146, 147xsl:apply-templates 50, 51, 145, 146xsl:attribute 256xsl:attribute-set 133xsl:call-template 196, 270xsl:copy 49, 139, 209xsl:element 208, 209, 256, 272xsl:fallback 133

    xsl:for-each 272xsl:for-each-group 135, 136xsl:function 134xsl:import 146, 196, 250, 256xsl:include 146, 196, 250xsl:message 111, 112xsl:namespace-alias 133, 207, 208xsl:number 133xsl:output 47, 111, 141, 144xsl:param 112, 115, 118, 119, 139xsl:processing-instruction 236

    xsl:result 134xsl:transform 198xsl:value-of 47xsl:with-param 147

    Z

    Zeichensatz 145Zusicherung 165