请参阅下面的示例XML

<OuttypList>
   <Outtyp>
         <A>
            <P>0</P>
            <T>NoShare</T>
         </A>
   </Outtyp>
    <Outtyp>
        <Outtypform>Bank</Outtypform>
        <A>
            <A>
                <P>1000</P>
                <T>Share</T>
            </A>
            <S>100</S>
        </A>
        <B>
            <C>3015</C>
            <D>James</D>
        </B>
    </Outtyp>
    <Outtyp>
    <Outtypform>Bank</Outtypform>
         <A>
            <P>10</P>
            <T>Share</T>
         </A>
   </Outtyp></OuttypList>


我正在显示Outtyp的详细信息,并且在显示每个Outtyp之后,我要插入一个空格以使数据看起来不错。

<xsl:for-each select="OuttypList/Outtyp">
<xsl:if test="normalize-space(Outtypform)">
--displaying details--
</xsl:if>
<xsl:choose>
        <xsl:when test="position() != last()">
              <tr>
                    <td colspan="2">
                          <span><text>&#160;</text></span>
                    </td>
              </tr>
        </xsl:when>
        <xsl:otherwise></xsl:otherwise>
</xsl:choose>




问题:现在使用此代码,它最初会创建我不想要的额外空间,所以如果Outtyp中不存在Outtypform,我就不需要额外的空格行。需要更改“ for each”,以便仅在Outtyp下是否存在Outtypform的依据。例如-上面的示例xml具有3个Outtyp节点...。但是只有两个包含
因此,每个Outtyp之后仅应显示两个包含详细信息的节点和额外的空间。

最佳答案

xsl:choose块放置在xsl:if块内,或者-最好-将选择更改为:

<xsl:for-each select="OuttypList/Outtyp[normalize-space(Outtypform)]">


然后,您根本不需要xsl:if

未经测试,因为提供的代码不完整。

07-28 01:50