Variablen in bestehende XML-Struktur einhängen
steveq
- xsl
Ich habe folgende XML-Struktur:
<adressbuch>
<person>
<nachname>Müller</nachname>
<vorname>Hans</vorname>
</person>
<person>
<nachname>Kalt</nachname>
<vorname>Elise</vorname>
</person>
</adressbuch>
Ausserdem habe ich im XSLT eine Variable, die folgendes enthält:
<adressbuch>
<person>
<nachname>Löwe</nachname>
<vorname>Klaus</vorname>
</person>
<person>
<nachname>Sommer</nachname>
<vorname>Anja</vorname>
</person>
</adressbuch>
Nun möchte ich den Inhalt der Variable direkt in Adressbuch im XML einhängen.
Dies tue ich mit
<xsl:value-of select="$variable"></xsl:value-of>
Das klappt soweit, dass ich als Ergebnis habe:
<adressbuch>
<person>
<nachname>Müller</nachname>
<vorname>Hans</vorname>
</person>
<person>
<nachname>Kalt</nachname>
<vorname>Elise</vorname>
</person>
<adressbuch>
<person>
<nachname>Löwe</nachname>
<vorname>Klaus</vorname>
</person>
<person>
<nachname>Sommer</nachname>
<vorname>Anja</vorname>
</person>
</adressbuch>
</adressbuch>
Wie filtere ich das Rootelement aus der Variable heraus?
Ich habe es mit <xsl:value-of select="$variable/adressbuch/."></xsl:value-of>
probiert, das klappt aber nicht.
Was auch nicht ging ist ein <xml:template match="adressbuch"></xml:template>
, da ich das ganze in einer xsl:choose-Abfrage habe und mir der Parser da sagt, dass xml:template nicht unterhalb von xsl:choose kommen darf.
Welchen Ansatz muss ich verfolgen, um zum gewünschten Ergebnis zu kommen?
Vielen Dank,
Steve
Hi
ich vermute du arbeitest mit XSLT2.0, da erst mit 2.0 knoten strukturen in variablen native unterstuetzt werden. Ansonsten musst du erweiterungen wie exslt verwenden.
Zu deinem Problem:
Hast du es schon einmal probiert mit:
<xsl:copy-of select="$variable/adressbuch/."/>
Das gibt den selektierten knoten zurueck.
Gruss, H.
ich vermute du arbeitest mit XSLT2.0, da erst mit 2.0 knoten strukturen in
Nein, ist noch XSLT1.0
Ich arbeite mit .NET-Extensions und lasse mir die Verarbeitung dann in eine Variable zurückgeben.
<xsl:copy-of select="$variable/adressbuch/."/>
Hm, das hatte ich probiert, dies lieferte aber den gesamten Knoten, inkl. <adressbuch> zurück.
Durch langes probieren war es dann ein "*" statt dem ".", was zu Erfolg führte.
Vielen Dank für deine Hilfe!
Steve