Новое в xslt так легко, я пытаюсь преобразовать xml в html через xslt, и я не могу понять, что это правильно.конвертирование xml в html-таблицу не может быть правильно
Заголовки и строки не должны быть жестко закодированы и должны быть как можно более универсальными.
Wanted результат:
Xml Используется, что я не имею никакого контроля над
<?xml version="1.0" encoding="utf-8"?>
<Generated>
<Employees>
<Employee name="Joe Bloggs">
<Sales>
<Sale key="Sale-Id" value="333" />
<Sale key="Sale-Field1" value="a" />
<Sale key="Sale-Field2" value="b" />
</Sales>
</Employee>
<Employee name="Mark Bloggs">
<Sales>
<Sale key="Sale-Id" value="334" />
<Sale key="Sale-Field1" value="c" />
<Sale key="Sale-Field2" value="d" />
</Sales>
</Employee>
</Employees>
</Generated>
XSLT Моя попытка
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
<!-- main body -->
<xsl:template match="/">
<html>
<body>
<h3>Employees</h3>
<table border="1">
<tr bgcolor="blue">
<!--Header only so select first row to get headers-->
<xsl:for-each select="(Generated/Employees/Employee)[1]/Sales/Sale">
<th>
<xsl:value-of select="@key"/>
</th>
</xsl:for-each>
</tr>
<!--Get all the other rows-->
<xsl:for-each select="(Generated/Employees/Employee)/Sales/Sale">
<tr>
<td>
<xsl:value-of select="@value"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Мой Неправильный результат
Любое предложение, как это исправить и получить мой желаемого результата, как на картинке выше
Большое спасибо
, wow, который работал 99%. Что я пропустил, так как я могу получить имя. Мне нужен еще один вложенный foreach? И как? – developer9969
@ developer9969 Нет, вам не нужен дополнительный 'for-each' - см. Мой ответ для деталей. –