2010-10-08 75 views
1

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

<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" /> 

但是,当文件被转换,$路径和$文件都是空的。我尝试过和没有样式任务的namespaceuri。
我做错了什么?

感谢您的期待。

+0

does not'xsltproc eiter – Dennis 2010-10-11 11:26:15

回答

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> 
+0

我试了一次,只是对我的代码做了小的修改。我初始化'路径',它的工作原理。不知道为什么,但你是唯一一个已经回答我的问题的人,你会得到公认的标记:-) – Dennis 2010-10-29 07:21:32

0

我正好遇到丹尼斯在他的评论中描述的第一个答案的现象。看起来NAnt只是在XSLT更改后才会再次执行,并且不会注意到您已更改<style>元素的参数。因此,一旦将您的<parameter>元素添加到您的NAnt文件中,运行NAnt将不会使XSLT以新参数值运行,除非您已更改XSLT文件本身。