Прежде всего, ваш XML все еще не правильно сформирован, и я на самом деле не могу понять, почему вы перебираете теги <date/>
- внутри <subscriber/>
есть только один тег <date/>
(при условии, что первый <subscriber/>
не должен быть самозакрытым).
При использовании XPath вы всегда должны думать о контексте, в котором вызывается XPatch. Следующее должно сделать это (когда мое предположение о вашей структуре данных верно):
<xsl:template match="subscriber">
<xsl:for-each select="date">
<!-- from here on we're in the context of the date-tag -->
<xsl:apply-templates match="../person" />
<xsl:apply-templates match="../location" />
<xsl:apply-templates match="../dog" />
</xsl:for-each>
</xsl:template>