给定一个用于围绕值构建一些 html 的模板,我想传入一个字符串,而不是节点集。例如,我想连接一些值并将其传递给模板。我怎样才能实现这种目标?
<xsl:template match="text()" mode="kvp-print-single">
<tr>
<td colspan="3"><xsl:value-of select="."/></td>
</tr>
</xsl:template>
...
<xsl:apply-templates select="concat=(haba/hiba:text(), ' - ', huba/baba:text())" mode="kvp-print-single"/>
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>
然后只需使用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>
请注意,当使用 xsl:apply-templates 匹配时,模板仍将以正常方式匹配“text()”节点。
关于string - 如何将 xslt 模板应用于字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20329594/