XSLT任务中的属性扩展不起作用

时间:2016-01-04 09:38:13

标签: xml xslt ant

问题在于:

我有一个XSLT任务,假设生成一个XML文件作为输出。这是我目前得到的输出:

  

C:\用户\ rmrd001 \ GIT中\ XSLT的框架\例子\中间\ ODT夹\ T2 \ T2.1 \含量

它生成一个没有任何扩展名的文件。所以windows不提供打开的默认程序。当然,期望的结果是相同的,但包括扩展。即:

  

C:\用户\ rmrd001 \ GIT中\ XSLT的框架\例子\中间\ ODT夹\ T2 \ T2.1 \ content.xml中

这是任务定义:

<xslt in="@{file}" out="${dita-odt.path.odt-unzipped-base-dir}/${common-path}/${file-base-name}" style="${dita-odt.path.text-odt-xsl}" extension="xml" force="true">
                            <param name="dir-path-styles-xml" expression="${dita-odt.path.odt-unzipped-base-dir}/${common-path}"/>
                            <!--The following parameter is designated for reference nodes that require absolute path. For example draw:image/@href. This is to achieve system portability as well.-->
                            <param name="project-base-dir-absolute-path" expression="${base-dir-unix}"/>
                            <classpath location="${infrastructure-base-dir}/${dita-odt.text-odt-xsl.processor}"/>
                        </xslt>

我知道这不是完整的脚本,但除了输出文档缺少扩展名外,一切正常。 XSL 任务中没有mapper嵌套。我还可以通过将.xml添加到out属性中指定的路径(例如此out="${dita-odt.path.odt-unzipped-base-dir}/${common-path}/${file-base-name}.xml")来解决此问题。无论如何,为什么它不起作用?

2 个答案:

答案 0 :(得分:1)

对于extension,如果符合以下任一项,则会忽略out属性:

  • 设置了<mapper>属性
  • <xslt>嵌套在<xslt>

out输出具有特定扩展名的文件:

  • 提供<mapper>
  • 的扩展程序
  • 或添加附加扩展程序的array[0]

答案 1 :(得分:0)

您需要指定完整路径。如果$ {file-base-name}不包含&#34; .xml&#34;最后,你必须指定它。看它的定义会有所帮助。

XSLT的默认输出不是XML,因为XSLT可以写任何内容。