Как использовать XSL для создания атрибутов HTML? Почему использование XML-данных в HTML-тегах HTML запрещено? Например: <li style="width:<xsl:value-of select="width"/>px"> Почему я не могу это сделать? Существуют ли альтернативные методы? Ответ 1 Почему я не могу это сделать? <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> вверху. Ответ 2 Исходный xsl не сформирован, так как вы не можете иметь тег xsl внутри другого node. Я думаю, вам нужно использовать атрибут xsl: следующим образом: <li> <xsl:attribute name="style"> width:<xsl:value-of select="width"/>px; </xsl:attribute> </li>
Ответ 1 Почему я не могу это сделать? <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> вверху.
Ответ 2 Исходный xsl не сформирован, так как вы не можете иметь тег xsl внутри другого node. Я думаю, вам нужно использовать атрибут xsl: следующим образом: <li> <xsl:attribute name="style"> width:<xsl:value-of select="width"/>px; </xsl:attribute> </li>