Wozu XSL ?

53
XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne [email protected] XML One 2000

description

XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne [email protected] 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 - PowerPoint PPT Presentation

Transcript of Wozu XSL ?

Page 1: Wozu XSL ?

XSL in der Praxis

Anwendungsbeispiele für die eXtensible Stylesheet Language

Andreas Kü[email protected]

XML One 2000

Page 2: Wozu XSL ?

Wozu XSL ?

XML

XQL

XXL

XPointer

XMI

XUL

XLE

?

DOM

SAX

Page 3: Wozu XSL ?

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

Page 4: Wozu XSL ?

Formatting Objects

• Layout- und Darstellungsinformationen

• eng angelehnt an CSS

Page 5: Wozu XSL ?

XPath

• Selektionssprache zur Auswahl von Mengen von Elementen

• Navigation innerhalb des XML-Baums

• Formulierung von Bedingungen

• Logische Operatoren

Page 6: Wozu XSL ?

XSLT

• Transformationssprache zur Überführung eines XML-Dokumentes in eine andere Struktur / Format

• Deklarativ, nicht prozedural

• Regelbasiert

Page 7: Wozu XSL ?

XPath Beispiele

Pfad : ‘/’

Resultat :Wurzelelement

Person

NameAdresse

Strasse

Ort

PLZ

Page 8: Wozu XSL ?

XPath Beispiele

Pfad : ‘//PLZ’

Resultat :Element mit dem Namen ‘PLZ’ irgendwo im Dokument

Person

NameAdresse

Strasse

Ort

PLZ

Page 9: Wozu XSL ?

XPath Beispiele

