смотрите ниже, пример XMLкак считать, используя для каждого в XSL
<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>
Проблема: теперь с этим кодом, это создает дополнительное пространство, первоначально который я не хочу, так что я не хочу дополнительное пространство линии, если нет Outtypform присутствует в Outtyp..need изменить " для каждого ", чтобы он рассчитывал Outtyp только на основе, если Outtypform присутствует в Outtyp. Например, над образцом xml есть 3 Outtyp node .... Но только два содержат , поэтому только два узла с деталями должны отображаться и дополнительное пространство после каждого Outtyp.
Можете ли вы показать ожидаемый результат? –
_ "следует считать Outtyp только на основе, если Outtypform присутствует в Outtyp" _ >>, в то время как это возможно с помощью 'xsl: number', гораздо проще и предпочтительнее использовать предикат. Фактически, каждый раз, когда вы обнаруживаете, что вы пишете «xsl: if» с тестом на узлы, вы должны очень сильно поместить его в предикат выбора. – Abel