我有一个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>
答案 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>