Цикл xslt?

Edson

Новичок
Цикл xslt?

Есть такой xml файл -

<?xml version="1.0"?>
<ROWSET>
<ROW>
<ID>1</ID>
<DESCR0>123123</DESCR0>
<DESCR1>23232</DESCR1>
<DESCR2>34543543</DESCR2>
<DESCR3>34534543543</DESCR3>
<DESCR4>345435435</DESCR4>
</ROW>
<ROW>
<ID>1</ID>
<DESCR0>Empty</DESCR0>
<DESCR1>Empty</DESCR1>
<DESCR2>Empty</DESCR2>
<DESCR3>Empty</DESCR3>
<DESCR4>Empty</DESCR4>
</ROW>
</ROWSET>

Как с помощью цикла в xslt его обойти и вывести значения, при этом чтобы одинаково работало для разного количества полей типа DESCR(.*) ?
 

akd

dive now, work later
Команда форума
а может нормально сформировать этот xml?
все елементы DESCR* сделать в виде <DESCR ID="1-n">xxxx</DESCR>
потом двумя циклами все красиво и просто выведется.
 

Edson

Новичок
Автор оригинала: akd
а может нормально сформировать этот xml?
все елементы DESCR* сделать в виде <DESCR ID="1-n">xxxx</DESCR>
потом двумя циклами все красиво и просто выведется.
нет. нельзя...

-~{}~ 15.04.07 21:34:

Неужели в xslt нельзя никак циклом пройтись по всем атрибутам?
 

dark-demon

d(^-^)b
akd, это идиотизм :)

Edson, копай в сторону <apply-templates/>
http://www.citforum.ru/internet/xslt/xslt.shtml#rules
 

Edson

Новичок
dark-demon, спасибо!!!

Вот правильный ответ -

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table border="1">
<xsl:for-each select="//ROW">
<tr>
<xsl:apply-templates select="./*" mode="in_td"/>
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="*" mode="in_td">
<xsl:if test="not(local-name()='ID')">
<td>
<xsl:value-of select="."/>
</td>
</xsl:if>
</xsl:template>

Результат -

<?xml version="1.0" encoding="utf-16"?>
<table border="1">
<tr>
<td>123123</td>
<td>23232</td>
<td>34543543</td>
<td>34534543543</td>
<td>345435435</td>
</tr>
<tr>
<td>Empty</td>
<td>Empty</td>
<td>Empty</td>
<td>Empty</td>
<td>Empty</td>
</tr>
</table>
 

akd

dive now, work later
Команда форума
dark-demon, идиотизм, это то, что он считает правильным решением.. просто ему пока мозга не хватает это понять..
 

Edson

Новичок
Автор оригинала: akd
dark-demon, идиотизм, это то, что он считает правильным решением.. просто ему пока мозга не хватает это понять..
в смысле пока считает? это правильное решение. строгость структуры и меняющееся количество узлов в xml файле было принципиальными для этой задачи.
 

Alexandre

PHPПенсионер
при этом чтобы одинаково работало для разного количества полей типа DESCR
хотелось бы уточнить фразу разное колво в каждом цикле, или в новом XML т.е. допустимо чтоб
Код:
<ROW>
<DESCR0>123123</DESCR0>
<DESCR1>23232</DESCR1>
<DESCR2>34543543</DESCR2>
<DESCR3>34534543543</DESCR3>
<DESCR4>345435435</DESCR4>
</ROW>
в первой строчке а во второй
<ROW>
<DESCR0>123123</DESCR0>
<DESCR1>23232</DESCR1>
</ROW>
т.е. мы ищем максималоное кол-во полей, а потом достраиваем таблицу с пустыми клетками???
 
Сверху