2008-12-03 10 views
3

Я хотел бы выводить элементы управления html с помощью 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> 

ответ

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;