我有一个来自 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 value' 满足条件并显示。例如,在图像中,您可以看到运营商 - Metro PCS 的文本。
任何帮助将不胜感激。
谢谢。
编辑:我已经尝试了多种方法来选择属性,例如
<xsl:attribute name="SELECTED"></xsl:attribute>
<xsl:attribute name="SELECTED">True</xsl:attribute>
<xsl:attribute name="SELECTED">selected</xsl:attribute>
它们似乎都不起作用。
最佳答案
尝试交换这两行:
: 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 添加的文本节点添加属性。所有属性添加都需要在添加任何子节点之前添加,无论是文本还是其他。
关于xslt - xslt 下拉列表中选定的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661630/