0

我对 xslt 很陌生,并且尝试了各种方法来检查节点是否有子节点。我有以下内容:

<xsl:if test="child::list">

上面的部分有效,但问题是我尝试when在这种方法中使用otherwise,但它不起作用。看起来像这样:

<xsl:when test="child::list">

我猜这是错误的,因为它不起作用。

代码如下:

<xsl:for-each select="td">
<td>
    <xsl:when test="child::list">
        <table cellpadding='0' cellspacing='0'>
            <thead>
                <tr>
                    <xsl:for-each select="list/item/table/thead/tr/th">
                        <th><xsl:value-of select="self::node()[text()]"/></th>
                    </xsl:for-each>
                </tr>
                <xsl:for-each select="list/item/table/tbody/tr">
                    <tr>
                        <xsl:for-each select="td">
                            <td><xsl:value-of select="self::node()[text()]"/></td>
                        </xsl:for-each>
                    </tr>
                </xsl:for-each>
            </thead>
        </table>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="self::node()[text()]"/>
    </xsl:otherwise>
</td>
</xsl:for-each>

任何帮助将不胜感激...

4

2 回答 2

3

xsl:when并且xsl:otherwise必须在xsl:choose

<xsl:choose>
  <xsl:when test="...">
    <!-- Do one thing -->
  </xsl:when>
  <xsl:otherwise>
    <!-- Do something else -->
  </xsl:otherwise>
 </xsl:choose>

但是您应该在这里做的是正确使用模板:

  <xsl:template match="something">
    ....
    <xsl:apply-templates select="td" mode="list" />
    ....
  </xsl:template>

  <xsl:template match="td" mode="list">
    <xsl:value-of select="."/>
  </xsl:template>

  <xsl:template match="td[list]" mode="list">
    <table cellpadding='0' cellspacing='0'>
      <thead>
        <xsl:apply-templates select='list/item/table/thead/tr' />
        <xsl:apply-templates select="list/item/table/tbody/tr" />
      </thead>
    </table>
  </xsl:template>

  <xsl:template match="th | td">
    <xsl:copy>
      <xsl:value-of select="." />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="tr">
    <xsl:copy>
      <xsl:apply-templates select="th | td" />
    </xsl:copy>
  </xsl:template>
于 2013-04-25T10:07:35.263 回答
0

您创建的 XSLT 不好。xsl:when 是 XSLT 中缺少的 xsl:choose 的子元素。请先更正它,然后让我们知道您的结果。

于 2013-04-25T10:07:19.107 回答