Я бы сделал это так:
<xsl:template match="Aus/au">
<table>
<tbody>
<xsl:apply-templates select="ele[1]/*" mode="row"/>
</tbody>
</table>
</xsl:template>
<xsl:template match="ele/*" mode="row">
<tr>
<xsl:variable name="pos" select="position()"/>
<xsl:apply-templates select="../../ele/*[$pos]"/>
</tr>
</xsl:template>
<xsl:template match="ele/*">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
https://xsltfiddle.liberty-development.net/gVhEaiK
Образец, который вы указали в своем комментарии, похоже, имеет более сложные входные данные, поскольку он кажется, что есть вложенные элементы, также кажется, что есть много элементов без данных; однако шаблоны могут быть адаптированы, например, для
<xsl:template match="authorDetails/authors">
<table>
<tbody>
<xsl:apply-templates
select="element[1]/descendant::*[not(*)]" mode="row"/>
</tbody>
</table>
</xsl:template>
<xsl:template match="element//*" mode="row">
<tr>
<th>
<xsl:value-of select="local-name()"/>
</th>
<xsl:variable name="pos" select="position()"/>
<xsl:apply-templates select="ancestor::authors/element/descendant::*[not(*)][$pos]"/>
</tr>
</xsl:template>
<xsl:template match="element//*">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
Пример: https://xsltfiddle.liberty-development.net/gVhEaiK/5