<xsl:attribute
name="width">$length</xsl:attribute>
Это создаст атрибут со значением строка $length
. Но вам нужно значение параметра xsl: param $length
.
<xsl:attribute
name="width"><xsl:value-of-select="$length"></xsl:attribute>
Здесь элемент <xsl:value-of>
не закрыт - это делает код XSLT неправильно сформированным xml.
Решение
Используйте одно из следующего:
<xsl:attribute name="width"><xsl:value-of select="$length"/></xsl:attribute>
или
<someElement width="{$length}"/>
Для удобочитаемости и компактности предпочитайте использовать 2. выше , когда это возможно.