XSLT Transformation von XML Format1 nach XML Format2
Matthias
- xsl
Hallo zusammen,
mein Problem ist, ich möchte aus einer XML Datei mithilfe von XSLT
eine andere XML mit anderen Elementen (vorstellbar auch HTML Elemente)
erstellen. Dabei möchte ich abhängig von dem Wert eines Attributes eine Aktion auslösen.
Bsp: XML File
<?xml version="1.0"?>
<personen>
<name maennlich="True">Matthias</name>
<name maennlich="False">Christine</name>
<name maennlich="True">Florian</name>
<name maennlich="False">Nadja</name>
</personen>
Aus diesem File möchte ich HTML Code generieren und dabei abhängig
vom Attribut 'maennlich' Frauen und Maenner in getrennten Listen
ausgeben.
Knackpunkt ist die Anweisung <xsl:if .......> mit der ich nicht viel
anfangen kann, da relativ wenig Anschauungsmaterial verfügbar ist.
Hat jemand Erfahrung mit XSLT und kann mir helfen bzw.
einen Tipp geben?
Im Voraus Danke
Matthias
Hallo Matthias,
mein Problem ist, ich möchte aus einer XML Datei mithilfe von XSLT
eine andere XML mit anderen Elementen (vorstellbar auch HTML Elemente)
erstellen. Dabei möchte ich abhängig von dem Wert eines Attributes eine Aktion auslösen.Bsp: XML File
<?xml version="1.0"?>
<personen>
»» <name maennlich="True">Matthias</name>
»» <name maennlich="False">Christine</name>
»» <name maennlich="True">Florian</name>
»» <name maennlich="False">Nadja</name>
</personen>
Aus diesem File möchte ich HTML Code generieren und dabei abhängig
vom Attribut 'maennlich' Frauen und Maenner in getrennten Listen
ausgeben.
Du benötigst in deinem Template etwa folgendes Konstrukt:
<xsl:template match="name">
xsl:choose
<xsl:when test="@maennlich='false'">
schreibe in Liste für weibliche Personen
</xsl:when>
xsl:otherwise
schreibe in Liste für männliche Personen
</xsl:otherwise>
</xsl:template>
Prüfung auf Bedingung erfolgt im Attribut test des choose-Elements.
Wenn dabei true rauskommt wird die folgende Aktion ausgeführt, bei false die Aktion im otherwise-Zweig.
Hoffe das hilft dir.
Gruß
Franz
Du benötigst in deinem Template etwa folgendes Konstrukt:
<xsl:template match="name">
»» xsl:choose
<xsl:when test="@maennlich='false'">
schreibe in Liste für weibliche Personen
</xsl:when>
xsl:otherwise
schreibe in Liste für männliche Personen
</xsl:otherwise>
</xsl:template>Prüfung auf Bedingung erfolgt im Attribut test des choose-Elements.
Wenn dabei true rauskommt wird die folgende Aktion ausgeführt, bei false die Aktion im otherwise-Zweig.Hoffe das hilft dir.
Gruß
Franz
Vielen Dank für die Hilfe Franz!!!
Denke das hilft mir schon ein ganzes Stück weiter!!
Gruss
Matthias
Hallo zusammen,
ich habe nun ein Testfile geschrieben bekomme aber eine Fehlermeldung
meines Browsers IE 5.0
Hier das kleine XML Testfile:
------------------------------------------------------
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="when.xsl"?>
<name maennlich='False'>Nadja</name>
-------------------------------------------------------
Und hier mein stylesheet, das abhänging vom Attribut maennlich
'Frau' oder 'Mann' schreiben soll:
-------------------------------------------------------
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="name">
xsl:choose
<xsl:when test="@maennlich = 'False'">
xsl:textFrau</xsl:text>
</xsl:when>
xsl:otherwise
xsl:textMann</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
--------------------------------------------------------
Fehlermeldung des Browsers:
Expected token 'eof' found '='. @maennlich -->=<-- 'false'
Kann mir jemand sagen was hier falsch ist?
Im Voraus herzlichen Dank
Gruß
Matthias
Hallo Matthias!
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
Kann mir jemand sagen was hier falsch ist?
Ja, die bige Zeile.
Du muss
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
verwenden.
Der IE hat eine Weile nur den WD des XSL-spze. von W3C unterstützt, die neueren Versionen von IE unterstützen aber schon den Spez.
Das führt natürlich zu Inkompatibilität der Dateien unter versch. Borserversionen.
Grüße
Thomas