3

我想使用 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

4 回答 4

3

采用:

<input type="radio" name="{concat('action_', /*/*/*/case_id)}"
 值=“否”检查=“真”/>

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

于 2008-12-03T15:07:41.640 回答
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 节点添加一个匹配器,而不仅仅是在根节点上匹配。

于 2008-12-03T14:12:48.863 回答
0

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

<input type="radio" name="{$actionid}" value="No" checked ="true"/> nothing to report<br />
于 2008-12-03T15:05:16.200 回答
0

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

  1. NewDataSet_Cases_Case1_case_id1_rb。
  2. NewDataSet_Cases_Case1_case_id2_rb。

您只需要一种获取父节点名称的方法,例如:

&lt;xsl:variable name="parent1Name"
              select="name(parent::*)" /&gt;
于 2008-12-03T15:57:39.790 回答