我有一个来自C#的逗号分隔列表,我在XSLT中解析并将其作为下拉列表加载。用户从下拉列表中选择该选项并提交页面后,如果页面中未填写其他字段,我会尝试使用所选选项重新加载该页面。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="parseString">
<xsl:param name="list"/>
<xsl:if test="contains($list, ',')">
<xsl:element name="option">
<xsl:attribute name="value">
<xsl:value-of select="substring-before($list, ',')"/>
</xsl:attribute>
<xsl:value-of select="substring-before($list, ',')"/>
<xsl:if test="substring-before($list, ',')=$carrier">
: sel value
<xsl:attribute name="SELECTED"></xsl:attribute>
</xsl:if>
</xsl:element>
<xsl:call-template name="parseString">
<xsl:with-param name="list" select="substring-after($list, ',')"/>
</xsl:call-template>
</xsl:if>
但是在重新加载时,不会保留下拉列表中的选定值。 但我可以看到文本 - 'sel值'符合条件并显示。例如,在图像中,您可以看到载体文本 - Metro PCS。
任何帮助都将不胜感激。
感谢。
编辑:我已尝试多种方式选择属性,如
<xsl:attribute name="SELECTED"></xsl:attribute>
<xsl:attribute name="SELECTED">True</xsl:attribute>
<xsl:attribute name="SELECTED">selected</xsl:attribute>
它们似乎都不起作用。
答案 0 :(得分:2)
尝试交换这两行:
: sel value
<xsl:attribute name="SELECTED"></xsl:attribute>
是
<xsl:attribute name="SELECTED"></xsl:attribute>
: sel value
我认为你试图在“:sel value”文本节点中添加一个显然不起作用的属性。
修改强>
仔细查看您的模板我认为这是一个像上面建议的问题(向文本节点添加属性)。 试试这个:
<xsl:element name="option">
<xsl:attribute name="value">
<xsl:value-of select="substring-before($list, ',')"/>
</xsl:attribute>
<xsl:if test="substring-before($list, ',')=$carrier">
<xsl:attribute name="SELECTED"></xsl:attribute>
: sel value
</xsl:if>
<xsl:value-of select="substring-before($list, ',')"/>
</xsl:element>
当你的if为true时,它会尝试将属性添加到value-of添加的文本节点。在添加任何子节点之前,您需要添加所有属性,无论是文本还是其他节点。