XML Verarbeitung in ABAP XML Verarbeitung in ABAP Betriebliche Anwendungssysteme II Betriebliche Anwendungssysteme II Sommersemester 2006 - University of Applied Sciences Cologne Sommersemester 2006 - University of Applied Sciences Cologne Dipl. Math. Tobias Trapp
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
XML Verarbeitung in ABAPXML Verarbeitung in ABAPBetriebliche Anwendungssysteme II Betriebliche Anwendungssysteme II
Sommersemester 2006 - University of Applied Sciences Cologne Sommersemester 2006 - University of Applied Sciences Cologne
Special Expertise Partner der SAP im Bereich Versicherungen (SEP) Außerordentliche SAP-Lösungs- und Beratungskompetenz für die GKV Entwicklung und Implementierung der GKV-Branchenlösung oscare®
Einführung von SAP R/3-Komponenten FI CO MM HR
SAP Customer Competence Center (CCC) (3. und 4. Support-Level)
Semantische Integration durch XML?Semantische Integration durch XML?
ACORD - XML for the Insurance Industry aecXML Working Group - Architecture, Engineering and ConstructionANSI ASC X12/XML and DISA ATLA Serials Project (ATLAS) Alexandria Digital Library Project Apache XML Project Australia New Zealand Land Information Council (ANZLIC)Bank Internet Payment System (BIPS) Bean Markup Language (BML) BizTalk Framework BMEcatBroadcast Hypertext Markup Language (BHTML) Business Rules Markup Language (BRML) Business Process Execution Language for Webservices (BPEL4WS)Business Travel Management in XML (CDIF XML-Based Transfer Format Call Policy Markup Language (CPML) Call Processing Language (CPL) Capability Card: An Attribute Certificate in XML Channel Definition Format, CDF (Based on XML) Chemical Markup Language Chinese XML Now! Classified Advertising Data 5.5Clinical Trial Data Model Clinical Document Architecture (CDA)Cold Fusion Markup Language (CFML) Commerce XML (cXML) CommerceNet Industry Initiative Common Business Library (CBL) Customer Profile Exchange (CPEX) Working Group Customer Support Consortium DAV Searching and Locating (DASL) DII Common Operating Environment (COE) XML Registry DMTF Common Information Model (CIM) Digest Values for DOM (DOMHASH) Digital Property Rights Language (DPRL) Digital Receipt Infrastructure Initiative Directory Services Markup Language (DSML) Document Content Description for XML (DCD) Document Definition Markup Language (DDML) ECIX Component Information Dictionary Standard (CIDS) ECIX QuickData Specifications ECIX Timing Diagram Markup Language (TDML) eCl@ssECMData - Electronic Component Manufacturer Data Sheet Inventory Specification
eCo Framework Project and Working Group eCo Interoperability Framework Specification EDGARspace Portal EEMA EDI/EC Work Group - XML/EDI Educom Instructional Management Systems Project (IMS) Electronic Business XML Initiative (ebXML) Electronic Component Information Exchange (ECIX)ElectronicHealthData (ehd)Encoded Archival Description (EAD) European XML/EDI Pilot Project Extensible Financial Reporting Markup Language (XFRML) Extensible Forms Description Language (XFDL) Extensible User Interface Language (XUL) FIXML - A Markup Language for the FIX Application Message Layer Formal Language for Business Communication) (FJBC)FinXML - 'The Digital Language for Capital Markets' Financial Products Markup Language (FpML) Georgia State University Electronic Court Filing Project Graphic Communications Association - GCA 'Paper' DTD Guideline XML (gXML) Health Level 7 MessagesHR-XML Consortium HTML Threading - Use of HTML in Email HTTP Distribution and Replication Protocol (DRP) Human Resource Management Markup Language (HRMML)iCalendar XML DTD IEEE LTSC XML Ad Hoc Group IEEE Standard DTD ISO 12083 XML DTDs Information and Content Exchange (ICE) InterX.org Initiative Interactive Financial Exchange (IFX) International Development Markup Language (IDML) Java Speech Markup Language (JSML) Jigsaw XML Format (JXML) LACITO Projet Archivage de données linguistiquesLASG BTM-RechnungssatzLegal XML Working Group and UELP MDC Open Information Model (OIM) MIX - Mediation of Information Using XML Media Object Server - XML (MOS-X)Mathematical Markup Language Meta Content Framework Using XML (MCF) Metadata - PICS Mortgage Bankers Association of America XML Workgroup News Industry Text Format (NITF)NewsML and IPTC2000
Newspaper Association of America (NAA) - Standard forNuDoc Technology OMG Common Warehouse Metadata Interchange (CWMI) Specification Object Management Group XML/Value RFP Ontology and Conceptual Knowledge Markup Languages Open Applications Group - OAGIS Open Catalog Protocol (OCP) Open Content Syndication (OCS) Open Financial Exchange (OFX/OFE) Open Settlement Protocol (OSP) - ETSI/TIPHON Open Software Description Format (OSD) Open Trading Protocol (OTP) OpenMLS - Real Estate DTD Design OpenMath Standard OpenTag Markup P3P Syntax Specification Pinnacles Component Information Standard (PCIS) Portal Markup Language (PML) Precision Graphics Markup Language (PGML) Predictive Model Markup Language (PMML) Procedural Markup Language (PML) Process Interchange Format XML (PIF-XML) Process Specification Language (PSL) and XML Product Data Markup Language (PDML) Product Definition Exchange (PDX) QAML - The Q&A Markup Language Real Estate Transaction Markup Language (RETML) Resource Description Framework (RDF) RosettaNet SABLE: A Standard for Text-to-Speech Synthesis Markup Simple Object Access Protocol (SOAP)SWAP - Simple Workflow Access Protocol Schema for Object-oriented XML (SOX) Scripting News in XML Signed Document Markup Language (SDML) Simple Object Definition Language (SODL) and XMOP Service SpeechML Structured Graph Format (SGF) Synchronized Multimedia Integration Language (SMIL) TalkML Telecommunications Interchange Markup (TIM, TCIF/IPI) Telephony Markup Language (TML) Text Encoding Initiative (TEI) The Data Documentation Initiative (DDI)The Koala Bean Markup Language (KBML) The XML Bookmark Exchange Language (XBEL)
Translation Memory eXchange (TMX) Tutorial Markup Language (TML) UML eXchange Format (UXF)User Interface Markup Language (UIML) vCard Electronic Business Card Vector Markup Language (VML) Virtual Hyperglossary (VHG) VoiceXML Forum (Voice Extensible Markup Language Forum) VoxML Markup Language WAP Wireless Markup Language Specification Weather Observation Definition Format (OMF)Web Collections using XMLWEBDAV (IETF 'Extensions for Distributed Authoring and Versioning on the Web') Web Distributed Data Exchange (WDDX)Web Interface Definition Language (WIDL) Web Service Description Language (WDSL)Web Standards Project (WSP) WebBroker: Distributed Object Communication on the Web X-ACT - XML Active Content Technologies Council XLF (Extensible Log Format) Initiative XBauXJustizXMeldXML Belief Network File Format (Bayesian Networks) XML Court Interface (XCI) XML DTD for Phone Books XML Data Binding Specification XML Digital Signature (Signed XML - IETF/W3C) XML Forms Architecture (XFA) XML Metadata Interchange Format (XMI) - Object Management Group (OMG) XML and CorbaXML and Music XML and VRML (Virtual Reality Modeling Language) - X3D XML for Workflow Management [NIST] XML for the Automotive Industry - SAE J2008XML-Based Process Management Standard (Wf-XML)XML-F ('XML for FAX') XML-HR Initiative - Human Resources XML.ORG - The XML Industry Portal XML/EDI - Electronic Data Interchange XML/EDI Repository Working Group XMLNews: XMLNews-Story and XMLNews-Meta XMLTP.Org - XML Transfer Protocol XOL - XML-Based Ontology Exchange Language XSchema
Schwächen von XML und der XML-FamilieSchwächen von XML und der XML-Familie
Mit welchen Problemen haben wir zu kämpfen?
Datenvolumen Performance
Schlechte Spezifikationen:
unausgegoren (teilweise semantischer Nonsens in XSLT 1.0) zu umständlich (z.B. XML Namespaces) sehr komplex (z.B. W3C XML Schema) XML Infoset nicht einheitlich (XML 1.0, SAX, DOM, W3C XML Schema…) zu viel Spielraum für Implementierungen (XSLT 2.0)
Middleware (RFC-Aufrufe, IDoc-Repräsentation, Webservices) Datenströme zu Drittsystemen (XSF-Daten für Druckausgaben) Serialisierungen (eCATT, Archivierungsobjekte) GUI (BSP Programmierung, Web Dynpro Protokoll) Codegenerierung (Web Dynpro) Konfigurationsdateien (EJB Deployment Deskriptoren) In vielen weiteren Produkten (SAP Knowledge Warehouse, Business Information
Warehouse…) Zentraler Bestandteil der Integrationstechnologie (SAP Business Connector,
ist die älteste Technologie zur XML-Verarbeitung (Release 4.6D) besitzt eine Vielzahl von Interfaces (DOM Level 1 inkl. Namensräume,
~SAX 1.1, XML-Renderer, DTD Validierung …) kann auf non-Unicode-Systemen UTF-8 Dokumente verarbeiten iXML Nodesets können auch auch in den XSLT Prozessor übergeben werden
Achtung: Die Programmierung ist aufwändiger als bei Transformationssprachen.
Eventbasiertes Parsen – Teil 1Eventbasiertes Parsen – Teil 1
DATA: l_rif_factory TYPE REF TO if_ixml_stream_factory, l_rif_parser TYPE REF TO if_ixml_parser, l_rif_istream TYPE REF TO if_ixml_istream, l_rif_document TYPE REF TO if_ixml_document, l_rif_ixml TYPE REF TO if_ixml, l_var_xmldata TYPE string, l_rif_event_sink TYPE REF TO if_ixml_event, l_var_rval TYPE boolean, l_var_events TYPE i, l_rif_node TYPE REF TO if_ixml_node, l_rif_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'.
* Ermittele das zentrale Factory Objekt l_rif_ixml = cl_ixml=>create( ).
* Erzeuge ein FactoryObjekt für den Eingabestrom l_rif_factory = l_rif_ixml>create_stream_factory( ).
Eventbasiertes Parsen – Teil 2Eventbasiertes Parsen – Teil 2* Erzeuge den XML Parser l_rif_parser = l_rif_ixml>create_parser( document = l_rif_document stream_factory = l_rif_factory istream = l_rif_istream ). l_rif_factory = l_rif_ixml>create_stream_factory( ).
* Schalte DOMGenerierung aus CALL METHOD l_rif_parser>set_dom_generating EXPORTING is_generating = space RECEIVING rval = l_var_rval.
* Bei diesem Ereignis sind der Elementname und alle Attribute* bekannt. l_var_events = if_ixml_event=>co_event_element_pre2.
* Melde die Events beim Parser an. l_rif_parser>set_event_subscription( events = l_var_events ).
* Ermittele das erste Event l_rif_event_sink = l_rif_parser>parse_event( ).
WHILE NOT l_rif_event_sink IS INITIAL.* Ermittele den aktuellen Knoten l_rif_node = l_rif_event_sink>get_node( ).* Frage das nächste Ereignis ab. l_rif_event_sink = l_rif_parser>parse_event( ). ENDWHILE.
XSLT ist eine regelbasierte, funktionale Transformationsprache.
Der SAP XSLT-Prozessor: seit Release 6.10 in ABAP integriert Aufruf von ABAP aus XSLT heraus: nur noch objektorientiert! angelehnt an XSLT 2.0 Working Draft vom 30.4.2002:
- Gruppierungen xsl:foreachgroup- mehrere Ausgabedokumente xsl:resultdocument- XPath Funktionen xsl:function- Ausgabeformatierung durch xsl:output- kein Result Fragment Tree (eine der dämlichsten Sachen in XSLT 1.0)
TYPES: BEGIN OF l_typ_test, chars TYPE c LENGTH 10, string TYPE string, numc TYPE n LENGTH 5, packed TYPE p LENGTH 4 DECIMALS 2, float TYPE f, date TYPE d, time TYPE t, xstring TYPE xstring, END OF l_typ_test.DATA: l_str_test TYPE l_test_typ, l_var_output TYPE string. l_str_testchars = ' ABC '. l_str_teststring = ` ABC `. l_str_testnumc = '01234'. l_str_testpacked = '123.45'. l_str_testfloat = '123.45'. l_str_testdate = '20060614'. l_str_testtime = '1201'. l_str_testxstring = 'ABCDEFG'.CALL TRANSFORMATION id SOURCE root = l_str_test RESULT XML l_var_output.
Serielle Transformationssprachen skalieren linear mit der Größe des Eingabedokumentes. Da kein DOM-Baum aufgebaut wird, sind ST-Programme erfahrungsgemäß um den Faktor 10 bis 20 schneller als XSLT.
ST ist ab Release 6.40 in den SAP Kernel integriert prozedural symmetrisch (XML ↔ ABAP) Komfortabel beim Zugriff auf ABAP-Daten (kein asXML) nicht so ausdrucksstark wie XSLT:
Validierung gegen W3C XML Schema (JAXP!) XML Signature, XML Encryption Serielle Transformationen: STX (http://stx.sourceforge.net) XSLT 2.0 (z.B. SAXON) JAXB
Validierung durch JAXP im Rahmen einer EJB-Anwendung und Zugriff durch einen Webservice!