我有以下XSLT模板:
<xsl:template name="foo">
<xsl:param name="arg1">0</xsl:param>
<xsl:param name="arg2" />
<xsl:param name="arg3" />
<xsl:call-template name="bar">
<xsl:with-param name="arg1"><xsl:value-of select="$arg1" /></xsl:with-param>
<xsl:with-param name="arg2"><xsl:copy-of select="$arg2" /></xsl:with-param>
<xsl:with-param name="arg3"><!-- what do I put here? --></xsl:with-param>
</xsl:call-template>
</xsl:template>
现在arg3是一个xml snippit。我只想在arg3中选择一个元素作为arg3传递给bar。如何从参数中选择单个节点?我试过了,但没办法。
请不要建议发送arg3 / qux的值而不是arg3。这是有充分理由的,但这超出了这个问题的范围。
答案 0 :(得分:1)
这取决于XML代码段的外观,但您可以执行以下操作:
<xsl:value-of select="$arg3/first_name" />
修改强>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext msxsl">
<xsl:template match="/">
<xsl:value-of select="ext:node-set($arg3)/first_name" />
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
只需将$ arg3视为节点,对我有用。
<xsl:call-template name="bar">
<xsl:with-param name="arg1"><xsl:value-of select="$arg1" /></xsl:with-param>
<xsl:with-param name="arg2"><xsl:copy-of select="$arg2" /></xsl:with-param>
<xsl:with-param name="arg3" select="$arg3/sub-node"/>
</xsl:call-template>