NANT:将参数传递给 xslt 的样式任务

发布于 2024-09-26 19:52:46 字数 1035 浏览 6 评论 0原文

我在将参数从 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。
我做错了什么?

在期待中感谢您。

I have a problem with passing arguments from the NAnt style task to a xslt sheet.
This is my NAnt code snippet. The properties path and file are definetly set.

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

My Parameter are declared as following:

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

And accessed by:

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

But when the file is transformed, $path and $file are both empty. I have tried with and without the namespaceuri of the style task.
What I am doing wrong?

Thanking you in anticipation.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

澉约 2024-10-03 19:52:46

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

顺便说一句,这是一个工作示例:

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

Hmmm, why do you set $file and use $doc ?

BTW, here is a working example:

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

and the 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>
小红帽 2024-10-03 19:52:46

我刚刚遇到丹尼斯在他对第一个答案的评论中描述的现象。看来 NAnt 仅在 XSLT 发生更改时才再次执行该 XSLT,并且没有注意到您已更改

I just encountered the phenomenon Dennis described in his comment on the first answer. It seems that NAnt only executes the XSLT again if it has changed and doesn't notice that you have changed the parameters for the <style> element. Hence, once you have added your <parameter> elements to your NAnt file, running NAnt will not cause the XSLT to run with the new parameter values unless you have changed the XSLT file itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文