XSLT Anfänger Fragen

Von: , Frage gestellt am Mo, 7. Feb 2011

Hallo zusammen,

ich muss eine XML-Datei einlesen und konvertieren. Ausgabe ist ebenfalls XML.
XSLT scheint hier das passende zu sein (hab ich bisher noch nie mit gearbeitet).
Jetzt meine Frage: Die Quelldatei enthält Elemente, deren Sinn sich erst über Attribute ergibt, z.B.:
"<value field="Name"></value>".
Das ganze soll nachher so aussehen:
"<name></name>".

Von <value> gibt es also etliche Vorkommen.

Kann man das mit XSLT lösen?

Ist es möglich, in das XSLT Manipulationsfunktionen einzuhängen? Könnte man z.B. sagen, wenn das Feld "PLZ" gefunden wird, ersetze den Wert mittels einer selbstgeschriebenen Funktion durch das Bundesland?

Besten Dank und Gruß,
Thomas

2 Antworten zu dieser Frage

  1. Antwort von nach 9 Stunden 2 hilfreich
    Re: XSLT Anfänger Fragen

    Hallo,
    XSLT scheint hier das passende zu sein (hab ich bisher noch
    nie mit gearbeitet).
    eine Einführung zu dem Thema findest in einem Beispielkapitel der XML Bible "<value field="Name"></value>".

    Das ganze soll nachher so aussehen:

    "<name></name>".

    Kann man das mit XSLT lösen?

    ja, wenn du z.B. folgende XML Datei hast

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <value name="Name">Wert</value>
      <value name="Test">Test-Wert</value>
    </root>
    


    Kannst du diese mit folgendem XSL Code

    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="xml" indent="yes"/>
      <xsl:template match="/root">
        <NewRoot>
        <xsl:for-each select="value">
          <xsl:element name="{@name}">
            <xsl:value-of select="."/>
          </xsl:element>
        </xsl:for-each>
        </NewRoot>
      </xsl:template>
    </xsl:stylesheet>
    


    In diese XML Datei überführen:

    <?xml version="1.0" encoding="UTF-8"?>
    <NewRoot>
      <Name>Wert</Name>
      <Test>Test-Wert</Test>
    </NewRoot>
    
    Ist es möglich, in das XSLT Manipulationsfunktionen
    einzuhängen? Könnte man z.B. sagen, wenn das Feld "PLZ"
    gefunden wird, ersetze den Wert mittels einer
    selbstgeschriebenen Funktion durch das Bundesland?

    XSL alleine könnte das nur über das xsl:choose Element (ist im verlinkten Dokument erklärt). Dazu müsste man aber für jede PLZ eine entsprechende xsl:if Regel definieren, was das XSL Fragment sehr groß und vermutlich inperformant machen würde.

    Man kann aber XSL Parser i.d.R. durch eigene Funktionen erweitern. Meine bevorzugte Programmiersprache ist Java, daher kenne ich mich nur da aus. Für den Apache Xalan XSLT Processor ist das hier beschrieben: http://xml.apache.org/xalan-j/extensions.html

    HTH
    Heavy

    • Antwort von nach einem Tag 1 hilfreich
      Re^2: XSLT Anfänger Fragen

      Vielen Dank für die Antwort! Hat mir sehr geholfen.

      Gruß,
      Thomas

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!