XSL新手:-)
我已经得到了下面的模板,它被用来为我的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>
问题是我已经得到了这个三次- cut &粘贴工作-都是一样的,但对"组件"的参考被交换为"插件"one_answers"网站"。我们还有一些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>
问题似乎是让documentet()函数接受动态变量。
我唯一能说的是XSL被声明为1.0。我不知道这是否有区别,但任何指针都很感激:)。
欢呼,詹姆斯。
要使document()
正常工作,您需要按照以下方式进行连接:
document(concat('../../../temp/',$type,'_tags.xml',''))