Autor |
Nachricht |
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mi 07.06.2006 08:41
Titel XSLT Script |
|
|
Hallo zusammen,
ich bereite gerade eine Daten XML mit XSLT auf. Bin auf diesem Gebiet noch Anfänger und habe nun eine Stelle erreicht, an der ich nicht genau weiß wie ich das mit XSLT lösen kann.
Folgendes Problem:
In meiner Basis XML habe ich den Tag INHALT und dort steht ein umfangreicher Text wo die einzelnen Abschnitte durch [:] abgetrennt werden. In der neuen XML soll der einzelne Text jeweils in einem Tag Grundtext stehen. Also immer wenn das Trennzeichen kommt soll er ein neues Element Grundtext setzen und den entsprechenden Text bis zum nächsten Trennzeichen einfügen. Ich habe nun schon das ganze Wochenende verschiedene Varianten probiert, komme aber einfach nicht voran.
Hier mal mein momentanes Script:
Code: | <xsl:element name="INHALT">
<xsl:variable name="trennzeichen">[:]</xsl:variable>
<xsl:variable name="zeichenkette" select="INHALT"/>
<!--
<xsl:if test="contains(INHALT,$trennzeichen)">
<xsl:element name="Grundtext">
<xsl:value-of select="substring-before(INHALT,$trennzeichen)"/>
</xsl:element>
</xsl:if>
-->
</xsl:element> |
Ich hatte mir gedacht über die if-Anweisung zu kontrollieren ob noch ein Trennzeichen im String ist und bei jedem Durchlauf den String zu beschneiden. Der Haken hier ist aber das ich den Wert ja irgendwo speichern müsste und per Schleife immer wieder aktualisieren. Wäre super wenn mir da jemand von euch auf die Sprünge helfen könnte.
Vielen Dank
|
|
|
|
|
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mi 07.06.2006 10:50
Titel
|
|
|
Kennt den vielleicht jemand ein gutes Forum wo man sich mit XSLT usw. auskennt?
Sollte jetzt übrigens kein pushen sein.
|
|
|
|
|
Anzeige
|
|
|
sahnemuh
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 07.06.2006 10:52
Titel
|
|
|
schau dir mal xslfast an. da kannst du dir den kram einfach zusammenklickern... sollte einfacher sein
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 07.06.2006 11:41
Titel
|
|
|
Junge, das isn wysiwyg- xsl-FO Editor, hier gehts um xsl-T.
Und die Aufgabenstellung riecht nach nem simplen Perlscript, um deinen Text aufzutrennen, da reicht regex sicher locker aus.
|
|
|
|
|
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mi 07.06.2006 12:14
Titel
|
|
|
vielen Dank für eure beiden Antworten.
@sahnemuh
Mit dem Tool ist mir bestimmt nicht geholfen. Aber trotzdem danke.
@XSchinkenX
Ich möchte das aber direkt im XSLT Script regeln. Kannst du mir da helfen.
Vielen Dank
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Sa 10.06.2006 18:19
Titel
|
|
|
nö, da gibts selfhtml für. ansonsten hab ich meinen tipp ja abgegeben.
|
|
|
|
|
[fränK]
Moderator
Dabei seit: 27.04.2002
Ort: -
Alter: -
Geschlecht:
|
Verfasst So 11.06.2006 01:30
Titel
|
|
|
Passt das?
XML-Quelle
Code: | <?xml version="1.0" encoding="UTF-8"?>
<inhalt>foo1[:]bar1[:]foo2[:]bar2[:]foo3[:]bar3</inhalt> |
XSLT
Code: | <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:variable name="trennzeichen">[:]</xsl:variable>
<xsl:template match="inhalt">
<root>
<xsl:call-template name="jaegermeister">
<xsl:with-param name="text" select="."/>
</xsl:call-template>
</root>
</xsl:template>
<xsl:template name="jaegermeister">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, $trennzeichen)">
<grundtext>
<xsl:value-of select="substring-before($text, $trennzeichen)"/>
</grundtext>
<xsl:call-template name="jaegermeister">
<xsl:with-param name="text" select="substring-after($text, $trennzeichen)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<grundtext>
<xsl:value-of select="$text"/>
</grundtext>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> |
XML-Ausgabe
Code: | <?xml version="1.0" encoding="UTF-8"?>
<root>
<grundtext>foo1</grundtext>
<grundtext>bar1</grundtext>
<grundtext>foo2</grundtext>
<grundtext>bar2</grundtext>
<grundtext>foo3</grundtext>
<grundtext>bar3</grundtext>
</root> |
|
|
|
|
|
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mo 12.06.2006 08:44
Titel
|
|
|
Hallo fränk,
bin erst jetzt zum testen gekommen. Genau so haut es hin.
Vielen Dank und noch eine schöne Woche
|
|
|
|
|
|
|
|
Ähnliche Themen |
Hilfe bei XSLT Script
position=last() - XSLT
Währung mit XSLT
XSLT Position()
Mit XSLT URL encoden?
XML und XSLT - wie fange ich am besten an
|
|