Импорт сценариев XSLT, содержащих шаблоны с одинаковыми именами - PullRequest
0 голосов
/ 23 марта 2020

Я делаю сценарий 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']">

Я делаю что-то не так или есть другой способ справиться с этим? Я не могу изменить имя шаблонов в импортированных файлах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...