Fotografie & Lifestyle

Achtung Kopfsalat – von XML in XML mittels XSLT

Beliebt im Austausch von Daten ist das XML-Format (Extensible Markup Language). Es bietet die

Vorteile einer leserlichen Struktur von Daten im Klartext. Oftmals ist in nun gefordert, dass Daten von

einem Format in ein anderes übertragen werden sollen. Kann man dabei eine Transformation von

einer XML in eine andere vornehmen, so bietet es sich an in diesem „Universum“ zu bleiben und eine

weitere XML zu verwenden. Eine solche Datei nennt sich XSL und wird zur Transformation verwendet

XSLT.

Mit der XSL wird in der bekannten XML-Syntax Logik programmiert, welche einer richtigen

Programmiersprache in nichts nachsteht.

  • Schleifen (<xsl:foreach>)
  • Verzweigungen (<xsl:if test="…">)
  • Auslesen eines XML-Wertes (<xls:value-of select="…">)

Nachfolgend möchte ich euch noch ein kurzes Beispiel zeigen, welches die Mächtigkeit einer solchen

XSL-Transformation erahnen lässt:

Eingangs-XML

xml version="1.0" encoding="utf-8"?>
xml-stylesheet type="text/xsl" href="sales-check-transform.xsl"?>

<basket_list>
  <product price="3.49€">
    <name language="de">Buttername>
    <name language="en">buttername>
  product>

  <product price="0.98€">
    <name language="de">Margarinename>
  product>

  <product price="2.99€">
    <name language="de">Lättaname>
  product>
basket_list>

Transformations-XSL

<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml"/>
  <xsl:template match="/">
    <sales_check>
      <xsl:for-each select="basket_list/product">
        <item>
          <bought_product>
            <de_name>
              <xsl:value-of select="./name__lb__@language=

Ergebnis

xml version="1.0" encoding="utf-8"?>
<sales_check xmlns="http://www.w3.org/1999/xhtml">
  <item>
    <bought_product>
      <de_name>Butterde_name>
      <en_name>butteren_name>
    bought_product>
  item>
  <item>
    <bought_product>
      <de_name>Margarinede_name>
    bought_product>
  item>
  <item>
    <bought_product>
      <de_name>Lättade_name>
    bought_product>
  item>
sales_check>

Nah, überzeugt? Noch nicht? Dann nenne ich noch ein paar weitere Vorteile dieses Verfahrens:

  • Viele weitere Funktionen, die hier noch nicht behandelt wurde, wie z.B. Templating,

    Aufteilung der Logiken in mehrere Dateien und die Ausgabe als HTML

  • Version 2.x mit neuen Funktionen
  • Platzsparende Programmierung der Logiken (Wer es mir nicht glaubt, der kann gerne eine

    Java-Klasse zu dieser Transformation und mir mit glühenden Fingern seine dreistellige

    Zeilennummer nennen :-)

Fazit: Definitiv eines Blickes wert wenn es um die Anforderung XML -> XML geht. Am besten ein

eigenes Bild machen. Über eure Erfahrungen freue ich mich sehr.

Author: JaXt0r