2014-09-15 4 views
0

У меня проблема с XSLT pasing с 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 не идет линия за линией по списку.

Вместо того, чтобы я тоже пытался, но потом я получил только первого автора.

Мне также понадобится «,» после каждого тега автора.

+0

Мой файл XML имеет много .. теги и я хочу следующий вывод для каждого : первой публикации: author1, author2 второе издание: author1, author2, author3 – user4042171

ответ

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

будет делать необходимое. Также при добавлении «,» лучше использовать тег <xsl:text>.

+0

Почему лучше использовать тег ''? – Kilazur

+0

Согласно моему пониманию, Отображает вывод в двух разных строках. –

+0

@ Kilazur Потому что тогда вам не нужно беспокоиться об отступлении от вашей таблицы стилей. –

1

Вместо того чтобы делать это

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

Вы должны сделать это

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

Это потому, что есть только один «авторов» узел, но много «автор» узлов, и это узел «автор», который вы хотите перебрать.

На самом деле вы могли бы объединить две петли в один, например, так:

<xsl:for-each select="publication/authors/author"> 
Смежные вопросы