これを試すことができます:
XSL:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<data>
<xsl:for-each select="parent">
<!--variable to store @id-->
<xsl:variable name="id" select="child/@id"/>
<!--creating a test comment node()-->
<xsl:comment>Child having id: <xsl:value-of select="child/@id"/></xsl:comment>
<xsl:element name="person">
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
<xsl:element name="name">
<xsl:value-of select="./child/text()"/>
</xsl:element>
</xsl:element>
<xsl:element name="relation">
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
</xsl:attribute>
<xsl:element name="filename">
<xsl:value-of select="./image/@name"/>
</xsl:element>
</xsl:element>
</xsl:for-each>
</data>
</xsl:template>
</xsl:stylesheet>
入力XML(あなたのものですが、整形式にするために少し変更されています)
<?xml version="1.0"?>
<parent>
<child id="123456">Child Name</child>
<image name="child.jpg"/>
</parent>
そして結果
<?xml version='1.0' ?>
<data>
<!--Child having id: 123456-->
<person id="123456">
<name>Child Name</name>
</person>
<relation id="123456">
<filename>child.jpg</filename>
</relation>
</data>