0

我创建了一个名为“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>
4

2 回答 2

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>
于 2012-09-21T01:25:20.877 回答
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="."/>

于 2012-09-21T00:05:51.037 回答