1 / 53

Wozu XSL ?

XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne kuehne@klup.de XML One 2000. Wozu XSL ?. DOM. XQL. XMI. XXL. ?. XML. XUL. SAX. XLE. XPointer. XSL-Familie. XSL Transformation ( XSLT ) http://www.w3.org/TR/xslt

Download Presentation

Wozu XSL ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet LanguageAndreas Kühnekuehne@klup.deXML One 2000

  2. Wozu XSL ? DOM XQL XMI XXL ? XML XUL SAX XLE XPointer

  3. XSL-Familie • XSL Transformation ( XSLT )http://www.w3.org/TR/xslt • XML Path Language ( XPath )http://www.w3.org/TR/xpath • Formatting Objects ( FO )http://www.w3.org/TR/xsl

  4. Formatting Objects • Layout- und Darstellungsinformationen • eng angelehnt an CSS

  5. XPath • Selektionssprache zur Auswahl von Mengen von Elementen • Navigation innerhalb des XML-Baums • Formulierung von Bedingungen • Logische Operatoren

  6. XSLT • Transformationssprache zur Überführung eines XML-Dokumentes in eine andere Struktur / Format • Deklarativ, nicht prozedural • Regelbasiert

  7. XPath Beispiele Pfad : ‘/’ Person Resultat : Wurzelelement Name Adresse PLZ Ort Strasse

  8. XPath Beispiele Pfad : ‘//PLZ’ Person Resultat : Element mit dem Namen ‘PLZ’ irgendwo im Dokument Name Adresse PLZ Ort Strasse

  9. XPath Beispiele Pfad : ‘/*/Adresse [ ./Ort=“Köln”]’ Person Resultat : Adress-Element, dessen Kind- Element ‘Ort’ den Wert ‘Köln’ hat Name Adresse PLZ Ort ‘Köln’ Strasse

  10. Transformation XSLT Dokument A Dokument B

  11. XSLT Stylesheet <xslt:stylesheet xmlns:xslt=“http://www.w3.org/XSL/transform/1.0” xmlns=“http://www.w3.org/TR/REC-html40” > ... </xslt:stylesheet>

  12. XSLT Template <xsl:template match=“/” > <html> <head> <title>A Stock Order</title> </head> <xsl:apply-templates select=“order”> </html> <xsl:template />

  13. XSL Tutorial http://zvon.vscht.cz:/ZvonHTML/Zvon/zvonHomepage_en.html

  14. Einige XSLT Parser • Xalan • C++ und Java-Versionen • http://www.apache.org • Microsoft XMLParser • http://msdn.microsoft.com/downloads/tools/xmlparser/xmlparser.asp • XSL:P • Java mit ECMAScript-Einbettung • http://www.clc-marketing.com/xslp • The XML Cover Pages • Übersicht über Parser, Tools, Newsgroups usw. • http://www.oasis-open.org/cover/xsl.html

  15. XSLT Editor http://www.alphaworks.ibm.com

  16. Parser API // Instantiate an XSLTProcessor. org.apache.xalan.xslt.XSLTProcessor processor = org.apache.xalan.xslt.XSLTProcessorFactory.getProcessor(); // Create the 3 objects the XSLTProcessor needs // to perform the transformation. org.apache.xalan.xslt.XSLTInputSource xmlSource = new org.apache.xalan.xslt.XSLTInputSource (xmlSourceURL); org.apache.xalan.xslt.XSLTInputSource xslSheet = new org.apache.xalan.xslt.XSLTInputSource (xslURL); org.apache.xalan.xslt.XSLTResultTarget xmlResult = new org.apache.xalan.xslt.XSLTResultTarget (outputURL); // Perform the transformation. processor.process(xmlSource, xslSheet, xmlResult); Quelle : Xalan-Dokumentation, http://www.apache.org

  17. Anwendungsbeispiele • Besser als printf • Sprach- und plattformunabhängiges Meldungskonzept • Code Generator • Testmethoden aus dem Objektmodell erzeugen • EAI Infrastruktur • Realisierung einer Integrationsarchitektur

  18. Besser als printf • Meldungen eines C-Programms :printf( “Sie haben %d neue Mails”, nAnzahl ); • Ausgabe mittels C++ Streams :cout << “Sie haben “ << nAnzahl << “ neue Mails” << endl; • Java-Version :System.out.println( “Sie haben “ + nAnzahl + “ neue Mails” );

  19. Printf reicht doch, oder ? • Internationalierung • Wie unterstützt man mehrere Sprachen ? • Multi-Channel-Fähigkeit • Wie nutzt man verschiedene Ausgabemedien (Browser, WAP, Pager, Konsole, … ) ? • Mandantenfähigkeit • Outsourcing-Dienstleister ?

  20. Indirektion mittels XSLT <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl= "http://www.w3.org/XSL/Transform/1.0"> <xsl:template match="/message"> Sie haben <xsl:value-of select=“anzahl“/> neue Mails. </xsl:template> </xsl:stylesheet> Transformationsregel <?xml version="1.0"?> <message> <anzahl>3</anzahl> ... </message> Daten-Document “Sie haben 3 neue Mails.”

  21. Codefragment : Document erzeugen ... Message msg = new Message( “Mail Info” ); msg.append( “anzahl”, nMails ); for( int i = 0; i < nMails; i++ ) { msg.append( “mail/sender”, mails[ i ].sender() ); msg.append( “mail/subject”, mails[ i ].subject() ); } msg.send(); ... Codefragment zum Erzeugen einer Meldung, in Java.

  22. Beispiel-Document <?xml version="1.0"?> <message> <anzahl>3</anzahl> <mail> <sender>Heinz Meier</sender> <subject>Terminbestätigung Donnerstag</subject> </mail> <mail> <sender>Heinz Meier</sender> <subject>I love you</subject> </mail> <mail> <sender>MailMaster</sender> <subject>!! Virenwarnung !!</subject> </mail> </message> Erzeugtes Daten-Document

  23. 3 neue Mails ! Ein Document, verschiedene Medien Daten- Document wml.xsl html.xsl text.xsl

  24. Dimensionen von Ausgabeformaten WML Medien HTML Sprachen Text Mandanten

  25. Codegenerator • Metainformationen liegen i. d. R. in einem Objektmodell bereit. • Erstellung von Testmethoden ist eine unbeliebte und fehlerträchtige Aufgabe. • Generierung von Testmethoden aus dem Objektmodell kann sinnvolle Ergänzung darstellen.

  26. XML Metadata Interchange Format (XMI ) • Von der OMG standardisiertes Format zur Darstellung Metainformationen ( z.B. Objektmodelle, Use Cases, Sequenzdiagramme ). • Breite Unterstützung ( ArgoUML, Rose, TogetherJ ). • Tool zur Transformierung *.mdl nach *.xmi bei IBM http://www.alphaworks.ibm.com.

  27. XML Metadata Interchange Format (XMI ) • UML-Meta-Metastruktur. • Bekannte Begriffe der UML werden genutzt. • Unhandliche DTD ( ca. 500 kBytes )

  28. XMI-ModellPackage ‚Foundation.Core‘, View ‚Backbone‘

  29. Mini-Modell Simple.mdl Simple.mdl xmiToolkit Simple.xmi

  30. XMI Document

  31. Transformation ‚XMI zu Code‘ (1) <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl='http://www.w3.org/XSL/Transform/1.0'> <xsl:output method="text" media-type="text/plain"/> <xsl:template match="/"> // Test-Methoden <xsl:apply-templates select="//Foundation.Core.Class [@xmi.id]"/> </xsl:template> <xsl:template match="Foundation.Core.Class"> <xsl:variable name="className" select="Foundation.Core.ModelElement.name" /> <xsl:apply-templates select=".//Foundation.Core.Operation [@xmi.id ]"> <xsl:with-param name="className" select="$className" /> </xsl:apply-templates> </xsl:template> Selektion der Klassen

  32. Transformation ‚XMI zu Code‘(2) <xsl:template match="Foundation.Core.Operation"> <xsl:param name="className" /> <xsl:variable name="methodName"><xsl:value-of select="$className" />::<xsl:value-of select="Foundation.Core.ModelElement.name" /></xsl:variable> /* * Test fuer Methode : '<xsl:value-of select="$methodName" />' */ cout &lt;&lt; "<xsl:value-of select="$methodName" />() = " &lt;&lt; <xsl:value-of select="$methodName" />( <xsl:for-each select=".//Foundation.Core.Parameter [@xmi.id and ./Foundation.Core.Parameter.kind/@xmi.value!='return']"> <xsl:variable name="idref" select="./Foundation.Core.Parameter.type/Foundation.Data_Types.Primitive/@xmi.idref"/> <xsl:variable name="type" select="//Foundation.Data_Types.Primitive [@xmi.id=$idref]/Foundation.Core.ModelElement.name"/> <xsl:choose> <xsl:when test='$type="String"'> "TEST" </xsl:when> <xsl:when test='$type="Long"'> 123 </xsl:when> <xsl:otherwise> // Fehler, Unerwarteter Typ eines Parameter </xsl:otherwise> </xsl:choose> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each>) &lt;&lt; endl; </xsl:template> </xsl:stylesheet> Selektion der Methoden und Parameter

  33. Transformation ‚XMI zu Code‘(3) // Test-Methoden /* * Test fuer Methode : 'Auto::holeGeschwindigkeit' */ cout << "Auto::holeGeschwindigkeit() = " << Auto::holeGeschwindigkeit( ) << endl; /* * Test fuer Methode : 'Auto::setzeFhrgstNr' */ cout << "Auto::setzeFhrgstNr() = " << Auto::setzeFhrgstNr( 123 ) << endl; Erzeugter Code

  34. EAI Infrastruktur • IT-Abteilungen unter Stress: • Data Warehouse • Customer Relationship Management • Enterprise Resource Planning • Workflow • eCommerce • Merger / Aquisitions • Wartung / Weiterentwicklung von ‘Altlasten’ • 99.999 % Verfügbarkeit ist selbstverständlich

  35. Screen scrape Down- load file Message queue Sockets Screen scrape Screen scrape Down- load file Trans- action file Trans- action file CICS gateway Sockets RPC ORB Message ORB APPC Message queue Trans- action file Trans- action file Message queue CICS gateway Screen scrape RPC Down- load file Message APPC Anwendungs- und Schnittstellen-Spaghetti

  36. Die Wartungslücke bei Paketlösungen bis zum Jahr 2003 werden mindestens 66% aller Anpassungen nur außerhalb der Produkte und Entwicklungstools der Paketanbieter realisiert werden können 1997 1998 1999 2000 2001 2002 2003 Quelle Schnittstellen- Management Metadaten-/Versions- Management Markt- und User- Anforderungen Erweiterung / Migration von Anpassungen Parameter Migration Migrationsunterstützung / -fähigkeit durch den Anbieter Daten Migration Standard Releases

  37. 1997 1998 1999 2000 2001 2002 2003 Quelle Die Integrationsproblematik verlagert sich Entwicklung der Implementierung neuer Anwendungen nach unterschiedlichen Realisierungsansätzen 100% Integration von Paketlösungen Integration über Architektur “Selbst-gestrickte”, eigene Integrationslösung

  38. Warum ist so eine EAI-Infrastruktur / Architektur wichtig? • Liefert eine Anleitung und hilft Geschäftsprozeß- und technische Komplexitäten umzusetzen • Führt zu verkürzten Auslieferungszeiten, geringeren Wartungs- und Anpassungsaufwänden • Stellt Skalierbarkeit, Flexibilität, Performance und andere wichtige Systemanforderungen sicher • Hilft Software-Entwicklungsprojekte in kleinere Einheiten zu zerlegen und Parallelentwicklungen zu koordinieren • Minimiert oder verhindert langfristig “big-bang” Integrationsprobleme • Spart mittel- und langfristig enorme Kosten

  39. eigene, teilweise redundante Datenbasis Wo ist die Integrationsstrategie ? Host-basierte Anwendungen Gekaufte Standardpakete, Komplettlösungen eigene, teilweise redundante Datenbasis Anwendungen bedingt durch Mergers, Acquisitions und / oder Partner Neue Anwendungen

  40. • Mehrere Prozesse • Mehrere Schritte • One-way, asynchrone Interaktionen • im Batch oder sofort, individuelle Datenbereitstellg. • Systeme sind physisch unabhängig • Systeme sind logisch unabhängig • Ein Geschäftsprozeß • Mehrere Schritte • One-way, asynchrone Interaktionen • im Batch oder sofort, individuelle Daten-bereitstellungen • Systeme sind physisch unabhängig • Systeme sind logisch abhängig • Ein Geschäftsprozeß • One step • bilaterale, synchrone Interaktionen • Sofortige, individuelle Datenbereitstellung • Systeme sind physisch abhängig • Systeme sind logisch abhängig Drei Integrationsansätze gegenübergestellt Die Daten-Zentrierte Integration Multistep Process Message-Orientierte Integration (MOI) Composite Application Pattern (CAP)

  41. Hub ‘n’ Spoke - Architektur Integrations- Infrastruktur

  42. Technische Anpassung Ort Betriebssystem Programmiersprache Inhaltliche Anpassung Semantik Format Abstraktion / Spezialisierung Die Aufgaben der Speiche Nabe

  43. 1. Umsetzung der Daten in ein Document. 2. Transformation mittels XSLT. 3. Transport der serialisierten, transformierten Daten ( z.B. mit CORBA, RMI, COM+ ). Realisierung der Speiche 1 2 3 Nabe

  44. Abbilden einer Struktur in ein Baum ‘per Hand’ ( siehe ‘msg.append()’ ). Generierung des Adapters aus vorhandenen Modellen. Zugriff auf Daten aus einer JDBC-DB mittels XLE. Extraktion von Daten aus beliebigen Textquellen ( z.B. HTML ) mit JEDI. Realisierung der Speiche (1) 1 2 3 Nabe

  45. Einsatz von XSLT Umsetzung von Inhalten:‘Wahr’ -> ‘true’ Umbenennung von Knoten und Attributen:‘Versicherter’ -> ‘Kunde’ Umstrukturierung von Dokumenten: ‘Adresse’ -> ‘Lieferanschrift’ und ‘Rechnungsanschrift’ Realisierung der Speiche (2) 1 2 3 Nabe

  46. Transport durch Standard-Middleware ( z.B. CORBA ) Sprach- und Betriebssystemunabhängigkeit. Transparenter Transportmechanismus. Höherwertige Dienste stehen bereit ( z.B. Security-Service ). Transaktionssicherheit bei Einsatz eines OTS. Realisierung der Speiche (3) 1 2 3 Nabe

  47. Opportunity Gap Potential Vorteile / Vorsprung aufgrund von konsequenter Interenterprise Daten- und Prozeßintegration Lost Opportunity Ohne durchgängige Integrationslösung Inkrementelle Geschäftspartnerschaften

  48. Quelle Zweiteiliger Ansatz Effiziente, leading-edge- Lösungen Mainframe Servicequalität Verfügbarkeit Sicherheit Produktivität Time-to-Market Opportunistische System- / Basis- Anwendungen Anwendungen gekaufte “Komplettlösung” Geringe Einstiegs- kosten Langfristige Machbarkeit Verläßlichkeit

  49. Flexibles Werkzeug. Standardisiert durch W3C. Breite Unterstützung in der Industrie. Open Source Implementierungen. Weitschweifigkeit. Proprietäre Erweiterungs-mechanismen. Bewährungsprobe im Hochlastbereich steht noch aus. XSLT Fazit :

  50. Im neuen Millennium • E-Business • DataWarehouse, DataMining • CRM, Supply-Chain-Mgmt, • ERP, Workflow • Process Integration Hoch Grad der Prozeß- Ausnahmen • In der 80iger-90igern • Eigene Lösungen • Rechnungs- u. Finanzwesen • Dokumenten-Mgmt Gering Gering Prozeß-Komplexität Hoch Die Entwicklung Die wichtigsten Motoren für EAI und das “flexible Unternehmen”

More Related