Да, это возможно и относительно легко сделать.
Ниже приведен пример XSLT, который создает HTML-документ со строкой таблицы для каждого элемента <multRef>
.
Каждый дочерний элемент <multiRef>
сначала отображается как заголовок таблицы, используя имя элемента для столбца заголовка, а затем каждый <multiRef>
отображается как строки со столбцами для каждого из дочерних элементов:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head></head>
<body>
<table border="1">
<xsl:apply-templates select="*/*/multiRef[1]" mode="header"/>
<xsl:apply-templates select="*/*/multiRef" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="multiRef" mode="header">
<thead>
<tr>
<xsl:apply-templates mode="header"/>
</tr>
</thead>
</xsl:template>
<xsl:template match="multiRef/*" mode="header">
<th>
<xsl:value-of select="local-name()"/>
</th>
</xsl:template>
<xsl:template match="multiRef">
<tr>
<xsl:apply-templates/>
</tr>
</xsl:template>
<xsl:template match="multiRef/*">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
</xsl:stylesheet>
При применении к предоставленному образцу XML создается следующий HTML-код:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
</head>
<body>
<table border="1">
<thead>
<tr>
<th>description</th>
<th>id</th>
<th>issueSecurityScheme</th>
<th>key</th>
<th>lead</th>
<th>name</th>
<th>notificationScheme</th>
<th>permissionScheme</th>
<th>projectUrl</th>
<th>url</th>
</tr>
</thead>
<tr>
<td>Mobile Web Project POC
</td>
<td>10034</td>
<td></td>
<td>XLIPOC</td>
<td>benm</td>
<td>Redacted Project</td>
<td></td>
<td></td>
<td></td>
<td>https://redacted.com/browse/REDACTED</td>
</tr>
<tr>
<td></td>
<td>10017</td>
<td></td>
<td>GIC</td>
<td>gregm</td>
<td>REDACTED</td>
<td></td>
<td></td>
<td></td>
<td>https://redacted.com/browse/REDACTED</td>
</tr>
</table>
</body>
</html>