我正在尝试使用xsl设计一个表单来解析一个简单的xml文件;像这样:
<tests>
<agent ID="1" Name="Name 1" />
<agent ID="2" Name="Name 2" />
<agent ID="3" Name="Name 3" />
</tests>
和xsl文件:
<form action="." method="post" >
<xsl:for-each select="tests">
<table >
<tr>
<th></th>
<th>ID</th>
<th>Name</th>
</tr>
<xsl:for-each select="agent">
<tr>
<td><input type="checkbox" name="checkbox1" value="" /> </td>
<td><xsl:value-of select="@ID"/></td>
<td><xsl:value-of select="@Name"/></td>
</tr>
</xsl:for-each>
</table>
<input type="submit" value="Delete"/>
</xsl:for-each>
</form>
我希望checkbox的值为ID值。(<xsl:value-of select="@ID"/>
)。但我不能在复选框标签内使用此标签。
我该怎么办?
答案 0 :(得分:4)
除了其他地方提到的<xsl:attribute>
元素之外,还值得学习Attribute Value Templates,因为这些通常可以帮助简化您的XSLT代码。这些允许您将表达式直接放在属性
<input type="checkbox" name="checkbox1" value="{@Value}" />
花括号{}表示这是一个“AVT”并包含一个要评估的表达式。
如果您想要基于XML中的某些值的动态属性名称,您甚至可以在<xsl:attribute>
中使用它们。
<xsl:attribute name="{$attrname}">
答案 1 :(得分:0)
<xsl:attribute>
将允许您向标记添加任意属性。
xsl:attribute
元素可用于向结果元素添加属性,无论是由样式表中的文字结果元素创建还是通过xsl:element
等指令创建。
<picture>
<xsl:attribute name="source">foo</xsl:attribute>
</picture>