xslt中的选定属性下拉列表

时间:2013-07-15 18:47:54

标签: xslt

我有一个来自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。

任何帮助都将不胜感激。

感谢。 You can find the image here

编辑:我已尝试多种方式选择属性,如

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

它们似乎都不起作用。

1 个答案:

答案 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添加的文本节点。在添加任何子节点之前,您需要添加所有属性,无论是文本还是其他节点。