Pfad : ‘/*/Adresse [ ./Ort=“Köln”]’

Resultat :Adress-Element, dessen Kind-Element ‘Ort’ den Wert ‘Köln’ hat

Person

NameAdresse

Strasse

Ort

PLZ

‘Köln’

Page 10: Wozu XSL ?

Transformation

Dokument A Dokument B

XSLT

Page 11: Wozu XSL ?

XSLT Stylesheet

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

...

</xslt:stylesheet>

Page 12: Wozu XSL ?

XSLT Template

<xsl:template match=“/” >

<html> <head> <title>A Stock Order</title> </head>

<xsl:apply-templates select=“order”>

</html>

<xsl:template />

Page 13: Wozu XSL ?

XSL Tutorial

http://zvon.vscht.cz:/ZvonHTML/Zvon/zvonHomepage_en.html

Page 14: Wozu XSL ?

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

Page 15: Wozu XSL ?

XSLT Editor

http://www.alphaworks.ibm.com

Page 16: Wozu XSL ?

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

Page 17: Wozu XSL ?

Anwendungsbeispiele

• Besser als printf– Sprach- und plattformunabhängiges

Meldungskonzept

• Code Generator– Testmethoden aus dem Objektmodell erzeugen

• EAI Infrastruktur– Realisierung einer Integrationsarchitektur

Page 18: Wozu XSL ?

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” );

Page 19: Wozu XSL ?

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 ?

Page 20: Wozu XSL ?

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>

“Sie haben 3 neue Mails.”

<?xml version="1.0"?><message> <anzahl>3</anzahl> ...</message>

Daten-Document

Transformationsregel

Page 21: Wozu XSL ?

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.

Page 22: Wozu XSL ?

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

Page 23: Wozu XSL ?

Ein Document, verschiedene Medien

3 neueMails !

Daten-Document

text.xsl html.xsl

wml.xsl

Page 24: Wozu XSL ?

Spra

chen

Spra

chen

Med

ien

Med

ien

MandantenMandanten

Dimensionen von Ausgabeformaten

Text

HTML

WML

Page 25: Wozu XSL ?

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.

Page 26: Wozu XSL ?

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.

Page 27: Wozu XSL ?

XML Metadata Interchange Format (XMI )

• UML-Meta-Metastruktur.

• Bekannte Begriffe der UML werden genutzt.

• Unhandliche DTD ( ca. 500 kBytes )

Page 28: Wozu XSL ?

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

Element

GeneralizableElement

isRoot : BooleanisLeaf : BooleanisAbstract : Boolean

Interf ace Class

isActiv e : Boolean DataType

Namespace

Model

name : Namev isibility : Visibility Kind

0..1

*

+namespace

0..1

+ownedElement

*

Constraint

body : BooleanExpression

1..*

*

+constrainedElement1..*

+constraint

*

Method

body : ProcedureExpression

Operation

specif ication : UninterpretedisPoly morphic : Booleanconcurrency : CallConcurrency Kind *1..1

+method

*

+specif ication

1..1

Behav ioralFeature

isQuery : Boolean

Feature

ownerScope : ScopeKindParameter

def aultValue : Expressionkind : ParameterDirectionKind

0..1

*

+behav ioralFeature

0..1

+parameter*

StructuralFeature

multiplicity : Multiplicitychangeable : ChangeableKindtargetScope : ScopeKind

Classif ier1..1

*

+owner

1..1

+f eature*

1..1

*

+ty pe

1..1

+parameter

*

1..1 *

+ty pe

1..1

+structuralFeature

*

*

*

+specif ication

*

+realization

*

Attribut

initialValue : Expression

Page 29: Wozu XSL ?

Mini-Modell

Fahrzeug

laenge : Long

Rad

radius : Long

Auto

fhrgstNr : Long

holeGeschwindigkeit()setzeFhrgstNr() 0..*1 0..*1

Simple.mdl

Simple.mdl xmiToolkit Simple.xmi

Page 30: Wozu XSL ?

XMI Document

Page 31: Wozu XSL ?

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

Page 32: Wozu XSL ?

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

Page 33: Wozu XSL ?

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

Page 34: Wozu XSL ?

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

Page 35: Wozu XSL ?

Down-loadfile

Down-loadfile

Down-loadfile

Screenscrape

Screenscrape

Screenscrape

Screenscrape

Trans-action

file

Trans-action

file

Trans-action

file

Trans-action

file

Messagequeue

Messagequeue

Messagequeue

Sockets

Sockets

ORB

Message

RPC

Message RPC

CICS gateway

APPC

APPC

CICS gateway

ORB

Anwendungs- und Schnittstellen-Spaghetti

Page 36: Wozu XSL ?

Standard Releases

1997 1998 1999 2000 2001 2002 2003

Migrationsunterstützung /-fähigkeit durch den Anbieter

Markt- und User-Anforderungen

Die Wartungslücke bei Paketlösungenbis zum Jahr 2003 werden mindestens 66% aller Anpassungen nur außerhalb der Produkte und

Entwicklungstools der Paketanbieter realisiert werden können

DatenMigration

Parameter Migration

Erweiterung / Migration von Anpassungen

Metadaten-/Versions- Management

Schnittstellen-Management

Quelle

Page 37: Wozu XSL ?

1997 1998 1999 2000 2001 2002 2003

Entwicklung der Implementierung neuer Anwendungen nach unterschiedlichen Realisierungsansätzen

100%

“Selbst-gestrickte”,eigene Integrationslösung

Integration überArchitektur

Integration von Paketlösungen

Die Integrationsproblematik verlagert sich

Quelle

Page 38: Wozu XSL ?

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

Page 39: Wozu XSL ?

NeueAnwendungen

eigene, teilweise

redundante Datenbasis

Anwendungen bedingt durch Mergers, Acquisitions und / oder Partner

Host-basierteAnwendungen Gekaufte

Standardpakete, Komplettlösungen

eigene, teilweise

redundante Datenbasis

Wo ist die Integrationsstrategie ?

Page 40: Wozu XSL ?

Die Daten-Zentrierte Integration

Drei Integrationsansätze gegenübergestellt

Multistep ProcessMessage-Orientierte

Integration (MOI)

Composite Application Pattern (CAP)

• 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

Page 41: Wozu XSL ?

Integrations-Infrastruktur

Hub ‘n’ Spoke - Architektur

Page 42: Wozu XSL ?

Die Aufgaben der Speiche

Nabe

• Technische Anpassung– Ort

– Betriebssystem

– Programmiersprache

• Inhaltliche Anpassung– Semantik

– Format

– Abstraktion / Spezialisierung

Page 43: Wozu XSL ?

Realisierung der Speiche

1. Umsetzung der Daten in ein Document.

2. Transformation mittels XSLT.

3. Transport der serialisierten, transformierten Daten ( z.B. mit CORBA, RMI, COM+ ).Nabe

1

2

3

Page 44: Wozu XSL ?

Realisierung der Speiche (1)

• 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.

Nabe

1

2

3

Page 45: Wozu XSL ?

Realisierung der Speiche (2)

• Einsatz von XSLT– Umsetzung von Inhalten:

‘Wahr’ -> ‘true’

– Umbenennung von Knoten und Attributen:‘Versicherter’ -> ‘Kunde’

– Umstrukturierung von Dokumenten: ‘Adresse’ -> ‘Lieferanschrift’ und ‘Rechnungsanschrift’

Nabe

1

2

3

Page 46: Wozu XSL ?

Realisierung der Speiche (3)

• 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.Nabe

1

2

3

Page 47: Wozu XSL ?

Inkrementelle Geschäftspartnerschaften

Potential

Ohne durchgängigeIntegrationslösung

Vorteile / Vorsprung aufgrund von konsequenter Interenterprise Daten- und Prozeßintegration

LostOpportunity

Opportunity Gap

Page 48: Wozu XSL ?

Mainframe ServicequalitätVerfügbarkeit

Sicherheit

Effiziente, leading-edge-Lösungen

gekaufte“Komplettlösung”

LangfristigeMachbarkeit

Verläßlichkeit

ProduktivitätTime-to-Market

Geringe Einstiegs-kosten

OpportunistischeAnwendunge

n

System- / Basis-Anwendunge

n

Quelle

Zweiteiliger Ansatz

Page 49: Wozu XSL ?

XSLT Fazit :

• 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.

Page 50: Wozu XSL ?

Die EntwicklungDie wichtigsten Motoren für EAI und das “flexible Unternehmen”

Im neuen Millennium

• E-Business•DataWarehouse, DataMining•CRM, Supply-Chain-Mgmt,

•ERP, Workflow• Process Integration

Grad derProzeß-

Ausnahmen

Hoch

Gering

Prozeß-KomplexitätGering Hoch

In der 80iger-90igern

• Eigene Lösungen• Rechnungs- u.

Finanzwesen• Dokumenten-Mgmt

Page 51: Wozu XSL ?

Kritische Erfolgsfaktoren

Anforderungen an das Unternehmens-Management

• Entwicklung flexibler Geschäftsmodelle • Redefinition / Reengineering von Rollen und Funktionen• Entwicklung neuer Geschäftsprozesse

Anforderungen ans IT-Management

• Strategie zur schnellen und sicheren Anwendungsintegration (EAI-Strategie)

• Flexibilität — Build/Buy/Outsource • Effizientes Infrastruktur-Management• absolute Gewährleistung von Sicherheit, Verfügbarkeit und

Datenschutz

Page 52: Wozu XSL ?

Steigende Markt-segmentierung

SchnelligkeitTime to Market

KundenspezifischeAnforderungen

E-Commerce

Neue Geschäftsfelder,VertriebskanäleGlobalisierung

SteigenderWettbewerbsdruck

Outsourcing Partner,Mergers&Acquisitions

bedingen

E A I

InterenterpriseApplicationIntegration

VirtuelleUnternehmen

Page 53: Wozu XSL ?

EAI Infrastruktur

• Enterprise Application Integration ( EAI ) ist die kommende Herausforderung.

• Notwendigkeit einer umfassenden technischen Interoperabilität.

• Notwendigkeit der organisatorischen Anpassung an eine gemeinsame Herausforderung.