h-r*_*rai 2 xml xslt parameters select parameter-passing
我有一个名为event的参数,其值event_val在用于转换 XML 的 XSLT 文件中说明。
我想得到,<xsl:value-of select="event_val"/>但结果变换event_val在<TimeCommenced>块内。
代码如下:
<xsl:param name="event"/><xsl:template match="/">
<Event>
<TimeCommenced>
<xsl:variable name="time_commenced" select="$event"/>
<xsl:value-of select="$time_commenced"/>
</TimeCommenced>
</Event>
Run Code Online (Sandbox Code Playgroud)
参数的内容是字符串,而不是XPath 表达式。如果您有一个名为“param”的参数并且它包含字符串“last_name”,则指令:
<xsl:value-of select="param"/>
Run Code Online (Sandbox Code Playgroud)
将被评估为:
<xsl:value-of select="'last_name'"/>
Run Code Online (Sandbox Code Playgroud)
导致输出文字字符串“last_name”。
将参数传递给变量没有任何区别,而且完全是多余的。尝试改为:
<xsl:value-of select="*[local-name() = $param]"/>
Run Code Online (Sandbox Code Playgroud)
如果要获取名为“last_name”的节点的内容。或者(最好是恕我直言)找到一些其他(不那么尴尬)的方法来处理这个问题。