Simon Reinhardt: Anführungszeichen in XPath-Ausdruck encoden

Beitrag lesen

Hi zusammen!

Er hat ja auch nach 'Anfuehrungsstrichen' gefragt in der Ueberschrift.

Ich meinte das einfache Anführungszeichen ;-)

Warum nimmst du nicht das naheliegenste: "

Nein, selbst mit ' geht es nicht. Der XML-Parser wandelt es um und gibt es als ' an die XSLT-Engine, welche dann wieder meckert, weil '...'...' da steht. Gebe ich hingegen ' ein, dann macht er mir '...'...' daraus - damit kann die XSLT-Engine auch nicht gerade viel anfangen.

Aber ich hab das Problem jetzt über sehr große Umwege gelöst. Eigentlich wollte ich ja einen String als XPath-Ausdruck interpretieren (geht mit der Xalan-Funktion evaluate), also:
<xsl:apply-templates select="xalan:evaluate('xpath-ausdruck')" />
Allerdings enthält dieser XPath-Ausdruck wiederum eine Funktion, die einen String-Wert erwartet (document-Funktion). Deshalb dachte ich mir: ich kann diesen String-Wert ja auch einfach in eine Variable packen und dort eingeben:
<xsl:variable name="$url" value="substring-before(@href, '#')" />
<xsl:apply-templates select="xalan:evaluate('document($url)')" />
Aber denkste: Xalan sagt mir, er kennt die Variable an dieser Stelle nicht (der gleiche Ausdruck in einem value-of führt zum gewünschten Ergebnis, also hat apply-templates wahrscheinlich einen eigenen Kontext, in dem die Variablenbindung unbekannt ist).
Letzte Rettung: ich führe den Ausdruck vorher aus und übergebe das Resultset an apply-templates:
<xsl:variable name="url" select="substring-before(@href,'#')" />
<xsl:variable name="resultset" select="xalan:evaluate(concat('document($url,/)/', @query))" />
<xsl:apply-templates select="$resultset" />
Und so läuft's jetzt.

Nein, das müsst Ihr jetzt nicht alles verstehen, aber danke für's Zuhören ;-)

VG->Cologne
Simon