2008-12-03 66 views
3

我想使用xslt输出html控件,但我需要能够命名控件,以便在表单发回时可以获取它们。输出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> 

回答

3

用途:

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

如果你的XML文档的变化,可能有必要来替代“* “上面的字符更详细的位置步骤。

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节点专门添加一个匹配器,而不仅仅匹配根节点。

0

你需要用$符号的前缀变量引用时:

<input type="radio" name="{$actionid}" value="No" checked ="true"/> nothing to report<br /> 
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;