首页 > 解决方案 > XSLT:for-each 循环只给出第一个 alinea

问题描述

我需要使用 XSLT 将 xml 文件转换为 html 文件。现在我已经尝试了一切,但似乎没有用。我想在每个 alinea 之后创建一条白线。

XML 代码:

<alinea>
Willen wij daadkrachtig het economisch herstel vorm kunnen geven, dan 
is stabiel bestuur gewenst. Intensief wordt sinds de
<organisatie> Tweede Kamer</organisatie>
-verkiezingen van
<datum>9 juni</datum>
gewerkt aan de totstandkoming van een nieuw kabinet. Lopende de 
kabinetsformatie past het huidige kabinet terughoudendheid bij het doen 
van beleidsvoorstellen voor het komende jaar.
</alinea>

然后是很多这样的标签。

XSLT 代码:

<xsl:template match="troonrede">
<xsl:for-each select="troonrede/alinea">
    <xsl:value-of select="troonrede/alinea"/><br/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:template>

我希望你能帮帮我!

标签: htmlxmlxslt

解决方案


您尚未troonrede在 XML 中显示该元素,但假设它是alinea模板的父级,则应如下所示...

<xsl:template match="troonrede">
  <xsl:for-each select="alinea">
    <xsl:value-of select="."/>
    <br/>
  </xsl:for-each>
</xsl:template>

这是因为在模板匹配troonrede中,您将定位在该元素上,因此您xsl:for-each可以相对于该当前节点。并且类似地在 中xsl:for-each,当前节点是 then alinea,所以这样做.会获取当前节点的值。(Doing<xsl:value-of select="alinea"/>会寻找同一节点的子节点,而该子节点不存在。)


推荐阅读