在xsl中使用美元“$”

时间:2013-08-19 13:02:08

标签: xslt xslt-1.0

在下面的代码中,我想了解这里的“$ type”是什么以及如何使用它。

如何使用“$ type”应用此if条件。

<xsl:template name="CodValue">
<xsl:param name="type"/>         
<xsl:param name="nodeNM">category</xsl:param>                  
<xsl:element name="{$nodeNM}">             
<xsl:if test="$type">                 
<xsl:attribute name="xsi:type">                     
<xsl:value-of select="$type"/>                 
</xsl:attribute>             
</xsl:if>
</xsl:element> 
</xsl:template> 

2 个答案:

答案 0 :(得分:0)

对于此模板,您需要一个参数,另一个是可选的nodeNM。您可以像这样调用参数:

<xsl:call-template name="CodValue">
   <xsl:with-param name="type" select="123" />
</xsl:call-template>

<xsl:call-template name="CodValue">
   <xsl:with-param name="type">123</xsl:with-param>
</xsl:call-template>

type是CodValue中的变量,因此您可以通过

打印它
<xsl:value-of select="$type" />

或通过属性中的{$type}

建议:

  • $ nodeNM看起来像标签的名称(如果您生成HTML代码,则为html-tags)。
  • $ type(如果从xpath返回true,即如果不为空)将创建一个xsi:type-Tag-Attribute。

所以如果你打电话

<xsl:call-template name="CodValue">
   <xsl:with-param name="type" select="123" />
</xsl:call-template>

您的XML将转换为

<category xsi:type="123" />

答案 1 :(得分:0)

$用于引用XPath表达式中的变量。

在这种特殊情况下,$type先前声明了<xsl:param name="type"/>。但是,它没有给出值,因此在调用模板时需要使用<xsl:with-param>,以便您可以提供值。

n.b。变量$nodeNM被赋予了默认值,因此您无需在调用模板时指定它。