我正在尝试使用xslt将xml转换为html。 现在我对在xslt中使用变量感到震惊。 是否可以将变量从父节点传递到子节点以外的其他模板? 我有像这样的amy xslt代码 `
<xsl:template match="xpath"name="a">
<xsl:variable name="object" select="Hello">
<xsl:call-template="b">
<xsl:with-param name="object" select="$object"/>
</xsl:call-template>
</xsl:variable>
</xsl:template>
<xsl:template match="xpath" name="b">
<xsl:param name="object"/>
</xsl:template>
`
我收到以下错误消息
unexpected xslt element 'param'
帮我解决此问题。
答案 0 :(得分:0)
已共享的代码存在多个问题。
match
和name
属性。您可以具有match
属性或name
属性。如果要与输入XML中的相同元素匹配,则match
属性可以与mode
属性一起使用。object
已声明,并为其分配了值Hello
。但是,您还从b
内部调用模板<xsl:variable>
,这是不正确的。 XSL变量不能同时具有select
和content
。如果要从一个模板向另一个模板传递参数,则可能需要修改以下代码。
<!-- template matching with input XML -->
<xsl:template match="xpath">
<!-- declare variable "object" and assign value as "Hello" -->
<xsl:variable name="object" select="'Hello'" />
<!-- call template "b" and pass the value of variable "object" -->
<xsl:call-template name="b">
<xsl:with-param name="object" select="$object" />
</xsl:call-template>
</xsl:template>
<!-- create template "b" using @name attribute -->
<xsl:template name="b">
<!-- declare parameter -->
<xsl:param name="object" />
<!-- print the value of parameter -->
<xsl:value-of select="$object" />
</xsl:template>