2013-02-22 67 views
0

我想用param创建模板,并使用此param创建一个具有该名称的元素。从变量中分配xml元素名称

这怎么办?

这是一个不起作用的例子,但给出了我想要做的事情的想法。

<xsl:call-template name="parseOneValue"> 
    <xsl:with-param name="name" select="'addr'" /> 
</xsl:call-template> 

<xsl:template name="parseOneValue"> 
    <xsl:param name="name"/> 
    <xsl:element name="$name"> 
    <xsl:attribute name="at">local 
    </xsl:attribute> 
    </xsl:element> 
</xsl:template> 

回答

3

当你有以包围与大括号中的XPath表达式,以指示该值必须被动态计算XSLT处理器的XML元素内分配XPath表达式的属性。

所以正确的模板将是:

<xsl:template name="parseOneValue"> 
    <xsl:param name="name"/> 
    <xsl:element name="{$name}"> 
    <xsl:attribute name="at">local 
    </xsl:attribute> 
    </xsl:element> 
</xsl:template> 
+1

仅供参考这就是所谓的规范中的“属性值模板”。 – 2013-02-22 10:49:27

+0

谢谢..我不知道。我以前就是这样做的,但解析器抱怨。现在我再次尝试,它的工作原理;) – jlanza 2013-02-22 11:05:55

+0

很高兴我能帮助:) – 2013-02-22 11:22:58