1

次のように、変数の値で文字列を置換したいと思います。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:str="http://exslt.org/strings" extension-element-prefixes="str" >
<xsl:variable name="my-variable">bar</xsl:variable>
<xsl:template match="text()">
    <xsl:value-of select="str:replace( . ,'foo', $my-variable )"/>
</xsl:template>
</xsl:stylesheet>

これをファイルで実行すると、たとえば、

<?xml version="1.0" encoding="utf-8"?>
<root>foobar</root>

xsltproc / libxslt からのこのエラー

XPath error : Invalid type
xmlXPathCompiledEval: evaluation failed
runtime error: file C:/Users/Adam/Documents/WakhiLD/XSL/replace.xsl line 6 element value-of
XPath evaluation returned no result.

関数呼び出しで変数を使用するのは理にかなっているように見えるので、何をすべきか途方に暮れています。

4

1 に答える 1

0

単に使用するだけ<xsl:variable name="my-variable" select="'bar'"/>で機能するはずです。現在、結果ツリー フラグメント型の変数を作成していますが、そのような引数が渡されたときに、拡張関数が文字列への変換を行っていないように見えます。ただし、上記のように文字列変数を作成するだけで解決するはずです。

結果ツリーのフラグメントとして変数を作成する必要がある場合は、 のように、明示的に文字列に変換してみてください<xsl:value-of select="str:replace( . ,'foo', string($my-variable) )"/>

于 2013-02-01T17:27:36.303 に答える