Сохранение значения раскрывающегося списка в 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>