2

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

如果条件是如何使用“$type”应用的。

<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> 
4

2 回答 2

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 是一个变量 in CodValue,所以你可以通过

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

或通过{$type}in 属性。

建议:

  • $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" />
于 2013-08-19T13:10:12.540 回答
0

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

在这种特殊情况下,$type由 较早声明<xsl:param name="type"/>。但是,它没有被赋予一个值,因此您需要<xsl:with-param>在调用模板时使用,以便您可以提供一个值。

nb 变量$nodeNM被赋予了一个默认值,所以你不需要在调用模板时指定它。

于 2013-08-19T13:20:33.843 回答