Mit*_*hon 3 string xslt nodes xslt-1.0
给定一个用于在值周围构建一些html的模板,我想传入一个字符串,而不是一个节点集.作为一个例子,我想连接一些值并将其传递给模板.我怎么能做到这一点呢?
<xsl:template match="text()" mode="kvp-print-single">
<tr>
<td colspan="3"><xsl:value-of select="."/></td>
</tr>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
...
<xsl:apply-templates select="concat=(haba/hiba:text(), ' - ', huba/baba:text())" mode="kvp-print-single"/>
Run Code Online (Sandbox Code Playgroud)
ErrorMsg:xml或样式表文件无效!
异常:System.Xml.Xsl.XsltException:表达式必须求值为节点集.
如果目标是重复使用代码,要在多个位置使用模板,那么您可以做的是为模板命名(除了模板匹配),并为其提供默认参数
<xsl:template match="text()" name="kvp-print-single" mode="kvp-print-single">
<xsl:param name="text" select="." />
<tr>
<td colspan="3"><xsl:value-of select="$text"/></td>
</tr>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
然后使用xsl:call-template以连接字符串作为参数调用它
<xsl:call-template name="kvp-print-single">
<xsl:with-param name="text" select="concat(haba/hiba:text(), ' - ', huba/baba:text())" />
</xsl:call-template>
Run Code Online (Sandbox Code Playgroud)
注意,当使用xsl:apply-templates匹配时,模板仍将以正常方式匹配"text()"节点.