File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <volume name="Old Testament"> <book name="Java"> <chapter location="Java1.xml" /> <chapter location="Java2.xml" /> <chapter location="Java3.xml" /> <chapter location="Java4.xml" /> </book> </volume> File: Transform.xslt <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:template match="volume"> <xsl:copy> <xsl:attribute name="name"><xsl:value-of select="@name" /> </xsl:attribute> <xsl:apply-templates select="book" /> </xsl:copy> </xsl:template> <xsl:template match="book"> <xsl:copy> <xsl:attribute name="name"><xsl:value-of select="@name" /> </xsl:attribute> <xsl:apply-templates select="chapter" /> </xsl:copy> </xsl:template> <xsl:template match="chapter"> <xsl:copy-of select="document(@location)" /> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <volume name="Old Testament"> <book name="Java"/> </volume>