Я делаю сценарий xslt, который импортирует два других сценария xslt. Два импортированных xslt-скрипта содержат несколько шаблонов с одинаковыми именами. Я использую xslt 2.0
У меня есть выбор и на основе кода страны либо вызывается сценарий d96a.xslt, либо сценарий d01b.xslt. Но мне нужно обработать все это одним скриптом.
Я пытался добавить use-when для каждого, но не могу заставить его работать.
У меня есть d96a.xslt с этим шаблоном :
<xsl:template name="BGM">
<xsl:param name="C002_1001"/>
<xsl:value-of select="$C002_1001"/>
</xsl:template>
и d01b.xslt с этим шаблоном:
<xsl:template name="BGM">
<xsl:param name="C002_1001"/>
<xsl:value-of select="$C002_1001"/>
</xsl:template>
А затем у меня есть другой xslt, который использует оба других файла:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="d01b.xslt"/>
<xsl:import href="d96A.xslt"/>
<xsl:template match="/">
<xsl:call-template name="BGM">
<xsl:with-param name="BGM_C002_1001" select="'380'"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
И теперь это терпит неудачу, потому что BGM существует в обоих импортированных сценариях xslt.
Я пытался использовать когда это, но не мог заставить его работать:
<xsl:import href="d01b.xslt" use-when="Party/CountryCode = 'EN'"/>
<xsl:call-template name="Header" use-when="Party[CountryCode = 'EN']">
Я делаю что-то не так или есть другой способ справиться с этим? Я не могу изменить имя шаблонов в импортированных файлах.