如何使用XSL创建HTML属性?

时间:2011-02-23 11:56:44

标签: html xml xslt

为什么使用XML数据来设置HTML标记的样式是非法的?例如:

<li style="width:<xsl:value-of select="width"/>px"> 

为什么我不能这样做?那里有其他替代方法吗?

2 个答案:

答案 0 :(得分:37)

  

为什么我不能这样做?

<li style="width:<xsl:value-of select="width"/>px">

因为XSL是XML 本身。这就是......但不是XML。

你的意思是Attribute Value Template

<li style="width:{width}px">

或显式形式,用于更复杂的表达式:

<li>
  <xsl:attribute name="style">
    <xsl:choose>
      <xsl:when test="some[condition = 'is met']">thisValue</xsl:when>
      <xsl:otherwise>thatValue</xsl:otherwise>
    </xsl:choose>
  </xsl:attribute>
</li>

或动态属性名称(请注意名称中的属性值模板):

<li>
  <xsl:attribute name="{$attrName}">someValue</xsl:attribute>
</li>

附加说明:必须在所有其他子节点之前创建属性。换句话说,请将<xsl:attribute>放在最上方。

答案 1 :(得分:8)

您的原始xsl格式不正确,因为您无法将xsl标记放在另一个节点中。

我认为您需要使用xsl:attribute,如下所示:

<li>
  <xsl:attribute name="style">
     width:<xsl:value-of select="width"/>px;
  </xsl:attribute>
</li>