我有类似下面的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
我还试图通过为每把椅子添加另一个循环来深入,但是我无法提取每个椅子标签的值。
答案 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, ' ')"/>
或以下:
<xsl:value-of select="g:room/g:chair" separator=" "/>
或以下(也适用于XSLT 1.0,但由于您没有指定它,我假设您使用XSLT 2.0):
<xsl:for-each select="g:room/g:chair">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:for-each>