Start
Unternehmen
ERP / PPS / Prozesse
Business Intelligence
Server-Technologien
Software-Technologien
Technologie-Beratung
Individual-Software
Produkte

Übersicht

Comelio GmbH
Rellinghauser Straße 10
D-45128 Essen
Deutschland
Fon: 0201-437517-0
Fax: 0201-437517-10
info@comelio.com

Comelio GmbH
Goethestraße 34
D-13086 Berlin
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Glockengießerwall 17
D-20095 Hamburg
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Mainzer Landstraße 27-31
D-60329 Frankfurt
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Stiglmaierplatz/Dachauer Str. 37
D-80335 München
Deutschland
info@comelio.com

Comelio GmbH (Ecos)
Liebknechtstr. 33
D-70565 Stuttgart
Deutschland
info@comelio.com

Comelio GmbH
Nevinghoff 16
D-48147 Münster
Deutschland

Comelio GmbH
Friedrich - List - Platz 1
D-04103 Leipzig
Deutschland

Comelio GmbH
St. Johanner Strasse 41-43
D-66111 Saarbrücken
Deutschland

Comelio GmbH
Kaiser-Wilhem-Ring 27–29
D-50672 Köln
Deutschland

Comelio GmbH
Münsterstraße 248
D-40470 Düsseldorf
Deutschland

Comelio GmbH
Fürther Strasse
D-90429 Nürnberg
Deutschland

Comelio GmbH

Bremen
Deutschland


Comelio-Blog > MS SQL Server > XSLT

XSLT

