Я хотел бы выводить элементы управления html с помощью xslt, но мне нужно иметь возможность назвать элементы управления, чтобы я мог получить к ним доступ, когда форма вернется.
Я хотел бы иметь возможность назвать переключатель "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>






<?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, а не только для сопоставления корневого узла.
При обращении к переменной вам необходимо добавить к переменной префикс $:
<input type = "radio" name = "{$actionid}" value = "No" checked = "true"/> nothing to report<br />
Использовать:
<input type = "radio" name = "{concat('action_', /*/*/*/case_id)}"
value = "No" checked = "true"/>
В случае изменения вашего xml-документа может потребоваться заменить символы "*" выше более подробными инструкциями по определению местоположения.
У вашего набора данных есть замечательное свойство: это дерево, каждый узел может быть идентифицирован по его пути в дереве. Я бы сказал, что лучше всего назвать элементы управления, соответствующие каждому узлу XML, таким образом, чтобы это отражало:
Вам просто нужен способ получить имена родительских узлов, например:
<xsl:variable name = "parent1Name"
select = "name(parent::*)" />