如何使用XSLT填充下拉列表

时间:2017-03-15 03:50:26

标签: asp.net xml xslt

我可以创建一个下拉列表。但是,我无法使用XML数据填充任何内容。任何人都可以帮我解决这个问题吗?谢谢!

这是XML代码

<group name="Security / PDPA">
  <section name="Control" db_field_name="control_score">
    <field is_admin_field="N" required="Y">
      <question_title>Verify customer's details when necessary</question_title>
      <type>List</type>
      <db_field_name>verify_customers_details_when_necessary_control</db_field_name>
      <options>
        <item score="2">Yes</item>
        <item score="0">No</item>
        <item score="2">No with reason</item>
      </options>
      <db_field_length>14</db_field_length>
      <additional_comment/>
    </field></section></group>

这是XSLT代码

 <select name="form">
      <xsl:for-each select="form/fieldset/group/section/field/options">
        <option>
          <xsl:attribute name="value">
            <xsl:value-of select="item"/>
          </xsl:attribute>
        </option>
      </xsl:for-each>
      </select>

1 个答案:

答案 0 :(得分:0)

我假设您没有显示完整的XML,因为xsl:for-each中的Xpath表达式正在寻找form/fieldset/group/section/field/options,但初始formfieldset都不是显示在您的XML中。

考虑到这一点,问题可能是因为您选择了带有options的{​​{1}}元素,但只有其中一个。{1}}。您应该选择xsl:for-each元素,因为您希望为每个项目输出item标记

<option>

或者更好的是,使用属性值模板来缩短代码

  <xsl:for-each select="form/fieldset/group/section/field/options/item">
    <option>
      <xsl:attribute name="value">
        <xsl:value-of select="@score"/>
      </xsl:attribute>
      <xsl:value-of select="." />
    </option>
  </xsl:for-each>