XSL in der Praxis
Download
1 / 53

Wozu XSL ? - PowerPoint PPT Presentation


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

XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet LanguageAndreas Kü[email protected] One 2000


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


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 )


Xmi modell package foundation core view backbone
XMI-ModellPackage ‚Foundation.Core‘, View ‚Backbone‘


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


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


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


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 :


  • 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


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