Eine Möglichkeit zur Bearbeitung von XML-Daten ergibt sich nach relationaler Zer-legung, Abfrage und Verarbeitung mit XQuery mit Hilfe von XSLT. Dieser Standard vom W3C (http://www.w3.org/TR/xslt20/) besteht aus einer XML-Datei, in der in einer deklara-tiven Sprache Formatierungs- und Umwandlungsanweisungen für XML-Datenströme ge-geben werden, die zu Ergebnissen in HTML, XML oder Text führen.

Kontakt

Anrede* Herr Frau
Vorname*
Nachname*
Firma
E-Mail*
Tel-Nr.
Bereich*
Freitext

XQuery und XSLT

Eine Möglichkeit zur Bearbeitung von XML-Daten ergibt sich nach relationaler Zer-legung, Abfrage und Verarbeitung mit XQuery mit Hilfe von XSLT. Dieser Standard vom W3C (http://www.w3.org/TR/xslt20/) besteht aus einer XML-Datei, in der in einer deklara-tiven Sprache Formatierungs- und Umwandlungsanweisungen für XML-Datenströme ge-geben werden, die zu Ergebnissen in HTML, XML oder Text führen. Diese Sprache enthält Anweisungen für Fallunterscheidungen (xsl:if und xsl:chosse), Wiederholungen für Iterationen über eine Knotenmengen (xsl:for-each), Variablen (xsl:variable) und Parameter für Vorlagen und das gesamte XSLT-Stylesheet (xsl:param). Ein Algorithmus ist in so genannten Vorlagen (xsl:template) angegeben, der in einer anderen Programmier-sprache als Methode, Routine oder Prozedur bezeichnet werden könnte. Mit Hilfe von XPath navigiert man durch das XML-Dokument, wobei es unterschiedliche Möglichkeiten gibt, Vorlagen aufzurufen, um Knotenmengen zu verarbeiten.

Während die Techniken XML Schema, XPath und XQuery zentrale Bestandteile in den XML-Fähigkeiten des MS SQL Servers darstellen, ohne deren Kenntnis man nur wenig ergiebigen Quelltext produzieren kann, so ist XSLT durchaus nicht zentral. Zwar gibt es XSLT-Implementierungen in der Datenbank, aber diese sind nicht direkt in T-SQL ver-wendbar. Bspw. gibt es keine transform()-Methode für den xml-Datentyp wie dies in PL/SQL bei Oracle der Fall ist, um XML-Spalten und –Variablen sofort mit einem passen-den XSLT-Stylesheet umzuwandeln. Daher verzichten wir in diesem Fall auf eine kurze Darstellung, wie wir es für die anderen Techniken im XML- und Webservices-Bereich tun. Dieser Abschnitt soll lediglich einen Weg aufzeigen, wie man doch eine ähnliche Funktio-nalität in T-SQL implementieren und nutzen kann.

Dazu erstellt man ganz einfach eine gespeicherte .NET-Funktion, die als T-SQL-Funktion dem Klienten angeboten wird. Eine einfache Lösung zeigt das nachfolgende Skript, wel-ches eine Transform()-Methode in .NET erstellt, die XML und XSLT als Zeichenketten erwartet und das umgewandelte Ergebnis wiederum als solche zurückliefert. Eine erweiterte Funktion würde noch die Möglichkeit anbieten, Parameter für das XSLT-Stylesheet zu seiner erweiterten Steuerung wie bspw. Filterung entgegenzunehmen. Da aus T-SQL keine Arrays o.ä. übergeben werden können, wäre hier vermutlich eine wiederum einfache XML-Datei für die Parameterliste denkbar, die in T-SQL leicht erstellt und in .NET wieder ausge-lesen werden kann. Die Methode zeigt für XSLT-Neulinge auch schon die Besonderheit, die bei dieser Technik (und der PDF-/Druck-Variante XSL-FO) so bemerkenswert ist: Das ewig gleiche Programm kann ganz unterschiedliche XML- und XSLT-Dateien miteinander verarbeiten, weil ja die Transformationsanweisungen zur Erzeugung von XML, HTML oder Text (CSV, SQL oder sonstiger Text) in den XSLT-Anweisungen enthalten sind.

namespace Transform {
public class MyTransformingClass {
public static string Transform(string inputXML,
string inputXSLT) {
System.Xml.XmlReader xslt = System.Xml.XmlReader.Create(
new System.IO.StringReader(inputXSLT));
XslCompiledTransform proc = new XslCompiledTransform();
XmlDocument xml = new XmlDocument();
xml.LoadXml(inputXML);
proc.Load(xslt);
XsltArgumentList args = new XsltArgumentList();
StringBuilder res = new StringBuilder();
XmlWriter writer = XmlWriter.Create(res,
new XmlWriterSettings());
proc.Transform(xml, args, writer);
return res.ToString();
} } }

Um aus der öffentlichen und statischen Methode eine T-SQL-Funktion zu machen bzw. eine im Server gespeicherte .NET-Funktion, erstellt man eine DLL, die mit der CREATE ASSEMBLY-Anweisung geladen wird. Ein ähnliches Beispiel folgt in diesem Buch, wenn man für Webservices eine Prozedur erstellt, welche eine selbst geschriebene Webservice-Beschreibung (WSDL-Datei) zurückliefert und dies auch in .NET geschieht. Eine nur gela-dene DLL erzeugt noch keine in T-SQL verwendbare Funktion oder Prozedur. Stattdessen ist noch erforderlich, eine umhüllende Funktion/Prozedur in T-SQL zu erstellen, welche die Parameter in passender Reihenfolge und Datentypstruktur entgegen nimmt und dann die .NET-Methode referenziert.

--Anlegen der Assembly
CREATE ASSEMBLY AdventureWorks.dbo.myTransformation
FROM 'C:\Transform.dll'
GO
--Anlegen der Funkion zum Transformieren
CREATE FUNCTION AdventureWorks.dbo.Transform (
@InputXML nvarchar(max),
@InputXSLT nvarchar(max) )
RETURNS nvarchar(max)
AS EXTERNAL NAME myTransformation.[Transform.MyTransformingClass].Transform

Wenngleich – wie schon oben erwähnt – noch weitere Fähigkeiten im XSLT-Umfeld wün-schenswert wären, ist diese Hilfsfunktion bereits überaus nützlich. Sie ermöglicht es, eine XSLT-Umwandlung direkt innerhalb eines T-SQL-Programms oder einer reinen SQL-Anweisung auszuführen. Alles, was man dazu benötigt, sind die XML-Daten, wie sie in einer Spalte/Variable oder einer Datei gespeichert sind und die man in eine Variable mit xml oder nvarchar(max) als Datentyp überführen kann. Dies gilt sowohl für XML als auch für XSLT, wobei man in einer sehr fortgeschrittenen Variante ja auch das XSLT in einer passenden Tabelle speichern könnte. In diesem Fall befindet sich ein sehr einfaches XSLT-Skript direkt in einer Variablen, die zusammen mit XML-Daten, welche aus einer FOR XML-Abfrage stammen, an die Funktion transform() übergeben werden. Als spek-takuläres Ergebnis erhält man das erzeugte HTML zurück – ganz einfach in einer SQL-Anweisung.

DECLARE @productXML xml, @productXSLT nvarchar(max)
-- Füllen der @productXML mit Daten
SET @productXML = (
SELECT Name, ProductNumber, ListPrice
FROM Production.Product
FOR XML PATH('Product'), ROOT('Product-List'))
-- Füllen der @productXSLT mit Daten
SET @productXSLT=
'<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1"
indent="yes"/>
<xsl:template match="/">
<html><head><title>Transform X</title></head>
<body>
<ul>
<xsl:for-each select="//Product">
<li>
<xsl:value-of select="Name"/>
</li>
</xsl:for-each>
</ul>
</body></html></xsl:template>
</xsl:stylesheet>'
--Aufrufen der Funktion zur Transformation
SELECT AdventureWorks.dbo.Transform(
CAST(@productXML AS nvarchar(max)),
@productXSLT) AS HTML

Mit diesem Beispiel soll die Darstellung, welche Techniken man einsetzen kann, um XML-Daten im MS SQL Server direkt zu verarbeiten bzw. in T-SQL-Anweisungen zu nutzen, beendet werden.
    UML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund HannoverUML Consulting MS SQL Server: XSLT - MS SQL Server T-SQL XML Webservices Programmierung Bücher Anleitung Tutorial Skulschus Wiederstein Kozik Analysis Server Business Intelligence SQL Webservices Microsoft Services MS T-SQL XML Reporting Bücher .NET Hagen Mönchen-Gladbach Hamm Bochum Bremen München Köln Dresden Bonn Essen Herne Duisburg Berlin Stuttgart Hamburg Krefeld Mülheim Düsseldorf Recklinghausen Frankfurt Leipzig Dortmund Hannover
Seminare