So you are looking to analyze the XSLT code and to output a table with the element mapping? Is that solely based on the XSLT code or does the input XML also have to be processed? I guess it is rather easy with such a simple stylesheet to process and read out the match
patterns and the immediate child element name if literal result elements are used but of course in general if there is a more complicated stylesheet structure with computed elements, called templates creating the mapping will not be that easy.
For a direct mapping, like your sample, it is easy to process XSLT with XSLT to analyze it, for instance, the following XSLT 3
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:param name="sep" as="xs:string">,</xsl:param>
<xsl:mode on-no-match="shallow-skip"/>
<xsl:output method="text" item-separator=" "/>
<xsl:template match="/">
<xsl:sequence select="'Input XML' || $sep || 'Result XML'"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="xsl:template[@match]">
<xsl:sequence
select="tokenize(@match, '\s*\|\s*') !
(. || $sep || node-name(current()/*[1]))"/>
</xsl:template>
</xsl:stylesheet>
when run with Saxon 9.9 HE against your XSLT code sample, outputs
Input XML,Result XML
Section1,sect1
Section1Heading,title
Section2Heading,title
Section2,sect2
Para,para
With XSLT 2 you can the code of https://xsltfiddle.liberty-development.net/bFWR5DS i.e.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="2.0">
<xsl:param name="field-sep" as="xs:string">,</xsl:param>
<xsl:param name="line-sep" as="xs:string" select="' '"/>
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:value-of select="concat('Input XML', $field-sep, 'Result XML')"/>
<xsl:value-of select="$line-sep"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="xsl:template[@match]">
<xsl:value-of
select="for $pattern in tokenize(@match, '\s*\|\s*')
return concat($pattern, $field-sep, node-name(current()/*[1]))"
separator="{$line-sep}"/>
<xsl:value-of select="$line-sep"/>
</xsl:template>
</xsl:stylesheet>