NANT:样式任务传递参数到xslt

时间:2010-10-08 13:00:30

标签: nant

我将NAnt样式任务中的参数传递给xslt表时遇到问题。 这是我的NAnt代码段。定义属性路径和文件。

<style style="${xslt.file}" extension="xml" in="${xml.file}" destdir=".">
    <parameters>
         <parameter name="path" value="${path}" 
                    namespaceuri="http://www.w3.org/1999/XSL/Transform" />
         <parameter name="doc" value="${file}" 
                    namespaceuri="http://www.w3.org/1999/XSL/Transform" />
    </parameters>
</style>

我的参数声明如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:ms="http://schemas.microsoft.com/developer/msbuild/2003">

<xsl:param name="path"></xsl:param>
<xsl:param name="file" />

访问:

<xsl:value-of select="$path" />
<xsl:value-of select="$file" />

但是当文件被转换时,$ path和$ file都是空的。我尝试过使用和不使用样式任务的namespaceuri。
我做错了什么?

在期待中感谢你。

2 个答案:

答案 0 :(得分:0)

嗯,你为什么要设置$ file并使用$ doc?

BTW,这是一个有效的例子:

<style style="web.config.xsl" in="web.config.xsl" out="web.config">
 <parameters>
  <parameter name="OSVersion" value="${OSVersion}"/>
 </parameters>
</style>

和XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:param name="OSVersion"/>
 <xsl:template match="/">
  <xsl:value-of select="$OSVersion"/>
 </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

我刚刚遇到了丹尼斯在第一个答案评论中描述的现象。似乎NAnt只有在更改后才会再次执行XSLT,并且没有注意到您已更改<style>元素的参数。因此,一旦将<parameter>元素添加到NAnt文件,运行NAnt将不会导致XSLT使用新参数值运行,除非您自己更改了XSLT文件。