xslt - 每个 - 逐行

时间:2014-09-15 11:58:23

标签: xslt foreach

我遇到了使用for-each的XSLT问题。

<publication>
<publicationId>1234</publicationId>
<title>some title</title>
<type>some type</type>
<authors>
<author>author 1</author>
<author>author 2</author>
</authors>
<journal>true</journal>
</publication>

<xsl:template match="/">
<xsl:for-each select=publication">
  <xsl:for-each select="authors">
    <xsl:value-of select="."/>,
  </xsl:for-each>
</xsl:for-each>

for-each-loop不会逐行排在列表中。

而不是我也试过,但后来我才得到第一作者。

在每个作者标签之后我也需要一个“,”。

2 个答案:

答案 0 :(得分:1)

而不是这样做

<xsl:for-each select="authors">

你应该这样做

<xsl:for-each select="authors/author">

这是因为只有一个“作者”节点,但有很多“作者”节点,而且它是你想要迭代的“作者”节点。

事实上,您可以将两个循环合并为一个,如下所示:

<xsl:for-each select="publication/authors/author">

答案 1 :(得分:1)

<xsl:for-each select="publication/authors/author"> 

将做必要的事情。另外,当添加“,”时,最好使用<xsl:text>标记。