在xslt

时间:2018-06-12 05:28:40

标签: xslt

我正在尝试使用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'

帮我解决此问题。

1 个答案:

答案 0 :(得分:0)

已共享的代码存在多个问题。

  1. XSL模板不能同时指定matchname属性。您可以具有match属性或name属性。如果要与输入XML中的相同元素匹配,则match属性可以与mode属性一起使用。
  2. XSL变量object已声明,并为其分配了值Hello。但是,您还从b内部调用模板<xsl:variable>,这是不正确的。 XSL变量不能同时具有selectcontent

如果要从一个模板向另一个模板传递参数,则可能需要修改以下代码。

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