XSL遍历问题(服务器错误:)

时间:2009-05-14 13:00:55

标签: xml xslt

我有,我相信,这是一个有趣的情况。 我有一个车库XML并正在将它(使用XSL)转换为HTML。

CAR XML:

<car>
   <licensePlate>Car001</licensePlate>
   <feature>
      <color>Blue</color>
      <fuel>Unleaded</fuel>
   <feature>
</car>

我只想打印<color>&amp; <fuel>但希望在HTML链接中将<licensePlate>设置为href。

CAR XSL:

<xsl:template match="car">
   <tr>
      <xsl:apply-templates select="licensePlate"/>
      <xsl:apply-templates select="feature"/>
   </tr>
</xsl:template>

<xsl:template match="feature">
   <td>
      <a href="{preceding-sibling::licensePlate/text()}>
          <xsl:apply-templates select="color"/>
      </a>
   </td>
   <td><xsl:apply-templates select="fuel"/></td>
</xsl:template>

这使我能够实现将标记设置为href值的目标。

但是出现问题... licensePlate的所有值都会打印到屏幕上。

有人可以推荐如何防止它打印到屏幕上吗?

我试过评论<xsl:apply-templates select="licensePlate"/>,但我认为这会影响preceeding-sibling::语句,因为我收到错误

尝试应用CSS display:none时,我也收到了此错误。

谢谢你的时间和耐心, 卢卡斯

3 个答案:

答案 0 :(得分:1)

你应该评论<xsl:apply-templates select="licensePlate"/>。 如果你正确地评论它,它可能不是错误的原因。

此外: <a href="{preceding-sibling::licensePlate/text()}>&lt; - yuikes!

<a href="{../licensePlate}>

答案 1 :(得分:0)

<xsl:template match="car">
  <tr>
    <xsl:apply-templates select="feature" />
  </tr>
</xsl:template>

<xsl:template match="feature">
   <td>
      <a href="{../licensePlate}">
        <xsl:value-of select="color" />
      </a>
   </td>
   <td>
      <xsl:value-of select="fuel" />
   </td>
</xsl:template>

会产生:

<tr>
  <td>
    <a href="Car001">Blue</a>
  </td>
  <td>Unleaded</td>
</tr>

答案 2 :(得分:0)

这是一种方法。我假设你已经完成了颜色和燃料的模板。

<xsl:template match="car">
    <tr>
        <xsl:apply-templates select="feature"/>
    </tr>
</xsl:template>

<xsl:template match="feature">
    <td>
        <a>
            <xsl:param name="href">
                <xsl:value-of select="../licensePlate"/>
            </xsl:param>
            <xsl:apply-templates select="color"/>
        </a>
    </td>
    <td>
        <xsl:apply-templates select="fuel"/>
    </td>
</xsl:template>