Атрибут XSLT не добавляется
Вопрос
Попытка пометить радиовходы как выбранные с помощью XSLT 1.0 с использованием приведенного ниже кода xslt, но это не привело к желаемому результату
желаемый результат
<input type="radio" value="available" title="email" selected="selected" />
Фактический результат
<input type="radio" value="available" title="email" selected />
У кого-нибудь есть идеи, почему бы и нет, пожалуйста?
XSLT
<xsl:variable name="selected">selected</xsl:variable>
<xsl:for-each select="item">
<tr>
<td><xsl:value-of select="title" /></td>
<td>
<input type="radio" value="available" >
<xsl:attribute name="name">
<xsl:value-of select="title" />
</xsl:attribute>
<xsl:if test="category='available'">
<xsl:attribute name="selected">
<xsl:value-of select="$selected"/>
</xsl:attribute>
</xsl:if>
</input>
</td>
<td>
<input type="radio" value="unavailable" >
<xsl:attribute name="name">
<xsl:value-of select="title" />
</xsl:attribute>
<xsl:if test="category='unavailable'">
<xsl:attribute name="selected">
<xsl:value-of select="$selected"/>
</xsl:attribute>
</xsl:if>
</input>
</td>
<td>
<input type="radio" value="warning" >
<xsl:if test="category='warning'">
<xsl:attribute name="selected">
<xsl:value-of select="$selected"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="title" />
</xsl:attribute>
</xsl:if>
</input>
</td>
</tr>
</xsl:for-each>
Решение
Это связано с вашим режимом вывода.Вы дали указание своему процессору XSLT выводить HTML (а не XML)?Если это так, выходной сериализатор адаптирован для адаптации к особенностям HTML;так что, например, он генерирует <br>
вместо того , чтобы <br/>
и что в нем может отсутствовать содержимое атрибута, если оно идентично имени атрибута.
Это не должно быть проблемой;кстати, это легальный HTML.
Для получения более подробной информации;в спецификации есть раздел о что именно должен делать режим вывода html.Там говорится о многих других вещах...
Метод вывода html должен выводить логические атрибуты (то есть атрибуты с единственным допустимым значением, равным имени атрибута) в свернутом виде.Например, начальный тег, записанный в таблице стилей как
<OPTION selected="selected">
должно быть выведено как
<OPTION selected>
Другие советы
Попробуй это:
<xsl:variable name="selected" select="selected"/>