XSL - Есть ли способ сделать этот шаблон многоразовым? - PullRequest
2 голосов
/ 24 августа 2011

XSL noob здесь: -)

У меня есть следующий шаблон, который используется для создания раскрывающегося списка для моего сценария ANT.

    <!-- Dropdown templates -->
<xsl:template name="componentDropdown">
    <xsl:text>trunk</xsl:text>
    <!-- Branch Data -->
    <xsl:for-each select="document('../../../temp/components_branches.xml')/lists/list/entry">
        <xsl:sort select="commit/@revision" order="descending" />
        <xsl:text>;branches/</xsl:text>
        <xsl:value-of select="name" />
    </xsl:for-each>

    <!-- Tag Data -->
    <xsl:for-each select="document('../../../temp/components_tags.xml')/lists/list/entry">
        <xsl:sort select="commit/@revision" order="descending" />
        <xsl:if test="name != 'archive'">
            <xsl:text>;tags/</xsl:text>
            <xsl:value-of select="name" />
        </xsl:if>               
    </xsl:for-each>
</xsl:template>

Дело в том, что у меня это задание трижды перерезано и вставлено - все то же самое, но ссылка на «компоненты» заменяется на «плагины» и «веб-сайт».У нас есть еще несколько ANT-скриптов, которые я бы хотел перенести на это, так что в идеале мне бы хотелось, чтобы это был какой-то шаблон на основе многократного использования.

Работа в процессе, но в настоящее время у меня есть следующее: -

    <xsl:template name="dropdown">
    <xsl:param name="type">website</xsl:param>
    <xsl:param name="path"></xsl:param>

    <!-- Branch Data  -->
    <xsl:text><xsl:value-of select="$path" /></xsl:text>       
    <xsl:for-each select="document(concat('../../../temp/{$type}_tags.xml',''))/lists/list/entry">
        <xsl:sort select="commit/@revision" order="descending" />
        <xsl:text>;branches/</xsl:text>
        <xsl:value-of select="name" />
    </xsl:for-each>
</xsl:template> 

Кажется, проблема в том, что функция documnet () принимает динамические переменные.

Единственное, что я могу сказать, это то, что XSL объявлен как 1.0.Я не знаю, если это имеет значение, но любые указатели приветствуются:).

Ура, Джеймс

1 Ответ

1 голос
/ 24 августа 2011

Чтобы document() работал правильно, вам нужно объединить его следующим образом:

 document(concat('../../../temp/',$type,'_tags.xml',''))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...