未添加 XSLT 属性
尝试使用下面的 xslt 代码将无线电输入标记为使用 XSLT 1.0 选择,但这不会产生所需的结果
所需的结果
<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>
Trying to mark radio inputs as selected with XSLT 1.0 using the below xslt code but this does not produced the desired result
desrired result
<input type="radio" value="available" title="email" selected="selected" />
Actual output
<input type="radio" value="available" title="email" selected />
Anyone any ideas why not please?
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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是由于您的输出模式所致。您是否指示 XSLT 处理器输出 HTML(而不是 XML)?如果是这样,输出序列化器会根据 HTML 的特性进行调整;例如,它会生成
而不是
,并且如果与属性名称相同,它可能会忽略属性内容。这不应该是一个问题;顺便说一句,它是合法的 HTML。
了解更多详情;该规范有一个关于 具体内容的部分html 输出模式应该是。它说的还有其他事情......
This is due to your output mode. Have you instructed your XSLT processor to output HTML (rather than XML)? If so, the output serializer is adapted to adjust for the idiosyncracies of HTML; so that for instance it generates
<br>
rather than<br/>
and that it may leave out attribute content if identical to attribute name.This shouldn't be a problem; it's legal HTML, by the way.
For more details; the spec has a section on what exactly html output mode is supposed to do. Amonst other things it says...
试试这个:
http://www.w3schools.com/xsl/el_variable.asp
Try this:
<xsl:variable name="selected" select="selected"/>
http://www.w3schools.com/xsl/el_variable.asp