Hvis både master.xsl og sub.xsl ser ud som du beskriver ovenfor, så er dit matchkriterium jo "/" (i kraft af <xsl:template match="/">). Det betyder at når du importerer sub.xsl, så vil den "overskrive" templaten i master.xsl.
Du kunne prøve at navngive dine templates med wordinformationerne i stedet og så kalde dem fra hoveddokumentet.
master.xsl:
---------------
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"xmlns:w="
http://schemas.microsoft.com/office/word/2003/wordml"><xsl:output method="xml" indent="yes" />
<xsl:template name="masterdoc">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Word.Document"</xsl:text>
</xsl:processing-instruction>
</xsl:template>
</xsl:stylesheet>
sub.xsl:
-----------
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"xmlns:w="
http://schemas.microsoft.com/office/word/2003/wordml"><xsl:output method="xml" indent="yes" />
<xsl:template name="subdoc">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Word.Document"</xsl:text>
</xsl:processing-instruction>
</xsl:template>
</xsl:stylesheet>
main.xsl:
--------------
<xsl:stylesheet version="1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"> <xsl:import href="master.xsl"/>
<xsl:import href="sub.xsl"/>
<xsl:template match="/">
<xls:call-template name="masterdoc"/>
<xls:call-template name="subdoc"/>
</xsl:template>
<!-- other child elements follow -->
</xsl:stylesheet>