xslt: форматирование в 2 столбца
От: kilerbee  
Дата: 17.10.05 12:45
Оценка:
Привет всем.

Есть такая проблема. Нужно XML такого вида

<items> 
<item>1</item> 
<item>2</item> 
<item>3</item> 
<item>4</item> 
<item>5</item> 
<item>6</item> 
</items>


средствами XSLT привести к следующему результату:

<table> 
<tr><td>1</td><td>2</td></tr> 
<tr><td>3</td><td>4</td></tr> 
<tr><td>5</td><td>6</td></tr> 
</table>


то есть, разбить данные на 2 столбца.

Посоветуйте что-нибудь, пожалуйста...
Re: xslt: форматирование в 2 столбца
От: alex_at_net Великобритания https://alexatnet.com
Дата: 17.10.05 13:02
Оценка:
Примерно так:

<table>
<tr>
<xsl:for-each select="/items/item">
<td><xsl:value-of select="."/></td>
<xsl:if test="(position() mod 3) = 0">
<xsl:value-of disable-output-escaping="yes" select="string('</tr><tr>')"/>
</xsl:if>
</xsl:for-each>
</tr>
</table>


Здравствуйте, kilerbee, Вы писали:

K>Привет всем.


K>Есть такая проблема. Нужно XML такого вида


K>
<items> 
K><item>1</item> 
K><item>2</item> 
K><item>3</item> 
K><item>4</item> 
K><item>5</item> 
K><item>6</item> 
K></items>


K>средствами XSLT привести к следующему результату:


K>
<table> 
K><tr><td>1</td><td>2</td></tr> 
K><tr><td>3</td><td>4</td></tr> 
K><tr><td>5</td><td>6</td></tr> 
K></table>


K>то есть, разбить данные на 2 столбца.


K>Посоветуйте что-нибудь, пожалуйста...
---------------------------
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Александр
Re[2]: xslt: форматирование в 2 столбца
От: kilerbee  
Дата: 17.10.05 13:06
Оценка:
Здравствуйте, alex_at_net, Вы писали:

Спасибо, я как раз нащупал, как это сделать, а Вы дополнили недостающее

__>Примерно так:


__>
__><table>
__><tr>
__><xsl:for-each select="/items/item">
__><td><xsl:value-of select="."/></td>
__><xsl:if test="(position() mod 3) = 0">
__><xsl:value-of disable-output-escaping="yes" select="string('</tr><tr>')"/>
__></xsl:if>
__></xsl:for-each>
__></tr>
__></table>
__>


...
Re[2]: xslt: форматирование в 2 столбца
От: kilerbee  
Дата: 17.10.05 13:18
Оценка:
Здравствуйте, alex_at_net, Вы писали:

Маленькое исправление

<xsl:if test="(position()-1 mod 2) = 0">


__>Примерно так:


__>
__><table>
__><tr>
__><xsl:for-each select="/items/item">
__><td><xsl:value-of select="."/></td>
__><xsl:if test="(position() mod 3) = 0">
__><xsl:value-of disable-output-escaping="yes" select="string('</tr><tr>')"/>
__></xsl:if>
__></xsl:for-each>
__></tr>
__></table>
__>
Re[3]: xslt: форматирование в 2 столбца
От: Сэма Россия  
Дата: 17.10.05 14:09
Оценка:
Здравствуйте, kilerbee, Вы писали:

K>Здравствуйте, alex_at_net, Вы писали:


K>Маленькое исправление


K>
<xsl:if test="(position()-1 mod 2) = 0">


__>>Примерно так:


__>>
__>><table>
__>><tr>
__>><xsl:for-each select="/items/item">
__>><td><xsl:value-of select="."/></td>
__>><xsl:if test="(position() mod 3) = 0">
__>><xsl:value-of disable-output-escaping="yes" select="string('</tr><tr>')"/>
__>></xsl:if>
__>></xsl:for-each>
__>></tr>
__>></table>
__>>


А если элементов нечетное количество? — тогда таблица невалидная получится
Извините что вмешиваюсь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: xslt: форматирование в 2 столбца
От: Lloyd Россия  
Дата: 17.10.05 17:07
Оценка:
Здравствуйте, kilerbee, Вы писали:

K>то есть, разбить данные на 2 столбца.


K>Посоветуйте что-нибудь, пожалуйста...


<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html"/>
    <xsl:template match="items">
        <table border="1"><xsl:apply-templates /></table>
    </xsl:template>
    <xsl:template match="item" />
    <xsl:template match="item[position() mod 2 = 1]">
        <tr><td><xsl:value-of select="." /></td><td><xsl:value-of select="following-sibling::item[1]" /></td></tr> 
    </xsl:template>
</xsl:stylesheet>
... << RSDN@Home 1.1.4 stable rev. 510>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.