输出html控件 - 动态控件名称

时间:2008-12-03 14:00:56

标签: html xslt xslt-1.0

我想使用xslt输出html控件,但我需要能够命名控件,以便在表单发回时我可以使用它们。

我希望能够命名单选按钮"action_" + _case_id

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<NewDataSet>
  <Cases>
    <Case>
      <case_id>30</case_id>
    </Case>
  <Cases>
</NewDataSet>

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
     <div class="your_action">
      Your action:<br />
      <input type="radio" name="?" value="No" checked ="true"/> nothing to report<br />
      <input type="radio" name="?" value="Yes" /> memo to follow
    </div>
  </xsl:template>
</xsl:stylesheet>

4 个答案:

答案 0 :(得分:3)

使用: 的

<input type="radio" name="{concat('action_', /*/*/*/case_id)}"
 value="No" checked ="true"/>

如果你的xml文档发生了变化,可能需要用更详细的位置步骤替换上面的“*”字符。

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<NewDataSet>
  <Cases>
    <Case>
      <case_id>30</case_id>
    </Case>
  <Cases>
</NewDataSet>

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
     <xsl:variable name="actionid">action_<xsl:value-of select="Cases/Case/case_id"/></xsl:variable>
     <div class="your_action">
      Your action:<br />
      <input type="radio" name="{actionid}" value="No" checked ="true"/> nothing to report<br />
      <input type="radio" name="{actionid}" value="Yes" /> memo to follow
    </div>
  </xsl:template>
</xsl:stylesheet>

注意:未经测试。您可能希望专门为Case节点添加一个匹配器,而不仅仅是在根节点上匹配。

答案 2 :(得分:0)

在引用变量时,您需要在变量前加上$符号:

<input type="radio" name="{$actionid}" value="No" checked ="true"/> nothing to report<br />

答案 3 :(得分:0)

您的数据集具有很好的属性,它是一棵树,每个节点都可以通过它在树中的路径来识别。我想说最好的办法是以反映这一点的方式命名与每个XML节点对应的控件:

  1. NewDataSet_Cases_Case1_case_id1_rb。
  2. NewDataSet_Cases_Case1_case_id2_rb。
  3. 您只需要一种方法来获取父节点的名称,例如:

    &lt;xsl:variable name="parent1Name"
                  select="name(parent::*)" /&gt;