string - 如何将 xslt 模板应用于字符串?

标签 string xslt xslt-1.0 nodes

给定一个用于围绕值构建一些 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/

相关文章:

C++代码在尝试连续两次打印相同的字符串数组时脱口而出两个截然不同的输出

android - 拆分字符串多字符语法

xml - 如何根据子元素中的新计数值对元素进行排序。 XSLT 1.0

xslt - xsl :message terminate attribute defined by variable (setup like)

javascript - 如何 String.match() 使用正则表达式区分它 ${SOME_TEXT}

xml - XSLT - 多次替换字符串

xml - 在 Wordpress 中使用 XSLT 解析 XML

XSLT 1.0 将多个节点的值相加

xml - Xsl:如何确定节点或其后代是否包含文本

javascript - 接收 var 声明字符串,只保存值