Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xslt下拉列表中的选定属性_Xslt - Fatal编程技术网

xslt下拉列表中的选定属性

xslt下拉列表中的选定属性,xslt,Xslt,我有一个以逗号分隔的列表,它来自C#,我正在XSLT中解析它并将其作为下拉列表加载。在用户从下拉列表中选择选项并提交页面后,如果页面中没有填写其他字段,我将尝试使用此下拉列表中选择的选项重新加载页面 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template name="parseString"> <xsl:param name="lis

我有一个以逗号分隔的列表,它来自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值

但在重新加载时,下拉列表中的选定值不会保持不变。 但我可以看到文本-‘sel value’符合条件并显示出来。例如,在图像中,您可以看到carrier-Metro PC的文本

任何帮助都将不胜感激

谢谢。

编辑:我尝试了多种方法来选择属性,如

<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值
我认为您正在尝试向“: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>

:sel值

如果if为true,则尝试向文本节点添加一个属性,该属性的值为。在添加任何子节点(无论是文本节点还是其他节点)之前,都需要添加所有属性。

您好,感谢您的回复。这种变化产生了与以前相同的输出。但所选值同样不会显示在下拉列表中。我不必加上“sel值”,只是为了表明条件满足。是的,你是对的!!我在考虑您关于将属性添加到文本节点的评论。我试着在类似的线路上进行纠正,结果成功了。非常感谢你。