我创建了一个名为“BusLocationLinks”的组件,它存储了业务名称以及我创建的地图的坐标。
我有近50个具有相同模式的业务位置(BusLocationsLinks),并且只想列出该名称的所有组件组件的元素“业务名称”。我已经尝试了所有东西,但不能让它们全部显示出来。有什么建议吗?
这是我目前的代码:
<xsl:template name="BusLocationLinks">
<xsl:for-each select="BusLocationLinks/BusinessName">
<li class="active">
<xsl:value-of select="BusinessName" />
</li>
</xsl:for-each>
</xsl:template>
我的xml代码看起来类似于:
<BusLocationLinks>
<BusinessName>Star Property</BusinessName>
</BusLocationLinks>
答案 0 :(得分:2)
如果没有看到您的XML,很难诊断出问题。但是,您可能具有以下结构:
<BusLocationLinks>
<BusinessName>name1</BusinessName>
<BusinessName>name2</BusinessName>
<BusinessName>name3</BusinessName>
</BusLocationLinks>
如果是这种情况,那么你应该像这样调整你的XSLT:
<xsl:template name="BusLocationLinks">
<xsl:for-each select="BusinessName">
<li class="active">
<xsl:value-of select="." />
</li>
</xsl:for-each>
</xsl:template>
答案 1 :(得分:1)
xsl:for-each
指令的主体将上下文节点重置为所选节点集中的一个节点(每次评估for-each的主体时都是不同的节点)。
在您的示例中,这意味着在for-each的主体内,当前节点是您选择的BusLocationLinks/BusinessName
元素之一。你的循环为每个元素创建一个list-item元素(检查你的输出,我希望你会在那里看到它们),其中包含上下文节点的BusinessName
子元素的值。上下文节点与表达式BusLocationLinks/BusinessName
匹配,因此您要查找与BusLocationLinks / BusinessName / BusinessName
匹配的节点的值。如果您没有任何与表达式BusLocationLinks / BusinessName / BusinessName
匹配的节点,那么您将获得空的li
元素。
尝试<xsl:value-of select="."/>
。