ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
853
853
EMPFEHLEN
-
Hallo Zusammen,
habe da eine kleine Frage, die ich recht kiffelig finde und zu der mir einfach keine Lösung einfallen will:
Ich habe folgendes xml-Dokument:
...
<titel>Mustertitel</titel>
<autoren>Hans Dampf, George W. Bush, Max Mustermann, Hans im Glück, Donald Duck</autoren>
...
Daraus möchte ich durch eine Transformation folgendes bekommen:
<autoren>
<autor>
<vorname>Hans</vorname>
<nachname>Dampf</nachname>
</autor>
<autor>
<vorname>George</vorname>
<vorname>W</vorname>
<nachname>Bush</nachname>
</autor>
usw.
Ich habe aber keine Ahnung wie ich das hinbekommen kann den String mit den ganzen Namen so zu zerstückeln, v.a. Position für Position um so an die einzelnen Teile zu kommen.
Wenn mir da jemand einen Tip hätte wäre ich sehr dankbar.
Gruß
Christian
-
N'Abend,
also ich versuchs mal, obwohl meine XSLT-Kentnisse schon etwas eingerostet sind. Probier mal folgendes:
Das ganze ohne Anspruch auf Effektivität oder sonstiges, da ich nicht mehr so im Stoff stehe und deshalb nicht sagen kann, ob man solche Probleme so löst, oder es andere elegantere Möglichkeiten gibtCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
<xsl:template match="titel/autoren"> <body> <xsl:call-template name="splitter"> <xsl:with-param name="str" select="."/> </xsl:call-template> </body> </xsl:template> <xsl:template name="splitter"> <xsl:param name="str"/> <xsl:choose> <xsl:when test="contains($str,',')"> <autor> <xsl:call-template name="splitter2"> <xsl:with-param name="str2" select="substring-before($str,',')"/> </xsl:call-template> </autor> <xsl:call-template name="splitter"> <xsl:with-param name="str" select="substring-after($str,',')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <autor> <xsl:call-template name="splitter2"> <xsl:with-param name="str2" select="$str"/> </xsl:call-template> </autor> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="splitter2"> <xsl:param name="str2" /> <xsl:choose> <xsl:when test="contains($str2,' ')"> <vorname> <xsl:value-of select="substring-before($str2,' ')" /> </vorname> <xsl:call-template name="splitter2"> <xsl:with-param name="str2" select="substring-after($str2,' ')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <nachname> <xsl:value-of select="$str2" /> </nachname> </xsl:otherwise> </xsl:choose> </xsl:template>
THMD
-
Hallo THMD,
ja, ich denke so oder so ähnlich könnte es klappen. Ich habe diese Aufgabenstellung in einer alten Klausur meines Profs gefunden. Da will er es mit zwei ineinander geschachtelten for-each Schleifen gelöst haben. Aber irgendwie habe ich den Eindruck das es eben nur über die Lösung geht, die du vorgeschlagen hast.
Danke dir für deinen Tip.
Gruß
Christian
Ähnliche Themen
-
Knoten aus XML rauslösen und mit XSLT rendern / parsen
Von francosdad im Forum PHPAntworten: 3Letzter Beitrag: 02.03.10, 11:00 -
Mit Struts über Beans aus der Session iterieren
Von Alvine im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 3Letzter Beitrag: 28.02.09, 08:28 -
<c:forEach> und Iterieren über beliebig viele Parameter
Von Zak256 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 02.01.09, 22:07 -
Mit der For-Loop aus Java 5 über eigene Strukturen iterieren
Von Thomas Darimont im Forum JavaAntworten: 2Letzter Beitrag: 25.09.06, 10:33 -
Durch Tag-Inhalte iterieren
Von chaertl im Forum XML TechnologienAntworten: 0Letzter Beitrag: 09.06.05, 10:45





Zitieren
Login





