xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

создать таблицу из имеющегося файла xml


Автор Сообщение
Вячеслав
Новичок

Зарегистрирован: 23.06.2009
Сообщения: 2

[13861] Вт Июн 23, 2009 19:47
создать таблицу из имеющегося файла xml
Здравствуйте! У меня есть такая проблема. Есть такой xml-файл

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE reportGoods SYSTEM "report.dtd">
<?xml-stylesheet type="text/xsl" href="report.xsl"?>

<reportGoods>
<!--generatedCount - вироблена кількість-->
<count>
<name initialValue="50" result="57">Сукня</name>
<name initialValue="50" result="51">Юбка</name>
<name initialValue="50" result="56">Светер</name>
<name initialValue="50" result="69">Сорочка</name>
<name initialValue="50" result="0">Брюки</name>
</count>

<!--Прибуток-->
<profit initialValue="8650" result="9172">Прибуток</profit>

<!--Суммарное использование-->
<totalUseGoods>
<totalUse initialValue="1359" difference="211">Тканина</totalUse>
<totalUse initialValue="165" difference="105">Молнія</totalUse>
<totalUse initialValue="459" difference="1">Гудзики пластикові</totalUse>
<totalUse initialValue="153" difference="2">Гудзики металеві</totalUse>
<totalUse initialValue="1318" difference="2">Нитки білі</totalUse>
<totalUse initialValue="998" difference="2">Нитки кольорові</totalUse>
<totalUse initialValue="171" difference="39">Підкладка</totalUse>
<totalUse initialValue="204" difference="56">Клійка стрічка</totalUse>
<totalUse initialValue="1456" difference="56">Нитки бавовні</totalUse>

<generatedCount initialValue="57" difference="0">Сукня</generatedCount>
<generatedCount initialValue="51" difference="0">Юбка</generatedCount>
<generatedCount initialValue="56" difference="0">Светер</generatedCount>
<generatedCount initialValue="69" difference="0">Сорочка</generatedCount>
<generatedCount initialValue="0" difference="0">Брюки</generatedCount>
</totalUseGoods>
</reportGoods>

Необходимо сделать 3 таблицы в HTML (count, profit, totalUseGoods) с помощью XSLT/

Я сделал файл report.xsl следующего содержания:

<?xml version="1.0" encoding="Windows-1251" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Отчет</TITLE>
</HEAD>
<BODY>
<H1>Отчет</H1>
<BR />
<H1>Вироблена кількість</H1>
<BR />
<table border="1">
<tr bgcolor="#CCCCCC">
<td align="center">
<strong>Имя</strong>
</td>
<td align="center">
<strong>Исходное значение</strong>
</td>
<td align="center">
<strong>Результат</strong>
</td>
</tr>
<xsl:for-each select="reportGoods/count">
<tr bgcolor="#F5F5F5" align="center">
<td>
<xsl:value-of select="name" />
</td>
<td>
<xsl:value-of select="name/@initialValue" />
</td>
<td>
<xsl:value-of select="name/@result" />
</td>
</tr>
</xsl:for-each>
</table>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

Не пойму как вывести все значения для name (здесь реализация только одной таблицы count)
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13862] Вт Июн 23, 2009 21:36

http://xmlhack.ru/forum/xml/faq.php?mode=bbcode#5
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
Вячеслав
Новичок

Зарегистрирован: 23.06.2009
Сообщения: 2

[13865] Ср Июн 24, 2009 10:39

извинитие. привожу код правильно

Код:

<?xml version="1.0" encoding="Windows-1251"?>

<!DOCTYPE reportGoods SYSTEM "report.dtd">
<?xml-stylesheet type="text/xsl" href="report.xsl"?>

<reportGoods>
<!--generatedCount - вироблена кількість-->
<count>
<name initialValue="50" result="57">Сукня</name>
<name initialValue="50" result="51">Юбка</name>
<name initialValue="50" result="56">Светер</name>
<name initialValue="50" result="69">Сорочка</name>
<name initialValue="50" result="0">Брюки</name>
</count>

<!--Прибуток-->
<profit initialValue="8650" result="9172">Прибуток</profit>

<!--Суммарное использование-->
<totalUseGoods>
<totalUse initialValue="1359" difference="211">Тканина</totalUse>
<totalUse initialValue="165" difference="105">Молнія</totalUse>
<totalUse initialValue="459" difference="1">Гудзики пластикові</totalUse>
<totalUse initialValue="153" difference="2">Гудзики металеві</totalUse>
<totalUse initialValue="1318" difference="2">Нитки білі</totalUse>
<totalUse initialValue="998" difference="2">Нитки кольорові</totalUse>
<totalUse initialValue="171" difference="39">Підкладка</totalUse>
<totalUse initialValue="204" difference="56">Клійка стрічка</totalUse>
<totalUse initialValue="1456" difference="56">Нитки бавовні</totalUse>

<generatedCount initialValue="57" difference="0">Сукня</generatedCount>
<generatedCount initialValue="51" difference="0">Юбка</generatedCount>
<generatedCount initialValue="56" difference="0">Светер</generatedCount>
<generatedCount initialValue="69" difference="0">Сорочка</generatedCount>
<generatedCount initialValue="0" difference="0">Брюки</generatedCount>
</totalUseGoods>
</reportGoods>



Необходимо сделать 3 таблицы в HTML (count, profit, totalUseGoods) с помощью XSLT/

Я сделал файл report.xsl следующего содержания:

Код:


<?xml version="1.0" encoding="Windows-1251" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Отчет</TITLE>
</HEAD>
<BODY>
<H1>Отчет</H1>
<BR />
<H1>Вироблена кількість</H1>
<BR />
<table border="1">
<tr bgcolor="#CCCCCC">
<td align="center">
<strong>Имя</strong>
</td>
<td align="center">
<strong>Исходное значение</strong>
</td>
<td align="center">
<strong>Результат</strong>
</td>
</tr>
<xsl:for-each select="reportGoods/count">
<tr bgcolor="#F5F5F5" align="center">
<td>
<xsl:value-of select="name" />
</td>
<td>
<xsl:value-of select="name/@initialValue" />
</td>
<td>
<xsl:value-of select="name/@result" />
</td>
</tr>
</xsl:for-each>
</table>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>



Не пойму как вывести все значения для name (здесь реализация только одной таблицы count)
Fireball
Наставник

Зарегистрирован: 26.02.2008
Сообщения: 282

[13871] Чт Июн 25, 2009 01:50

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

Какой нужен результат и что не совпадает с ожидаемым результатом?