2016-01-04 35 views
0

這裏是問題:XSLT任務中的屬性擴展不起作用

我有一個XSLT任務,它假設產生一個XML文件作爲輸出。這是我目前得到的輸出:

C:\用戶\ rmrd001 \ git的\ XSLT的框架\例子\中間\ ODT文件夾\ T2 \ T2.1 \內容

它生成沒有任何擴展名的文件。所以窗戶不提供默認程序來打開。當然,期望的結果是相同的,但包含擴展名。即:

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> 

我知道這不是完整的腳本,但一切工作正常,除了缺少輸出文檔的擴展名。沒有mapper嵌套到XSL任務中。我也可以通過將.xml添加到out屬性中指定的路徑來解決此問題,如out="${dita-odt.path.odt-unzipped-base-dir}/${common-path}/${file-base-name}.xml"。無論如何,爲什麼它不工作?

回答

0

您需要指定完整路徑。如果$ {file-base-name}最後不包含「.xml」,則必須指定它。這將有助於看到它的定義。

XSLT的默認輸出不是XML,因爲XSLT可以編寫任何內容。

  • out屬性設置
  • <mapper><xslt>

下嵌套有<xslt>輸出與一個文件:

+0

在我需要'content'有其他擴展名,例如的.odt其他目標。這就是爲什麼我已經排除了它的擴展,所以我可以稍後添加所需的一個取決於目標的目的。此外,xslt任務不應該關心什麼是輸出文件的擴展,這是爲什麼'extension'屬性被指定的原因? – Hairi

+0

https://ant.apache.org/manual/Tasks/style.html擴展的默認值是用前導點指定的,「.xml」是否工作?它還說「如果指定了嵌套的,將會被忽略。」 – fafl

+0

嘗試使用「.xml」也不起作用。正如你可以從我的帖子看到的,沒有嵌套元素。 – Hairi

1

對於<xslt>,如果任一extension屬性將被忽略某些延伸:

  • 提供擴展out
  • 或添加<mapper>是追加擴展
+1

實際上都必須設置'out'和'in'。該手冊剛剛被修復,下一版本的Ant會說:如果指定了一個嵌套的''或同時指定'in'和'out',將被忽略。 –