Почему я не могу это сделать?
<li style="width:<xsl:value-of select="width"/>px">
Поскольку XSL - это сам XML . И это что угодно ... но не XML.
Вы имеете в виду Шаблон значения атрибута :
<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>
наверху.