Veröffentlicht 15. März 200421 j Hallo, ich habe ein Problem mit XML-Transformationen. Ich möchste einen Teilbaum in einer Variable speichern um den Inhalt später wieder lesen zu können. Es funktioniert aber überhaupt nicht. Die Fehlermeldung ist immer >> ERROR: Description: Expression must evaluate to a node-set. -->$data<--/message << Ich verstehe den Fehler nicht. Ich copiere doch einen Node-set (wege copy-of anstatt value-of) Wieos kann ich dann nicht auf die Unterelemente zugreifen. Anmerkung: Der Zugriff auf die Variable selbst funktioniert. Bisher habe ich soetwas: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" /> <xsl:variable name="currenttype" select="'idoc'"/> <xsl:variable name="currentclient" select="/content/rule-result/client"/> <xsl:variable name="data"> <xsl:for-each select="/content/datasource/client"> <xsl:if test="./name=$currentclient"> <xsl:if test="type=$currenttype"> <xsl:copy-of select="."/> </xsl:if> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:template match="/"> <test><xsl:value-of select="$data/message"/></test> </xsl:template> </xsl:stylesheet> Die XML-Datei sieht so aus: <content> <!--cut--> <datasource> <client> <name>218</name> <type>bim</type> <mail>a@a.de</mail> <message>Nachricht1</message> </client> <client> <name>218</name> <type>idoc</type> <mail>b@b.de</mail> <mail>c@c.de</mail> <message>Nachricht2</message> </client> <client> <name>201</name> <type>idoc</type> <mail>d@d.de</mail> <message>Nachricht3</message </client> </datasource> </content> Kann mir irgendwer helfen? :confused:
18. März 200421 j warum kopierst du denn? setze doch data auf das element. damit bekommst du dann auch dein nodeset.
18. März 200421 j Wie? So? <xsl:variable name="data" select="/content/datasource/client"> Das funktioniert?
19. März 200421 j So sollte es funtkionieren. So zeigt deine Variable auf ein NodeSet. Schon ausprobiert? Welchen XSLT-Prozessor nutzt du denn?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.