2017-02-23 196 views
1

Я пытаюсь сделать динамическую форму с XML и XSLT. Моя цель - получить динамический код HTML из моего XML-файла.XSLT динамическая форма получения элементов

Я пытаюсь получить значение элемента, но я не могу его достичь.

Это мой XML:

<element> 
    <id>7</id> 
    <type>RADIO</type> 
    <name>Sexo</name> 
    <values> 
     <value>Hombre</value> 
     <value>Mujer</value> 
    </values> 
</element> 

И это мой XSLT-код:

<xsl:if test="type='RADIO'"> 
    <td> 
     <xsl:value-of select="name" />: 
    </td> 
    <td> 
     <xsl:for-each select="values/value"> 
      <input type="radio" name="{name}" 
        value="{current()}" onchange="myFunction(this.id,this.value)" /> 
      <xsl:value-of select="current()" /> 
     </xsl:for-each> 
    </td> 
</xsl:if> 

Я получаю следующий вывод:

<td>Sexo:</td> 
<td><input onchange="myFunction(this.id,this.value)" 
      value="Hombre" name="" type="radio">Hombre 
    <input onchange="myFunction(this.id,this.value)" value="Mujer" name="" 
      type="radio">Mujer 
</td> 

Как я могу получить имя в моем html-коде? Я уже пробовал использовать ../name и parent::node()

Спасибо заранее.

+0

Это хороший и хорошо сформированный вопрос, так что я upvoted его. – zx485

ответ

3

Я уже пробовал использовать ../name

value является внуком element - так, чтобы выбрать name из контекста value, вам нужно идти вверх два уровня, затем вниз в name:

<input type="radio" name="{../../name}" /> 

Или, если вы предпочитаете:

<input type="radio" name="{ancestor::element/name}" /> 
+0

Спасибо, Майкл. Я думал, что уже пробовал, но, возможно, написал неправильно. – DMC19