【发布时间】:2015-12-16 09:49:36
【问题描述】:
请看下面,示例 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,我不想要额外的空间行。需要更改“每个”以便它应该计数Outtyp 仅基于 Outtypform 存在于 Outtyp 下。例如 - 上面的示例 xml 有 3 个 Outtyp 节点......但只有两个包含 所以每个 Outtyp 之后只应该显示两个带有详细信息的节点和额外的空间。
【问题讨论】:
-
你能显示预期的输出吗?
-
"应仅在 Outtyp 下存在 Outtypform 时才计算 Outtyp" >> 虽然
xsl:number可以做到这一点,但使用起来更容易,更可取谓词。事实上,每次你发现自己写了一个带有节点测试的xsl:if,你应该非常强烈地考虑将它放在选择谓词中。
标签: javascript html xml xslt foreach