2008-12-03 50 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;