slide1
Download
Skip this Video
Download Presentation
Wozu XSL ?

Loading in 2 Seconds...

play fullscreen
1 / 53

Wozu XSL ? - PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Wozu XSL ?' - missy


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
wozu xsl
Wozu XSL ?

DOM

XQL

XMI

XXL

?

XML

XUL

SAX

XLE

XPointer

xsl familie
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
formatting objects
Formatting Objects
  • Layout- und Darstellungsinformationen
  • eng angelehnt an CSS
xpath
XPath
  • Selektionssprache zur Auswahl von Mengen von Elementen
  • Navigation innerhalb des XML-Baums
  • Formulierung von Bedingungen
  • Logische Operatoren
slide6
XSLT
  • Transformationssprache zur Überführung eines XML-Dokumentes in eine andere Struktur / Format
  • Deklarativ, nicht prozedural
  • Regelbasiert
xpath beispiele
XPath Beispiele

Pfad : ‘/’

Person

Resultat :

Wurzelelement

Name

Adresse

PLZ

Ort

Strasse

xpath beispiele1
XPath Beispiele

Pfad : ‘//PLZ’

Person

Resultat :

Element mit dem Namen

‘PLZ’ irgendwo im Dokument

Name

Adresse

PLZ

Ort

Strasse

xpath beispiele2
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

transformation
Transformation

XSLT

Dokument A

Dokument B

xslt stylesheet
XSLT Stylesheet

<xslt:stylesheet

xmlns:xslt=“http://www.w3.org/XSL/transform/1.0”

xmlns=“http://www.w3.org/TR/REC-html40” >

...

</xslt:stylesheet>

xslt template
XSLT Template

<xsl:template match=“/” >

<html>

<head>

<title>A Stock Order</title>

</head>

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

</html>

<xsl:template />

xsl tutorial
XSL Tutorial

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

einige xslt parser
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
xslt editor
XSLT Editor

http://www.alphaworks.ibm.com

parser api
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

anwendungsbeispiele
Anwendungsbeispiele
  • Besser als printf
    • Sprach- und plattformunabhängiges Meldungskonzept
  • Code Generator
    • Testmethoden aus dem Objektmodell erzeugen
  • EAI Infrastruktur
    • Realisierung einer Integrationsarchitektur
besser als printf
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” );
printf reicht doch oder
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 ?
indirektion mittels xslt
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.”

codefragment document erzeugen
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.

beispiel document
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

ein document verschiedene medien

3 neue

Mails !

Ein Document, verschiedene Medien

Daten-

Document

wml.xsl

html.xsl

text.xsl

dimensionen von ausgabeformaten
Dimensionen von Ausgabeformaten

WML

Medien

HTML

Sprachen

Text

Mandanten

codegenerator
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.
xml metadata interchange format xmi
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.
xml metadata interchange format xmi1
XML Metadata Interchange Format (XMI )
  • UML-Meta-Metastruktur.
  • Bekannte Begriffe der UML werden genutzt.
  • Unhandliche DTD ( ca. 500 kBytes )
mini modell
Mini-Modell

Simple.mdl

Simple.mdl

xmiToolkit

Simple.xmi

transformation xmi zu code 1
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

transformation xmi zu code 2
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

transformation xmi zu code 3
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

eai infrastruktur
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
anwendungs und schnittstellen spaghetti

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
slide36

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

slide37

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

warum ist so eine eai infrastruktur architektur wichtig
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
wo ist die integrationsstrategie

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

slide40

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

hub n spoke architektur
Hub ‘n’ Spoke - Architektur

Integrations-

Infrastruktur

die aufgaben der speiche
Technische Anpassung

Ort

Betriebssystem

Programmiersprache

Inhaltliche Anpassung

Semantik

Format

Abstraktion / Spezialisierung

Die Aufgaben der Speiche

Nabe

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+ ).

Realisierung der Speiche

1

2

3

Nabe

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.

Realisierung der Speiche (1)

1

2

3

Nabe

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’

Realisierung der Speiche (2)

1

2

3

Nabe

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.

Realisierung der Speiche (3)

1

2

3

Nabe

opportunity gap
Opportunity Gap

Potential

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

Lost

Opportunity

Ohne durchgängige

Integrationslösung

Inkrementelle Geschäftspartnerschaften

zweiteiliger ansatz

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

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.

XSLT Fazit :
slide50

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”

kritische erfolgsfaktoren
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
slide52

E-Commerce

Kundenspezifische

Anforderungen

Virtuelle

Unternehmen

Steigender

Wettbewerbsdruck

bedingen

E A I

Steigende Markt-

segmentierung

Neue Geschäftsfelder,

Vertriebskanäle

Globalisierung

Schnelligkeit

Time to Market

Outsourcing Partner,

Mergers&Acquisitions

Interenterprise

Application

Integration

eai infrastruktur1
EAI Infrastruktur
  • Enterprise Application Integration ( EAI ) ist die kommende Herausforderung.
  • Notwendigkeit einer umfassenden technischen Interoperabilität.
  • Notwendigkeit der organisatorischen Anpassung an eine gemeinsame Herausforderung.
ad