如何在XSLT中将下拉菜单显示为XML内容

时间:2014-04-03 17:17:32

标签: xml xslt

我有一个xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<Groups>
    <Group num="1">
        <GroupName>First Group</GroupName>
    </Group>
     <Group num="2">
        <GroupName>Second Group</GroupName>
    </Group>
</Groups>

希望在XSLT中显示GroupName作为下拉菜单。

我尝试了以下操作,它显示空的下拉菜单。

<SELECT NAME="Groups">                      
    <xsl:for-each select="Groups/Group">                            
        <OPTION VALUE="{GroupName}">
            <xsl:value-of select="GroupName"/>
        </OPTION>                           
    </xsl:for-each>
</SELECT> 

1 个答案:

答案 0 :(得分:1)

这取决于您的背景。您没有显示for-each正在运行的模板。如果它与根节点/不匹配,则它不会找到相关节点并且将为空。

它适用于此样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:template match="/">
        <SELECT NAME="Groups">                      
            <xsl:for-each select="Groups/Group">                            
                <OPTION VALUE="{GroupName}">
                    <xsl:value-of select="GroupName"/>
                </OPTION>                           
            </xsl:for-each>
        </SELECT> 
    </xsl:template>

</xsl:stylesheet>

如果它不适用于您的情况,那么您的match属性可能会有所不同。这完全是一个背景问题。如果您的模板与Group匹配,那么您的for-each必须考虑该上下文。这也有效:

<xsl:template match="Groups">
    <SELECT NAME="Groups">                      
        <xsl:for-each select="Group">                            
            <OPTION VALUE="{GroupName}">
                <xsl:value-of select="GroupName"/>
            </OPTION>                           
        </xsl:for-each>
    </SELECT> 
</xsl:template>