Сохранение значения раскрывающегося списка в html с использованием xslt?

Не уверен, правильно ли я отвечаю на вопрос, но постараюсь:

У меня есть HTML-страница (xml+xslt), которая имеет раскрывающийся список, содержащий 10 значений. Когда я выбираю значение, напр. ABC, я могу выполнить добавление или удаление или поиск. Теперь на всех других страницах (добавление, удаление, поиск) у меня есть кнопка "Домой". Когда я нажимаю на нее, она отправляется домой, но значение выпадающего сбрасывается.

Как сохранить значение, выбранное пользователем?

У меня есть следующий кусок кода, но он не работает, не знаю почему.

Я работаю на TIBCO BusinessWorks.

 <tr > <td>
 <select name= "GetRelationCombo">
        <xsl:for-each select="resultSet/Record">
             <xsl:sort select="REL_NAME" />

                  <option> 
                    <xsl:attribute name="value">
            <xsl:value-of select="REL_NAME" />
               </xsl:attribute>
                   <xsl:value-of select="REL_NAME" />
    <xsl:if test="REL_NAME = 'resultSet/RelationshipName'">
    <xsl:attribute name="selected">true</xsl:attribute>
    </xsl:if>

                 </option>            
      </xsl:for-each>
 </select>
</td></tr>

Это входной XML:

<?xml version = "1.0" encoding = "UTF-8"?>
<resultSet>
  <Record>
    <REL_NAME>ShapeID</REL_NAME>
  </Record>
  <Record>
    <REL_NAME>eMPSQPType</REL_NAME>
  </Record>
  <Record>
    <REL_NAME>GERSGLAccount</REL_NAME>
  </Record>
  <Record>
    <REL_NAME>WageType</REL_NAME>
  </Record>
  <RelationshipName>PLANT</RelationshipName>
</resultSet>

Пожалуйста помоги!! Я в середине чего-то большого.

1 ответ

Во-первых, любые атрибуты, которые вы используете, должны появляться перед чем-либо внутри элемента, так что это:

<xsl:if test="REL_NAME = 'resultSet/RelationshipName'">
    <xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>

должно быть выше этого:

<xsl:value-of select="REL_NAME" />

это не правильно, потому что это будет верно только тогда, когда REL_NAME действительно имеет значение "resultSet/RelationshipName":

REL_NAME = 'resultSet/RelationshipName'

Это фактическое условие, которое вам нужно:

REL_NAME = ../RelationshipName

Модифицированный XSL:

  <option>
    <xsl:attribute name="value">
      <xsl:value-of select="REL_NAME" />
    </xsl:attribute>
    <xsl:if test="REL_NAME = ../RelationshipName">
      <xsl:attribute name="selected">true</xsl:attribute>
    </xsl:if>
    <xsl:value-of select="REL_NAME" />
  </option>

В качестве примечания, я думаю, что правильным значением для выбранного атрибута является "выбранный", а не "истинный", хотя "истинный" может работать в любом случае.

<xsl:attribute name="selected">selected</xsl:attribute>

http://reference.sitepoint.com/html/option/selected

Другие вопросы по тегам