次のような XML 構造があります。
<Root>
<Node Name="File System">
<Node Name="C:\Windows\System32\drivers\etc\hosts">
<Table>
<Row>
<Column Name="Name" Value="localhost" />
<Column Name="IP" Value="127.0.0.1" />
</Row>
<Row>
.....
</Node>
</Node>
</Root>
ノードとテーブルをトラバースする xslt コードがありますが、列名をヘッダーとして取得したいときに行き詰まります。
これが作業コードです(列ヘッダーを取得する以外:
<xsl:template match="Root">
<ul>
<xsl:apply-templates select="Node" />
</ul>
</xsl:template>
<xsl:template match="Node">
<li>
<xsl:value-of select="@Name" />
<xsl:if test="Node">
<ul>
<xsl:apply-templates select="Node" />
</ul>
</xsl:if>
<xsl:if test="Attributes">
<xsl:apply-templates select="Attributes" />
</xsl:if>
<xsl:if test="Table">
<xsl:apply-templates select="Table" />
</xsl:if>
</li>
</xsl:template>
<xsl:template match="Attributes">
<ul>
<xsl:apply-templates select="Attribute" />
</ul>
</xsl:template>
<xsl:template match="Attribute">
<li>
<b><xsl:value-of select="@Name" />:</b> <xsl:value-of select="@Value" />
</li>
</xsl:template>
<xsl:template match="Table">
<table border="1">
<tbody>
<xsl:apply-templates select="Row" />
</tbody>
</table>
</xsl:template>
<xsl:template match="Row">
<tr>
<xsl:apply-templates select="Column" />
</tr>
</xsl:template>
<xsl:template match="Column">
<td>
<xsl:value-of select="@Value" />
</td>
</xsl:template>