首页 > 解决方案 > 使用 XSL-T 将属性名称添加到单选按钮

问题描述

我制作了一个 XSL-T 文件来将 xml 测验转换为带有表格的表格,问题是由于问题是使用递归编程创建的,因此我无法为它们添加名称,因此无法知道哪个问题是哪个。

XML 文件包含如下元素:

<question id="question2" filter="generic">
    <foo>What console do you like the most?</foo>
    <simple-election>
        <option>Playstation 4</option>
        <option>Nintendo Switch</option>
        <option>XBox One</option>
        <option></option>
    </simple-election>
</question>

这是 XSL-T 文件:

<xsl:template match="simple-election">
<xsl:for-each select="option">
    <tr>
        <td><xsl:value-of select="."/></td>
        <td><input type="radio"></input></td>
    </tr>
</xsl:for-each>
</xsl:template>

(文件的其他部分有表格、表格等的开头)

我的想法是添加如下内容:

<td><input name="question/@id" type="radio"></input></td>

但我似乎无法让它工作,知道吗?

PS:如有必要,我可以向您展示文件的其余部分。

标签: xmlxsltradio-button

解决方案


尝试:

<input name="{../../@id}" type="radio">

或者,为了提高效率,id在变量中捕获:

<xsl:template match="simple-election">
    <xsl:variable name="question-id" select="../@id" />

然后将其用作:

<input name="{$question-id}" type="radio">

有关更多详细信息,请参阅位置路径属性值模板


推荐阅读