2013-02-22 66 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