NANT: стиль, передающий параметр задачи в xslt - PullRequest
1 голос
/ 08 октября 2010

У меня проблема с передачей аргументов из задачи стиля 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 голосов
/ 04 июня 2012

Я только что столкнулся с явлением, которое Деннис описал в своем комментарии к первому ответу. Кажется, что NAnt снова выполняет XSLT, только если он изменился, и не замечает, что вы изменили параметры для элемента <style>. Следовательно, после добавления элементов <parameter> в файл NAnt запуск NAnt не приведет к запуску XSLT с новыми значениями параметров, если вы не изменили сам файл XSLT.

0 голосов
/ 27 октября 2010

Хммм, почему вы устанавливаете $ 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>
...