繁体   English   中英

如何在xsl中计算每个

[英]how to count using for each in xsl

请参阅下面的示例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 Outtyp下是否存在Outtypform的依据。 例如-上面的示例xml具有3个Outtyp节点...,但是只有两个包含,因此仅应显示两个具有详细信息的节点,并且每个Outtyp之后都需要额外的空间。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM