xsl,xml for-each循环中的换行符

时间:2015-06-22 14:11:59

标签: xml xslt

我有类似下面的xml树:

<block>
   <house>
      <room>
         <chair>number1</chair>
         <chair>number2</chair>
         <chair>number3</chair>
         <chair>number4</chair>
      </room>
      ...
   </house>
   ...
</block>

我试图使用下面的循环返回结果(number1,... number4)。

<xsl:template match="g:block">
    <xsl:for-each select="g:house">
        <xsl:value-of select="g:room" />
    </xsl:for-each>
</xsl:template> 

但是,我把所有内容都放在一行中,我不能以某种方式添加换行符。

number1 number2 number3 number4

是否可以单独返回每个主席标签,然后将/ br添加到输出中以获得以下结果?

number1
number2
number3
number4

我还试图通过为每把椅子添加另一个循环来深入,但是我无法提取每个椅子标签的值。

2 个答案:

答案 0 :(得分:0)

问题解决了。

<xsl:template match="g:block">
    <xsl:for-each select="g:house/g:room/g:chair">
        <xsl:value-of select="text()" />
    </xsl:for-each>
</xsl:template> 

答案 1 :(得分:0)

使用以下内容:

<xsl:value-of select="g:room/string-join(g:chair, '&#10;')"/>

或以下:

<xsl:value-of select="g:room/g:chair" separator="&#10;"/>

或以下(也适用于XSLT 1.0,但由于您没有指定它,我假设您使用XSLT 2.0):

<xsl:for-each select="g:room/g:chair">
   <xsl:value-of select="."/>
   <xsl:text>&#10;</xsl:text>
</xsl:for-each>