Я пытаюсь преобразовать некоторый XML с помощью XSL, чтобы вывод выглядел лучше и был более читабельным для других пользователей. У меня есть несколько XML по следующим направлениям:
<G>
<OE>
<example1>Sample 1</example1>
<example2>Sample 2</example2>
<var name="name1">
<integer>1</integer>
</var>
</OE>
</G>
Я хочу получить все подробности и отобразить их в виде таблицы, поэтому я использую следующий код XSL:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="/">
<html>
<body>
<h2>Heading</h2>
<table border="1">
<tr bgcolor="#3399FF">
<th>Example 1</th>
<th>Example 2</th>
<th>Var name</th>
<th>Int</th>
</tr>
<xsl:for-each select="G/OE">
<xsl:for-each select="var">
<tr>
<td>
<xsl:value-of select="Example 1" />
</td>
<td>
<xsl:value-of select="Example 2" />
</td>
<td>
<xsl:value-of select="@name" />
</td>
<td>
<xsl:value-of select="integer" />
</td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Я знаю, что следующий XSL не будет работать должным образом. Я хочу вывод:
Образец 1, Образец 2, name1, 1 - в табличном формате.
Моя проблема в том, что я не знаю, как это сделать. В приведенном выше коде XSL он будет получать только var и integer. Если я использую только верхний <xsl:for-each>
, то получаются только первые два.
Я пытался переместить 2-е <xsl:for-each>
после первого, который был выбран, поэтому между:
<td><xsl:value-of select="Example 2"/></td>
и
<td><xsl:value-of select="@name"/></td>
Я получаю ошибку. Есть ли способ решить эту проблему?
Спасибо за помощь.