XSLT:for-each循环仅提供第一个alinea

时间:2019-01-06 11:36:36

标签: html xml xslt

我需要使用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>

希望你能帮助我!

1 个答案:

答案 0 :(得分:0)

您尚未在XML中显示troonrede元素,但假设它是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中,当前节点就是alinea,所以进行.会得到当前节点的值。 (执行<xsl:value-of select="alinea"/>会查找同一节点的子节点,该子节点将不存在。)