xsl:element存储为变量?

时间:2011-09-20 11:03:31

标签: xslt element

您可以将元素名称存储为稍后要调用的变量吗?

例如:

<xsl:variable name="element">
            <xsl:choose>
                <xsl:when test="Argument1">strong</xsl:when>
                <xsl:when test="Argument2">em</xsl:when>
            </xsl:choose>
        </xsl:variable>
        <xsl:element name="{$element}">
            <a href="{$url}">
                <xsl:value-of select="title"/>
            </a>
        </xsl:element>

因此,基于预定义的参数,要包围锚标记的元素必须是<strong><em>

或者我是否接近这个错误?

长篇大论并在每个参数的choose when语句中复制锚标记似乎不起作用。

谢谢, 凯文

2 个答案:

答案 0 :(得分:1)

我认为你发布的样本应该有效。使用XSLT 2.0,您甚至可以<xsl:element name="{if (Argument1) then 'strong' else if (Argument2) then 'em' else ()}">

答案 1 :(得分:1)

您的方法完全有效。

或者,可以使用两个模板:

<xsl:template match="someElement[Argument1]">
 <strong>
   <a href="{$url}">                 
     <xsl:value-of select="title"/>             
   </a>  
 </strong>
</xsl:template>

<xsl:template match="someElement[Argument2]">
 <em>
   <a href="{$url}">                 
     <xsl:value-of select="title"/>             
   </a>  
 </em>
</xsl:template>

可以说第二种方法更具说明性,灵活性和可维护性。