请参阅下面的示例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> </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
。未经测试,因为提供的代码不完整。